/// <summary> /// 删除PR单对象 /// </summary> /// <param name="inn"></param> /// <param name="ItemId"></param> /// <param name="identityId"></param> /// <param name="names"></param> public static void DeletePrManage(Innovator inn, string ItemId, List <string> names) { Item activitys = ActivityDA.GetActivityByNames(inn, names, ItemId, "innovator.B_PRMANAGE"); if (!activitys.isError()) { string source_id = activitys.getItemByIndex(0).getProperty("id"); Item activityAssignments = ActivityAssignmentDA.GetActivityAssignment(inn, source_id); string ids = ""; if (!activityAssignments.isError() && activityAssignments.getItemCount() > 0) { for (int index = 0; index < activityAssignments.getItemCount(); index++) { var activityAssignment = activityAssignments.getItemByIndex(index); string id = activityAssignment.getProperty("id"); if (index != activityAssignments.getItemCount() - 1) { ids += id + ","; } else { ids += id; } } } if (!string.IsNullOrEmpty(ids)) { ActivityAssignmentDA.deleteActivityAssignment(inn, ids); } } }
/// <summary> /// 添加管理权限 /// </summary> /// <param name="ItemId"></param> /// <param name="identityId"></param> public static string AddPrManageAuthById(Innovator inn, string ItemId, string identityId, List <string> names) { string strError = ""; //根据任务名称获取任务 Item activitys = ActivityDA.GetActivityByNames(inn, names, ItemId, "innovator.B_PRMANAGE"); //获取当前任务已经存在的处理人 if (!activitys.isError()) { //获取任务Id string strAml = "<AML>"; for (var i = 0; i < activitys.getItemCount(); i++) { var item = activitys.getItemByIndex(i); string source_id = item.getProperty("id"); Item activityAssignments = ActivityAssignmentDA.GetActivityAssignment(inn, source_id); string ids = ""; if (!activityAssignments.isError() && activityAssignments.getItemCount() > 0) { for (int index = 0; index < activityAssignments.getItemCount(); index++) { var activityAssignment = activityAssignments.getItemByIndex(index); string id = activityAssignment.getProperty("id"); if (index != activityAssignments.getItemCount() - 1) { ids += id + ","; } else { ids += id; } } } if (!string.IsNullOrEmpty(ids)) { ActivityAssignmentDA.deleteActivityAssignment(inn, ids); } strAml += "<Item type = 'ACTIVITY ASSIGNMENT' action = 'add'>"; strAml += "<source_id>" + source_id + "</source_id><related_id>"; strAml += "<Item type='IDENTITY' action='get' id='" + identityId + "'>"; strAml += "</Item></related_id></Item>"; } strAml += "</AML>"; var result = inn.applyAML(strAml); if (result.isError()) { strError = result.getErrorString(); } } else { strError = activitys.getErrorString(); return(strError); } return(strError); }
/// <summary> /// 根据活动名称选择附件 /// </summary> /// <param name="activityName"></param> /// <param name="b_TotalExpense"></param> /// <param name="b_IsBudgetary"></param> /// <param name="b_Type"></param> /// <returns></returns> public static string GetLineNameByActivityName(Innovator inn, string activityId, string activityName, decimal b_TotalExpense, bool b_IsBudgetary, string DeptLeader) { string lineName = "agree"; //部门总监审批 if (activityName == "Dept.Director" || activityName == "Project Director") { //获取当前活动的的审核操作 int auditPersonCount = 0; Item activityItem = ActivityAssignmentDA.GetActivityAssignment(inn, activityId); if (!activityItem.isError() && activityItem.getItemCount() > 0) { auditPersonCount = activityItem.getItemCount(); } //总金额大于5千 或者 在预算外 if (b_TotalExpense > 5000 || b_IsBudgetary == false || auditPersonCount == 0) { lineName = "lineA"; } //预算内 并且 总金额小于等于5千 else if (b_IsBudgetary && b_TotalExpense <= 5000) { lineName = "lineB"; } } //部门VP审批 if (activityName == "Division VP" || activityName == "Project VP") { //预算外 或者 总金额大于1万 if (b_IsBudgetary == false || b_TotalExpense > 10000) { lineName = "lineA"; } //预算内 并且 总金额小于1万 else if (b_IsBudgetary && b_TotalExpense <= 10000) { lineName = "lineB"; } } return(lineName); }
/// <summary> /// 删除Activity的审核权限不包含admin /// </summary> /// <param name="inn"></param> /// <param name="ItemId"></param> public static void DeleteActivityAuthById(Innovator inn, string ItemId, string tableName, List <string> names) { //根据任务名称获取任务 Item activitys = ActivityDA.GetActivityByNames(inn, names, ItemId, tableName); //获取当前任务已经存在的处理人 if (!activitys.isError()) { for (var i = 0; i < activitys.getItemCount(); i++) { var item = activitys.getItemByIndex(i); string source_id = item.getProperty("id"); Item activityAssignments = ActivityAssignmentDA.GetActivityAssignment(inn, source_id); string ids = ""; if (!activityAssignments.isError() && activityAssignments.getItemCount() > 0) { for (int index = 0; index < activityAssignments.getItemCount(); index++) { var activityAssignment = activityAssignments.getItemByIndex(index); string id = activityAssignment.getProperty("id"); if (index != activityAssignments.getItemCount() - 1) { ids += id + ","; } else { ids += id; } } } if (!string.IsNullOrEmpty(ids)) { ActivityAssignmentDA.deleteActivityAssignment(inn, ids); } } } }
/// <summary> /// 添加活动审核 /// </summary> /// <param name="inn"></param> /// <param name="ItemId">数据ID</param> /// <param name="identityId">权限ID</param> /// <param name="names">节点名称列表</param> /// <param name="tableName">主表名称</param> /// <param name="voting_weight">权重</param> public static void AddActivityAuth(Innovator inn, string ItemId, string identityId, List <string> names, string tableName, int voting_weight = 100, string activityStatus = "Pending") { //根据任务名称获取任务 Item activitys = ActivityDA.GetActivityByNames(inn, names, ItemId, tableName, activityStatus); if (!activitys.isError()) { string strAml = "<AML>"; for (var i = 0; i < activitys.getItemCount(); i++) { var item = activitys.getItemByIndex(i); string source_id = item.getProperty("id"); Item activityAssignments = ActivityAssignmentDA.GetActivityAssignment(inn, source_id); strAml += "<Item type = 'ACTIVITY ASSIGNMENT' action = 'add'>"; strAml += "<voting_weight>" + voting_weight + "</voting_weight>"; strAml += "<source_id>" + source_id + "</source_id><related_id>"; strAml += "<Item type='IDENTITY' action='get' id='" + identityId + "'>"; strAml += "</Item></related_id></Item>"; } strAml += "</AML>"; var result = inn.applyAML(strAml); } }
/// <summary> /// 保存加签 /// </summary> /// <param name="model"></param> /// <returns></returns> public JsonResult SaveWorkflowActivitySign(CompleteActivityModel model) { var retModel = new JsonReturnModel(); try { List <string> authIds = new List <string>(); List <string> oldAuthIds = new List <string>(); List <string> addAuthIds = new List <string>(); List <string> listEmail = new List <string>(); //验证输入的加签用户是否存在!并且获取IdentityId; List <string> listName = model.PersonList.Split(';').Where(x => x != "" && x != null).Select(x => x.Trim()).Distinct().ToList(); if (listName != null && listName.Count() > 0) { for (int i = 0; i < listName.Count; i++) { string textValue = listName[i]; USER user = UserDA.GetUserByFirstName(textValue); if (user == null) { retModel.AddError("errorMessage", "输入的人员在系统中不存在!"); return(Json(retModel, JsonRequestBehavior.AllowGet)); } else { listEmail.Add(user.EMAIL); Item identity = IdentityDA.GetIdentityByKeyedName(inn, textValue); if (!identity.isError() && identity.getItemCount() > 0) { string identityId = identity.getProperty("id"); authIds.Add(identityId); } } } } //获取当前活动的名称 Item activity = ActivityDA.GetActivityById(inn, model.activityId); string keyedName = activity.getProperty("keyed_name").Trim(); List <string> activityNames = new List <string> { keyedName }; //获取现有的审核权限 Item activityAssignments = ActivityAssignmentDA.GetActivityAssignment(inn, model.activityId); if (!activityAssignments.isError() && activityAssignments.getItemCount() > 0) { for (int i = 0; i < activityAssignments.getItemCount(); i++) { Item activityAssignmentItem = activityAssignments.getItemByIndex(i); string id = activityAssignmentItem.getProperty("id"); string related_id = activityAssignmentItem.getProperty("related_id"); oldAuthIds.Add(related_id); //删除现有审核权限 ActivityAssignmentDA.deleteActivityAssignment(inn, id); } } //添加该活动的审核权限 addAuthIds.AddRange(authIds); addAuthIds.AddRange(oldAuthIds); addAuthIds = addAuthIds.Distinct().ToList(); if (addAuthIds.Count > 0) { int voting_weight = Common.CalculationWeight(addAuthIds.Count); foreach (var id in addAuthIds) { ActivityBll.AddActivityAuth(inn, model.itemId, id, activityNames, model.operateTable, voting_weight, "Active"); } } //加签成功发送邮件 string nameStr = ""; listEmail = listEmail.Distinct().ToList(); if (listName != null && listName.Count > 0) { for (int i = 0; i < listName.Count; i++) { if (i != listName.Count - 1) { nameStr += listName[i] + "、"; } else { nameStr += listName[i]; } } } WorkFlowBll.WorkflowActivitySignSendEmail(Userinfo.UserName, nameStr, model.recordNo, model.linkStr, listEmail); } catch (Exception ex) { retModel.AddError("errorMessage", ex.Message); } return(Json(retModel, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 完成任务 /// </summary> /// <param name="model"></param> /// <returns></returns> public JsonResult CompleteActivity(CompleteActivityModel model) { var retModel = new JsonReturnModel(); try { WORKFLOW_PROCESS_PATH path = new WORKFLOW_PROCESS_PATH(); Item itemPrManage = inn.newItem("B_PRMANAGE", "get"); itemPrManage.setAttribute("id", model.itemId); itemPrManage = itemPrManage.apply(); string prRecordNo = itemPrManage.getProperty("b_prrecordno"); string b_BusinessDepartment = itemPrManage.getProperty("b_businessdepartment"); string b_Applicant = itemPrManage.getProperty("b_applicant"); if (string.IsNullOrEmpty(model.comments)) { retModel.AddError("errorMessage", @OABordrinCommon.Common.GetLanguageValueByParam("退回必须填写备注!", "ERCommon", "ERItemType", ViewBag.language)); return(Json(retModel, JsonRequestBehavior.AllowGet)); } //获取当前退回人员权重 var ActivityAssignmentItem = ActivityAssignmentDA.GetActivityAssignmentById(inn, model.activityAssignmentId); if (!ActivityAssignmentItem.isError() && ActivityAssignmentItem.getItemCount() > 0) { int voting_weight = int.Parse(ActivityAssignmentItem.getItemByIndex(0).getProperty("voting_weight")); //修改权重 if (voting_weight < 100) { //获取Admin的Aras 连接 var adminInn = WorkFlowBll.GetAdminInnovator(); if (adminInn != null) { //获取Admin 对当前任务权限数据 Item activityItem = ActivityDA.GetActivityByItemId(adminInn, model.itemId, "Administrators", "B_PrManage"); if (!activityItem.isError()) { string activityId = activityItem.getProperty("activityid"); string activityAssignmentId = activityItem.getProperty("activityassignmentid"); ActivityDA.CompleteActivity(adminInn, activityId, activityAssignmentId, model.pathId, "", "", Userinfo.UserName + "对单据进行了退回操作! 备注:" + model.comments); } } } else { string result = ActivityDA.CompleteActivity(inn, model.activityId, model.activityAssignmentId, model.pathId, "", "", model.comments); if (!string.IsNullOrEmpty(result)) { retModel.AddError("errorMessage", result); return(Json(retModel, JsonRequestBehavior.AllowGet)); } } } path = WorkflowProcessPathDA.GetWorkflowProcessPathById(model.pathId); PrManageBll.SendEmailByOperation(inn, prRecordNo, b_Applicant, "", path, model.itemId); string b_remark = PrManageBll.AddRemark(inn, model.comments, model.itemId, Userinfo.UserName); var itemRoot = inn.newItem("B_PRMANAGE", "edit"); itemRoot.setAttribute("id", model.itemId); itemRoot.setProperty("b_remark", b_remark); itemRoot = itemRoot.apply(); } catch (Exception ex) { retModel.AddError("errorMessage", ex.Message); } return(Json(retModel, JsonRequestBehavior.AllowGet)); }