/// <summary> /// 获取第一个按钮的参数 /// </summary> /// <param name="taskExecID"></param> /// <param name="formInstanceID"></param> /// <returns></returns> private RoutingParams GetFirstButtonRoutingParams(string id, string formInstanceID, string taskExecID) { if (routingList.ContainsKey(id)) { return(routingList[id]); } else { List <ButtonInfo> lists = flowService.JsonGetFlowButtons(formInstanceID, taskExecID); if (lists.Count > 0) { var click = lists.First().onclick; System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"(?<={).*?(?=})"); System.Text.RegularExpressions.MatchCollection mc = reg.Matches(click); foreach (System.Text.RegularExpressions.Match m in mc) { click = "{" + m.Value + "}"; } JavaScriptSerializer json = new JavaScriptSerializer(); RoutingParams routingParam = json.Deserialize <RoutingParams>(click); routingList.Add(id, routingParam); return(routingParam); } else { return(null); } } }
/// <summary> /// 批量审批详细 /// </summary> /// <param name="taskExecID"></param> /// <param name="formInstanceID"></param> /// <returns></returns> public string DetailRouting() { List <string> texts = new List <string>(); string str = ""; string selectJson = Request["data"]; JavaScriptSerializer json = new JavaScriptSerializer(); List <FlowTask> list = json.Deserialize <List <FlowTask> >(selectJson); foreach (var item in list) { RoutingParams routing = GetFirstButtonRoutingParams(item.ID, item.FormInstanceID, item.TaskExecID); texts.Add(item.TaskName + "-路由(" + routing.routingName + ")"); } if (texts.Count > 0) { for (var i = 0; i < texts.Count; i++) { str += "<div style='text-align:left'>" + texts[i] + "</div>"; } str = "<div class='scrollbar' style='max-height:200px; overflow-y:auto;'>" + str + "</div>"; } return(str); }
/// <summary> /// 批量审批 /// </summary> /// <param name="taskExecID"></param> /// <param name="formInstanceID"></param> /// <returns></returns> public int BatchApproval() { int success = 0; Dictionary <string, string> dic = null; string selectJson = Request["data"]; JavaScriptSerializer json = new JavaScriptSerializer(); List <FlowTask> list = json.Deserialize <List <FlowTask> >(selectJson); foreach (var item in list) { try { RoutingParams routing = GetFirstButtonRoutingParams(item.ID, item.FormInstanceID, item.TaskExecID); DataTable table = GetModelDT(item.FormInstanceID, false, item.TaskExecID, item.Code); if (!(string.IsNullOrEmpty(routing.defaultComment) && routing.mustInputComment == true) && CheckBatchApproval(item.InsDefStepID, table)) { if (!string.IsNullOrEmpty(routing.orgIDFromField)) { List <string> userIDs = routing.userIDs.Split(',').ToList(); List <string> fieldIds = routing.userIDsFromField.Split(',').ToList(); for (var i = 0; i < fieldIds.Count; i++) { var ids = table.Rows[0][fieldIds[i]].ToString().Split(','); for (var j = 0; j < ids.Length; j++) { if (!userIDs.Contains(ids[j])) { userIDs.Add(ids[j]); } } } routing.userIDs = string.Join(",", userIDs.ToArray()); if (routing.userIDs.IndexOf(',') == 0) { routing.userIDs = routing.userIDs.Substring(1); } } if (!string.IsNullOrEmpty(routing.orgIDFromField) || !string.IsNullOrEmpty(routing.roleIDsFromField)) { if (routing.selectMode != "SelectOneOrg" && routing.selectMode != "SelectMultiOrg") { routing.userIDs = GetUserIDs(routing.roleIDs, routing.orgIDs, ""); } } var nextExecUserIDs = routing.userIDs.Trim().TrimEnd(',').TrimStart(','); dic = SubmitBatchApproval(item.FormInstanceID, routing.routingID, item.TaskExecID, nextExecUserIDs, "", routing.roleIDs, routing.orgIDs, routing.defaultComment, item.Code); if (dic.Keys.Count > 0) { dic.Add("DefaultComment", routing.defaultComment); var ID = dic["ID"]; var NextTaskExecID = dic["NextTaskExecID"]; var NextRoutingID = dic["NextRoutingID"]; var NextRoutingName = dic["NextRoutingName"]; var NextExecUserIDs = dic["NextExecUserIDs"]; var DefaultComment = dic["DefaultComment"]; if (!string.IsNullOrEmpty(NextRoutingID)) { SubmitBatchApproval(ID, NextRoutingID, NextTaskExecID, NextExecUserIDs, "", "", "", DefaultComment, item.Code); } } success += 1; } } catch (Exception ex) { } } return(success); }