/// <summary> /// 自动完成任务 /// </summary> /// <param name="inn"></param> /// <param name="id"></param> /// <param name="ChoicePath"></param> public void AutomaticCompletionTask(Innovator inn, string id, decimal totalAmount, bool b_IsBudgetary, string b_Type, string lineLeader, string departmentLeader, ref WORKFLOW_PROCESS_PATH ChoicePath) { //获取当前活动 Item activityItem = ActivityDA.GetActivityByItemId(inn, id, "innovator.b_ExpenseReimbursement"); if (!activityItem.isError() && activityItem.getItemCount() > 0) { string activityId = activityItem.getItemByIndex(0).getProperty("activityid"); string keyedName = activityItem.getItemByIndex(0).getProperty("keyed_name"); //获取当前任务的操作权限 bool isOperate = false; Item identitys = IdentityDA.GetIdentityByActivityId(inn, activityId); if (!identitys.isError() && identitys.getItemCount() == 1) { isOperate = true; } if (isOperate) { string lineName = GetLineNameByActivityName(inn, activityId, keyedName, totalAmount, b_IsBudgetary); WORKFLOW_PROCESS_PATH newChoicePath = WorkFlowBll.AutoCompleteActivityByParam(id, "innovator.b_ExpenseReimbursement", lineName); if (newChoicePath != null) { ChoicePath = newChoicePath; AutomaticCompletionTask(inn, id, totalAmount, b_IsBudgetary, b_Type, lineLeader, departmentLeader, ref ChoicePath); } } } }
/// <summary> /// 自动完成任务 /// </summary> /// <param name="inn"></param> /// <param name="id"></param> /// <param name="ChoicePath"></param> public void AutomaticCompletionTask(Innovator inn, string id, string b_PrType, string versionNo, ref WORKFLOW_PROCESS_PATH ChoicePath) { //获取当前活动 Item activityItem = ActivityDA.GetActivityByItemId(inn, id, "innovator.B_PRMANAGE"); if (!activityItem.isError() && activityItem.getItemCount() > 0) { string activityId = activityItem.getItemByIndex(0).getProperty("activityid"); string keyedName = activityItem.getItemByIndex(0).getProperty("keyed_name"); //获取当前任务的操作权限 bool isOperate = false; Item identitys = IdentityDA.GetIdentityByActivityId(inn, activityId); if (!identitys.isError() && identitys.getItemCount() == 1) { isOperate = true; } if (isOperate) { string lineName = GetLineNameByActivityName(inn, id, activityId, keyedName, b_PrType, versionNo); WORKFLOW_PROCESS_PATH newChoicePath = WorkFlowBll.AutoCompleteActivityByParam(id, "innovator.B_PRMANAGE", lineName); if (newChoicePath != null) { ChoicePath = newChoicePath; AutomaticCompletionTask(inn, id, b_PrType, versionNo, ref ChoicePath); } } } }
/// <summary> /// 自动完成任务 /// </summary> public static void AutomaticCompletionTask(Innovator inn, string id, UserInfo userInfo, ref WORKFLOW_PROCESS_PATH ChoicePath) { Item activityItem = ActivityDA.GetActivityByItemId(inn, id, "innovator.B_PRMANAGE"); if (!activityItem.isError() && activityItem.getItemCount() > 0) { string activityId = activityItem.getItemByIndex(0).getProperty("activityid"); string keyedName = activityItem.getItemByIndex(0).getProperty("keyed_name"); //获取当前任务的操作权限 bool isOperate = false; Item identitys = IdentityDA.GetIdentityByActivityId(inn, activityId); if (!identitys.isError() && identitys.getItemCount() > 0) { for (int i = 0; i < identitys.getItemCount(); i++) { string dentityId = identitys.getItemByIndex(i).getProperty("id"); if (userInfo.Roles.Contains(dentityId)) { isOperate = true; } } } if ((keyedName == "Dept.Director" || keyedName == "Dept.VP" || keyedName == "GM" || keyedName == "PMT/PAT Leader" || keyedName == "Project Manager" || keyedName == "Project Director") && isOperate) { WORKFLOW_PROCESS_PATH newChoicePath = WorkFlowBll.AutoCompleteActivityByParam(id, "innovator.B_PRMANAGE"); if (newChoicePath != null) { ChoicePath = newChoicePath; AutomaticCompletionTask(inn, id, userInfo, ref ChoicePath); } } } }
/// <summary> /// 自动完成 /// </summary> public static WORKFLOW_PROCESS_PATH AutoCompleteActivityByParam(string id, string tableName, string lineName = "agree") { string url = ConfigurationManager.AppSettings["ArasUrl"]; string dbName = ConfigurationManager.AppSettings["ArasDB"]; string accountName = ConfigurationManager.AppSettings["Administrator"]; string password = ConfigurationManager.AppSettings["ArasPassword"]; //使用管理员帐号登陆 HttpServerConnection conn = IomFactory.CreateHttpServerConnection(url, dbName, accountName, password); Item login_result = conn.Login(); if (!login_result.isError()) { var inn = login_result.getInnovator(); Item activityItem = ActivityDA.GetActivityByItemId(inn, id, "Administrators", tableName); if (!activityItem.isError()) { string activityId = activityItem.getProperty("activityid"); string activityAssignmentId = activityItem.getProperty("activityassignmentid"); //任务路线 var listActivity = WorkflowProcessPathDA.GetWorkflowProcessPathByActivityId(activityId); WORKFLOW_PROCESS_PATH choicePath = listActivity.Where(x => x.NAME == lineName).FirstOrDefault(); //替换符 ReplaceChars(choicePath); string errorStr = ActivityDA.CompleteActivity(inn, activityId, activityAssignmentId, choicePath.ID, choicePath.NAME, "", "AutoComplete"); if (string.IsNullOrEmpty(errorStr)) { return(choicePath); } } } return(null); }
/// <summary> /// 查询数据 /// </summary> /// <param name="para"></param> /// <param name="searchValue"></param> /// <param name="status"></param> /// <returns></returns> public JsonResult GetSearchTripReimbursementList(DataTableParameter para, DateTime?startTime, DateTime?endTime, string searchValue, string status) { int total = 0; var dataList = GetSearchTripReimbursementList(Userinfo.inn, Userinfo.Roles, out total, para, startTime, endTime, searchValue, status, Userinfo.UserName); //获取人员当前角色信息 // List<string> listRoleName = IdentityDA.GetIdentityByUserName(Userinfo.UserName); if (dataList != null) { foreach (var item in dataList) { //item.status = Common.GetItemStatus(item.id); if (!string.IsNullOrEmpty(item.status) && item.status != null && item.status != "End") { var result = ActivityDA.GetActivityByItemId(inn, item.id, "innovator.B_TRIPREIMBURSEMENTFORM"); if (!result.isError()) { item.activityId = result.getItemByIndex(0).getProperty("activityid"); item.AuditorStr = ActivityDA.GetActivityOperator(inn, item.activityId, false); item.AuditorStr = "<div style='width:150px;word-wrap:break-word;'>" + item.AuditorStr + "</div>"; } } else { item.status = "End"; } string strHtml = "<div class='row'><div class='col-md-6'>{0}</div><div class='col-md-6' style='text-align:right'>{1}</div></div>"; string linkAList = "<a class='glyphicon glyphicon-eye-open detail' title='详情' id='" + item.id + "' ></a>"; linkAList += " <a class='glyphicon glyphicon-list-alt history' title='日志' id='" + item.id + "' ></a>"; linkAList += " <a class='glyphicon glyphicon-asterisk workflow' title='流程' id='" + item.id + "' ItemStatus='" + item.status + "' ></a>"; if (item.status == "Expense Accountant Check" || item.status == "Financial Director" || item.status == "Expense Accountant Creation" || item.status == "End") { linkAList += " <a class='glyphicon glyphicon-print Print' title='打印' id='" + item.id + "' activityId= '" + item.activityId + "'></a>"; } if (Userinfo.UserName == "Innovator Admin" && item.status == "Expense Accountant Check") { linkAList += " " + "<a class='glyphicon glyphicon-envelope SendEmail' title='重发提醒报销凭证' Id='" + item.id + "' ></a>"; } strHtml = string.Format(strHtml, item.b_RecordNo, linkAList); item.b_RecordNo = strHtml; item.b_ApplicationDate = item.nb_ApplicationDate.GetValueOrDefault().ToString("yyyy-MM-dd"); item.status = Common.GetChineseValueByParam(item.status, "TRManageWorkFlow", "WorkFlow", Userinfo.language); } } return(Json(new { sEcho = para.sEcho, iTotalRecords = total, iTotalDisplayRecords = total, aaData = dataList }, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 挂起自动完成审核 /// </summary> /// <param name="inn"></param> /// <param name="id">数据ID</param> /// <param name="b_HangUpActivityName">挂起所在的流程节点</param> /// <param name="b_TotalAmount">总费用</param> /// <param name="b_IsBudgetary">是否在预算内</param> /// <param name="b_Type">项目类型</param> /// <param name="choicePath">选择的路线</param> public static void HangUpAutoAudit(Innovator inn, string id, string b_HangUpActivityName, decimal b_TotalAmount, bool b_IsBudgetary, string b_Type, string departmentLeader, ref WORKFLOW_PROCESS_PATH choicePath) { //获取当前活动 Item activityItem = ActivityDA.GetActivityByItemId(inn, id, "innovator.b_ExpenseReimbursement"); //获取当前活动的流程名称 string activityId = activityItem.getItemByIndex(0).getProperty("activityid"); string keyedName = activityItem.getItemByIndex(0).getProperty("keyed_name"); //当前流程节点的名称,不等于挂机的流程名称时,执行自动完成! if (b_HangUpActivityName != keyedName) { string lineName = GetLineNameByActivityName(inn, activityId, keyedName, b_TotalAmount, b_IsBudgetary); choicePath = WorkFlowBll.AutoCompleteActivityByParam(id, "innovator.b_ExpenseReimbursement", lineName); HangUpAutoAudit(inn, id, b_HangUpActivityName, b_TotalAmount, b_IsBudgetary, b_Type, departmentLeader, ref choicePath); } }
/// <summary> /// 挂起自动完成审核 /// </summary> /// <param name="inn"></param> /// <param name="id"></param> /// <param name="b_HangUpActivityName"></param> /// <param name="b_TripType"></param> /// <param name="b_Type"></param> /// <param name="b_Director"></param> /// <param name="choicePath"></param> public static void HangUpAutoAudit(Innovator inn, string id, string b_HangUpActivityName, ref WORKFLOW_PROCESS_PATH choicePath) { //获取当前活动 Item activityItem = ActivityDA.GetActivityByItemId(inn, id, "innovator.b_BusinessTravel"); //获取当前活动的流程名称 string activityId = activityItem.getItemByIndex(0).getProperty("activityid"); string keyedName = activityItem.getItemByIndex(0).getProperty("keyed_name"); //当前流程节点的名称,不等于挂机的流程名称时,执行自动完成! if (b_HangUpActivityName != keyedName) { string lineName = GetLineNameByActivityName(inn, keyedName); choicePath = WorkFlowBll.AutoCompleteActivityByParam(id, "innovator.b_BusinessTravel", lineName); HangUpAutoAudit(inn, id, b_HangUpActivityName, ref choicePath); } }
public JsonResult GetSearchBusinessTravelList(DataTableParameter para, string searchValue, DateTime?startTime, DateTime?endTime, string status) { int total = 0; var dataList = GetSearchBusinessTravelList(Userinfo.inn, Userinfo.Roles, out total, para, searchValue, startTime, endTime, status, Userinfo.UserName); if (dataList != null) { foreach (var item in dataList) { if (!string.IsNullOrEmpty(item.status) && item.status != null && item.status != "End") { var result = ActivityDA.GetActivityByItemId(inn, item.Id, "innovator.B_BUSINESSTRAVEL"); if (!result.isError()) { item.activityId = result.getItemByIndex(0).getProperty("activityid"); item.AuditorStr = ActivityDA.GetActivityOperator(inn, item.activityId, false); item.AuditorStr = "<div style='width:150px;word-wrap:break-word;'>" + item.AuditorStr + "</div>"; } } else { item.status = "End"; } string strHtml = "<div class='row'><div class='col-md-6'>{0}</div><div class='col-md-6' style='text-align:right'>{1}</div></div>"; string linkAList = "<a class='glyphicon glyphicon-eye-open detail' title='详情' id='" + item.Id + "' ></a>"; linkAList += " <a class='glyphicon glyphicon-list-alt history' title='日志' id='" + item.Id + "' ></a>"; linkAList += " <a class='glyphicon glyphicon-asterisk workflow' title='流程' id='" + item.Id + "' ItemStatus='" + item.status + "' ></a>"; if (item.status == "Administrative approval" || item.status == "End") { linkAList += " <a class='glyphicon glyphicon-print Print' title='打印' id='" + item.Id + "'></a>"; } strHtml = string.Format(strHtml, item.b_DocumentNo, linkAList); item.b_ProjectName = "<div style='width:100px;word-wrap:break-word;'>" + item.b_ProjectName + "</div>"; item.b_DocumentNo = strHtml; item.b_ApplicationDate = item.nb_ApplicationDate.GetValueOrDefault().ToString("yyyy-MM-dd"); item.status = Common.GetChineseValueByParam(item.status, "BTManageWorkFlow", "WorkFlow", Userinfo.language); } } return(Json(new { sEcho = para.sEcho, iTotalRecords = total, iTotalDisplayRecords = total, aaData = dataList }, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 查询数据 /// </summary> /// <param name="para"></param> /// <param name="searchValue"></param> /// <returns></returns> public JsonResult GetSearchPrManageList(DataTableParameter para, string searchValue, DateTime?startTime, DateTime?endTime, string status) { int total = 0; var dataList = GetSearchPrManageList(inn, Userinfo.Roles, out total, para, searchValue, startTime, endTime, status); //获取当前人员角色信息 List <string> listRoleName = IdentityDA.GetIdentityByUserName(Userinfo.UserName); if (dataList != null) { foreach (var item in dataList) { item.status = Common.GetItemStatus(item.id); item.b_RaisedDate = item.nb_RaisedDate.ToString("yyyy-MM-dd"); if (item.status != "End") { var result = ActivityDA.GetActivityByItemId(inn, item.id, "innovator.B_PRMANAGE"); if (!result.isError()) { item.activityId = result.getItemByIndex(0).getProperty("activityid"); item.AuditorStr = ActivityDA.GetActivityOperator(inn, item.activityId); item.AuditorStr = "<div style='width:180px;word-wrap:break-word;'>" + item.AuditorStr + "</div>"; } } string strHtml = "<div class='row'><div class='col-md-6'>{0}</div><div class='col-md-6' style='text-align:right'>{1}</div></div>"; string linkAList = "<a class='glyphicon glyphicon-eye-open detail' title='详情' id='" + item.id + "' ></a>"; linkAList += " <a class='glyphicon glyphicon-list-alt history' title='日志' id='" + item.id + "' ></a>"; linkAList += " <a class='glyphicon glyphicon-asterisk workflow' title='流程' id='" + item.id + "' ItemStatus='" + item.status + "' b_VersionNo='" + item.b_VersionNo + "'></a>"; if (item.b_Buyer == Userinfo.UserName || listRoleName.Contains("采购员") || listRoleName.Contains("PRReader") || listRoleName.Contains("采购部接收PR") || listRoleName.Contains("财务分析员") || listRoleName.Contains("财务经理") || listRoleName.Contains("财务总监") || listRoleName.Contains("CFO") || Userinfo.LoginName == "admin" || item.b_Applicant == Userinfo.UserName) { linkAList += " <a class='glyphicon glyphicon-print Print' title='打印' id='" + item.id + "'></a>"; } strHtml = string.Format(strHtml, item.b_PrRecordNo, linkAList); item.b_PrRecordNo = strHtml; item.status = Common.GetChineseValueByParam(item.status, "PrManageWorkFlow", "WorkFlow", Userinfo.language); } } return(Json(new { sEcho = para.sEcho, iTotalRecords = total, iTotalDisplayRecords = total, aaData = dataList }, 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)); }