private SPListItemCollection FilterChangeHistory(string orderNumber, string department, bool isCompleted) { string status = null; var qOrderNumber = new QueryField("Order_x0020_Number", false); var qStatus = new QueryField("Status", false); var qDepartment = new QueryField("Department", false); CamlExpression exp = null; exp = WorkFlowUtil.LinkAnd(exp, qOrderNumber.Equal(orderNumber)); if (department.IsNotNullOrWhitespace()) { exp = WorkFlowUtil.LinkAnd(exp, qDepartment.Equal(department)); } if (isCompleted) { status = CAWorkflowStatus.Completed; exp = WorkFlowUtil.LinkAnd(exp, qStatus.Equal(status)); } else { //the status should not be "pending", "notstart", "financemanagerreject", "cforeject". status = CAWorkflowStatus.Pending; exp = WorkFlowUtil.LinkAnd(exp, qStatus.NotEqual(status)); status = CAWorkflowStatus.Completed; exp = WorkFlowUtil.LinkAnd(exp, qStatus.NotEqual(status)); status = CAWorkflowStatus.IODepartmentManagerReject; exp = WorkFlowUtil.LinkAnd(exp, qStatus.NotEqual(status)); status = CAWorkflowStatus.IOCFOReject; exp = WorkFlowUtil.LinkAnd(exp, qStatus.NotEqual(status)); status = CAWorkflowStatus.IOFinanceReject; exp = WorkFlowUtil.LinkAnd(exp, qStatus.NotEqual(status)); } SPListItemCollection lc = ListQuery.Select() .From(WorkFlowUtil.GetWorkflowList("Internal Order Maintenance Workflow")) .Where(exp) .OrderBy(new QueryField("Title", false), false) .GetItems(); return lc; }
protected bool isExistRunningVendor(string vendId, string departmentVal) { var qStatus = new QueryField("Status", false); var qVendId = new QueryField("Vendor_x0020_ID", false); var qDepartmentVal = new QueryField("DepartmentVal", false); CamlExpression exp = null; exp = WorkFlowUtil.LinkAnd(exp, qVendId.Equal(vendId)); exp = WorkFlowUtil.LinkAnd(exp, qDepartmentVal.Equal(departmentVal)); //the status should not be "pending", "notstart", "financemanagerreject", "cforeject". var status = CAWorkflowStatus.Pending; exp = WorkFlowUtil.LinkAnd(exp, qStatus.NotEqual(status)); status = CAWorkflowStatus.Completed; exp = WorkFlowUtil.LinkAnd(exp, qStatus.NotEqual(status)); status = CAWorkflowStatus.NTVDepartmentHeadReject; exp = WorkFlowUtil.LinkAnd(exp, qStatus.NotEqual(status)); status = CAWorkflowStatus.NTVCFOReject; exp = WorkFlowUtil.LinkAnd(exp, qStatus.NotEqual(status)); status = CAWorkflowStatus.NTVFinanceReject; exp = WorkFlowUtil.LinkAnd(exp, qStatus.NotEqual(status)); var result = ListQuery.Select().From(WorkFlowUtil.GetWorkflowList("Non Trade Supplier Setup Maintenance Workflow")) .Where(exp) .OrderBy(new QueryField("Title", false), true) .GetItems(); return result.Count > 0; }
/// <summary> /// 删除Tasks组里的其它人 /// </summary> /// <param name="sItemId"></param> /// <param name="sGroup"></param> void DeleteTask(string sItemId,string sGroup) { CamlExpression exp = null; SPGroup spGroup = WorkFlowUtil.GetUserGroup("wf_BSS"); SPGroup spGroupMMC = WorkFlowUtil.GetUserGroup("wf_MMC"); ////(), "wf_BSS"); //// nc = GetApproverInGroup("wf_MMC") QueryField qWorkflowItemId = new QueryField("WorkflowItemId", false); QueryField qfWorkflowListId = new QueryField("WorkflowListId", false); QueryField qfStatus = new QueryField("Status", false);//Status exp = WorkFlowUtil.LinkAnd(exp, qWorkflowItemId.Equal(sItemId));///AcceleratorWorkflow 里的记录ID相等 exp = WorkFlowUtil.LinkAnd(exp, qfWorkflowListId.Equal(SPContext.Current.ListId));//ListID相等 exp = WorkFlowUtil.LinkAnd(exp, qfStatus.NotEqual("Completed"));//Completed没有完成的task QueryField qAssignedTo = new QueryField("AssignedTo", false);//task的执行人 CamlExpression ceOR = null; foreach (SPUser user in spGroup.Users) { string sLoginName = user.LoginName; if (sLoginName.Equals("SHAREPOINT\\System", StringComparison.CurrentCultureIgnoreCase) || sLoginName.Equals(CurrentEmployee.UserAccount, StringComparison.CurrentCultureIgnoreCase)) { continue; } ceOR = WorkFlowUtil.LinkOr(ceOR, qAssignedTo.Equal(sLoginName)); CommonUtil.logError(sLoginName); } foreach (SPUser user in spGroupMMC.Users) { string sLoginName = user.LoginName; if (sLoginName.Equals("SHAREPOINT\\System", StringComparison.CurrentCultureIgnoreCase) || sLoginName.Equals(CurrentEmployee.UserAccount, StringComparison.CurrentCultureIgnoreCase)) { continue; } CommonUtil.logError(sLoginName); ceOR = WorkFlowUtil.LinkOr(ceOR, qAssignedTo.Equal(sLoginName)); } exp = WorkFlowUtil.LinkAnd(exp, ceOR); SPQuery q = new SPQuery(); SPSecurity.RunWithElevatedPrivileges(delegate { using (SPSite site = new SPSite(SPContext.Current.Site.ID)) { using (SPWeb web = site.OpenWeb(SPContext.Current.Web.ID)) { SPList list = web.Lists["Tasks"]; SPQuery query = new SPQuery { Query = CamlBuilder.Where(list, exp) }; CommonUtil.logError(query.Query); SPListItemCollection splic = list.GetItems(query); web.AllowUnsafeUpdates = true; if (null != splic) { for (int i = 0; i < splic.Count; i++) { CommonUtil.logError("删除Task: " + splic[i]["AssignedTo"].ToString()+" " + splic[i]["Title"].AsString()); splic[i].Delete(); //splic[i].Delete(); } } } } }); }
private SPListItemCollection FilterColl() { lblTmpXlsUrl.Text = ""; string fApplicant = txtfApplicant.Text; string fLeaveType = ddlLeaveType.SelectedValue;//txtfLeaveType.Text; string fLeaveDays = txtfLeaveDays.Text; string fDateFrom = txtfDateFrom.Text; string fDateTo = txtfDateTo.Text; string fDepartments = ddlDepartments.SelectedValue;//txtfDepartments.Text; QueryField qApplicant = new QueryField("Applicant", false); QueryField qLeaveType = new QueryField("LeaveType", false); QueryField qLeaveDays = new QueryField("LeaveDays", false); QueryField qDateFrom = new QueryField("DateFrom", false); QueryField qDateTo = new QueryField("DateTo", false); QueryField qDepartment = new QueryField("Department", false); QueryField qStatus = new QueryField("Status", false); CamlExpression exp = null; CamlExpression exp2 = null; var alldepts = new List<string>(); foreach (SPListItem dept in SPContext.Current.Site.RootWeb.Lists["Department"].Items) { alldepts.Add(dept["Name"] + ""); } if (!string.IsNullOrEmpty(fApplicant)) { exp = LinkAnd(exp, qApplicant.Contains(fApplicant)); } if (!string.IsNullOrEmpty(fLeaveType)) { exp = LinkAnd(exp, qLeaveType.Contains(fLeaveType)); } if (!string.IsNullOrEmpty(fLeaveDays)) { exp = LinkAnd(exp, qLeaveDays.Equal(fLeaveDays)); } if (!string.IsNullOrEmpty(fDateFrom)) { exp = LinkAnd(exp, qDateTo >= fDateFrom); } if (!string.IsNullOrEmpty(fDateTo)) { exp = LinkAnd(exp, qDateFrom <= fDateTo); } if (!string.IsNullOrEmpty(hidAssoDepts.Value)) { if (!string.IsNullOrEmpty(fDepartments)) { //exp2 = qDepartment.Equal(fDepartments); if (ddlDepartments.SelectedValue.ToLower().Contains("store")) { //选中的是store,查 不包含在departments list里的员工 foreach (string dept in alldepts) { exp2 = LinkAnd(exp2, qDepartment.NotEqual(dept)); } } else { //选中的是别的部门,查 匹配该部门的员工 exp2 = qDepartment.Equal(fDepartments); } } else { string[] depts = hidAssoDepts.Value.Split(','); //foreach (string dept in depts) //{ // exp2 = LinkOr(exp2, qDepartment.Equal(dept)); //} if (hidAssoDepts.Value.ToLower().Contains("store")) { //如果权限里含有store,查满足 匹配权限 或者 不在alldepts中的 foreach (string dept in depts) { exp2 = LinkOr(exp2, qDepartment.Equal(dept)); } CamlExpression exp3 = null; foreach (string dept in alldepts) { exp3 = LinkAnd(exp3, qDepartment.NotEqual(dept)); } exp2 = LinkOr(exp2, exp3); } else { //如果权限里不含store,查满足 匹配权限 的 foreach (string dept in depts) { exp2 = LinkOr(exp2, qDepartment.Equal(dept)); } } } exp = LinkAnd(exp, exp2); } if (chkIsReportToMe.Checked && !SPContext.Current.Web.CurrentUser.IsSiteAdmin) { List<string> directReports = GetDirectReportsInternal(SPContext.Current.Web.CurrentUser.Name, fDepartments); exp2 = null; if (directReports.Count > 0) { foreach (var report in directReports) { exp2 = LinkOr(exp2, qApplicant.Equal(report)); } } else { exp2 = qApplicant.Equal(""); } exp = LinkAnd(exp, exp2); } exp = LinkAnd(exp, qStatus.NotEqual("Cancelled")); exp = LinkAnd(exp, qStatus.NotEqual("Canceled")); return ListQuery.Select() .From(SPContext.Current.Site.OpenWeb("workflowcenter").Lists["LeaveRecord"]) .Where(exp) .OrderBy(new QueryField("Applicant", false), true) .OrderBy(new QueryField("DateFrom", false), true) .GetItems(); }
/** * 查询当前帐号对应的已产生PO的且为未收货状态的Item */ private SPListItemCollection GetPOItemCollection(string sPONumber,string sPRNumber) { var qIsReceived = new QueryField("IsReceived", false); QueryField qCostCenter = new QueryField("CostCenter", false); QueryField qCreated = new QueryField("Created", false); CamlExpression exp = null; exp = WorkFlowUtil.LinkAnd(exp, qIsReceived.NotEqual(true)); string sUserName = SPContext.Current.Web.CurrentUser.LoginName; if (PurchaseRequestCommon.IsInGroups(sUserName, new string[] { "wf_Store" })) { List<string> costCenters = GetOwnCostCenters(SPContext.Current.Web.CurrentUser.LoginName); if (costCenters.Count == 0) { return null; } CamlExpression ceOR = null; foreach (var costCenter in costCenters) { ceOR = WorkFlowUtil.LinkOr(ceOR, qCostCenter.Equal(costCenter)); } exp = WorkFlowUtil.LinkAnd(exp, ceOR); } else if (PurchaseRequestCommon.IsInGroups(sUserName, new string[] { "wf_HO" }))//如果是wf_HO { QueryField qAuthor = new QueryField("Author", false); exp = WorkFlowUtil.LinkAnd(exp, qAuthor.Equal(SPContext.Current.Web.CurrentUser.Name)); HFIsHO.Value = "True"; } else if (PurchaseRequestCommon.IsInGroups(sUserName, new string[] { "w_PMGR" })) { QueryField qfTitle = new QueryField("Title", false); exp = WorkFlowUtil.LinkAnd(exp, qfTitle.BeginsWith("H")); } int iPO = sPONumber.Length; int iPR = sPRNumber.Length; if (iPO > 0)//按PONumber查询 { QueryField qTitle = new QueryField("Title", false); exp = WorkFlowUtil.LinkAnd(exp, qTitle.Equal(sPONumber)); } if (iPR > 0) { QueryField qPRNO = new QueryField("PRNumber", false); exp = WorkFlowUtil.LinkAnd(exp, qPRNO.Equal(sPRNumber)); } if (iPO > 0 || iPR > 0) { QueryField qTitle = new QueryField("Title", false); CamlExpression ce = null; ce = WorkFlowUtil.LinkAnd(ce,qIsReceived.NotEqual(true)); ce = WorkFlowUtil.LinkAnd(ce, qTitle.Contains("R")); exp = WorkFlowUtil.LinkOr(ce, exp); } SPListItemCollection lc = ListQuery.Select() .From(SPContext.Current.Web.Lists["PurchaseOrderItems"]) .Where(exp) .GetItems(); return lc; }