/// <summary> /// 实体类转视图类 /// </summary> /// <param name="model">标准流程实体类</param> /// <returns>视图类</returns> private ModelView.ApoActView Model2View(Model.TableModel.Apo_item model) { ModelView.ApoActView view = new ModelView.ApoActView(); view.id = model.id; view.status_name = model.status_name; view.status_no = model.status_no; view.act_no = string.Empty; view.apo_no = model.apo_no; view.apo_item_no = model.apo_item_no; view.apo_item_name = model.apo_item_name; view.apo_index = model.apo_index.ToString(); view.next_item_no = model.next_item_no; view.next_item_name = string.Empty; view.next_user_name = string.Empty; view.act_desc = string.Empty; view.act_result = string.Empty; view.act_step = string.Empty; view.act_user_no = string.Empty; view.act_user_name = string.Empty; view.act_time = string.Empty; view.ralate_no = string.Empty; view.ralate_file_name = string.Empty; view.ralate_file_extension = string.Empty; view.ralate_type_no = string.Empty; view.step_finished = string.Empty; view.apo_finished = string.Empty; view.dept_no = string.Empty; view.dept_name = string.Empty; return(view); }
/// <summary> /// 实体类转视图类 /// </summary> /// <param name="model">实体类</param> /// <returns>视图类</returns> private ModelView.ApoActView Model2View(Model.TableModel.Apo_act model) { ModelView.ApoActView view = new ModelView.ApoActView(); view.id = model.id; view.status_name = model.status_name; view.status_no = model.status_no; view.act_no = model.act_no; view.apo_no = model.apo_no; view.apo_item_no = model.apo_item_no; view.apo_item_name = model.apo_item_name; view.apo_index = model.apo_index.ToString(); view.next_item_no = model.next_item_no; view.next_item_name = model.next_item_name; view.next_user_name = model.next_user_name; view.act_desc = model.act_desc; view.act_result = model.act_result?"通过":"驳回"; view.act_step = model.act_step.ToString(); view.act_user_no = model.act_user_no; view.act_user_name = model.act_user_name; view.act_time = model.act_time.ToString("yyyy-MM-dd HH:mm:ss.fff"); view.ralate_no = model.ralate_no; view.ralate_file_name = model.ralate_file_name; view.ralate_file_extension = model.ralate_file_extension; view.ralate_type_no = model.ralate_type_no; view.step_finished = model.step_finished ? "是" : "否"; view.apo_finished = model.apo_finished ? "是" : "否"; Ctrl.GlobalDataCtrl gdc = new GlobalDataCtrl(); view.dept_no = gdc.GetStrByField("dept_no", "sys_user", "user_no", view.act_user_no); view.dept_name = gdc.GetStrByField("dept_name", "sys_dept", "dept_no", view.act_user_no); return(view); }
/// <summary> /// 数据更新 /// </summary> /// <param name="newValue">更新后对象</param> /// <returns>影响记录条数</returns> public int Update(ModelView.ApoActView newValue) { Model.TableModel.Apo_act model = View2Model(newValue); List <Model.TableModel.Apo_act> modelList = new List <Model.TableModel.Apo_act>(); modelList.Add(model); return(DbEngine.QueryInt <Model.TableModel.Apo_act>("update", modelList)); }
/// <summary> /// 私有方法,视图数据更新 /// </summary> /// <param name="data">初始视图</param> /// <returns>更新后的视图</returns> private ModelView.ApoActView UpdateData(ModelView.ApoActView data) { if (data.act_result != "驳回") { data.apo_finished = "是"; data.step_finished = "是"; } return(data); }
/// <summary> /// 审核流程的建立 /// </summary> /// <param name="dfv">要发起审核流程的文件信息</param> /// <param name="userNo">用户名</param> /// <returns>处理结果</returns> public string CreateApprove(ModelView.DmsFileView dfv, string userNo) { if (dfv == null) { return("文件不存在!"); } //获取第一个审核流程视图 ApoItemCtrl aic = new ApoItemCtrl(); ModelView.ApoItemView aiv = aic.GetFirst(dfv.file_type_name); if (aiv == null) { return("未找到审核流程!"); } //获取下一个审核流程视图 ModelView.ApoItemView aivNext = aic.GetNext(aiv.apo_no, aiv.apo_item_no); if (aivNext == null) { return("该审核流程有误!"); } //用户构建 GlobalDataCtrl gdc = new GlobalDataCtrl(); string userName = gdc.GetStrByField("user_name", "sys_user", "user_no", userNo); //文件视图及审核流程视图创建Act视图并处理 ModelView.ApoActView aav = new ModelView.ApoActView(); aav.id = string.Empty; aav.status_no = "310"; aav.status_name = "已确认"; aav.act_no = string.Empty; aav.apo_no = aiv.apo_no; aav.apo_item_no = aiv.apo_item_no; aav.apo_item_name = aiv.apo_item_name; aav.apo_index = aiv.apo_index; aav.next_item_no = aiv.next_item_no; aav.next_item_name = aivNext.apo_item_name; aav.next_user_name = aivNext.apo_user_name; aav.act_desc = dfv.file_desc; aav.act_result = "通过"; aav.act_step = "0"; aav.act_user_no = userNo; aav.act_user_name = userName; aav.act_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); aav.ralate_no = dfv.file_no; aav.ralate_file_name = dfv.file_name; aav.ralate_file_extension = dfv.file_extension; aav.ralate_type_no = dfv.file_type_no; aav.step_finished = "否"; aav.apo_finished = "否"; aav.dept_no = string.Empty; aav.dept_name = string.Empty; //数据写入 ApoActCtrl aac = new ApoActCtrl(); return(aac.Insert(aav) > 0 ? "success" : "数据写入失败!"); }
/// <summary> /// 审核驳回 /// </summary> /// <param name="lastApoActView">前一审核动作视图</param> /// <param name="dmsFileView">要驳回审核的文件信息</param> /// <param name="userNo">用户名</param> /// <returns>处理结果</returns> public string RejectApprove(ModelView.ApoActView lastApoActView, ModelView.DmsFileView dmsFileView, string userNo) { string res = string.Empty; //获取下一个处理的流程视图 ApoItemCtrl apoItemCtrl = new ApoItemCtrl(); ModelView.ApoItemView nextApoItemView = apoItemCtrl.GetNext(lastApoActView.apo_no, lastApoActView.apo_item_no); if (nextApoItemView == null) { return("文件审核流程设定有误!"); } if (nextApoItemView.apo_user_no.ToLower() != userNo.ToLower()) { return("您无权审核此文件!"); } if (lastApoActView.act_result == "驳回") { return("无法驳回已驳回的文件,请重传!"); } //获取第一次发起的审核动作 ApoActCtrl apoActCtrl = new ApoActCtrl(); ModelView.ApoActView firstApoActView = apoActCtrl.GetFirst(dmsFileView.file_no); if (firstApoActView == null) { return("不存在对应的审核发起记录!"); } //确认上一流程 lastApoActView.step_finished = "是"; apoActCtrl.Update(lastApoActView); //按照驳回流程构造当前动作 lastApoActView.id = string.Empty; lastApoActView.status_name = "已确认"; lastApoActView.status_no = "310"; lastApoActView.act_no = string.Empty; lastApoActView.apo_item_no = nextApoItemView.apo_item_no; lastApoActView.apo_item_name = nextApoItemView.apo_item_name; lastApoActView.apo_index = nextApoItemView.apo_index; lastApoActView.next_item_no = firstApoActView.apo_item_no; lastApoActView.next_item_name = firstApoActView.apo_item_name; lastApoActView.next_user_name = firstApoActView.act_user_name; lastApoActView.act_result = "驳回"; int intTmp = 1; lastApoActView.act_step = (int.TryParse(lastApoActView.act_step, out intTmp) ? intTmp + 1 : 1).ToString(); lastApoActView.act_user_no = userNo; GlobalDataCtrl gdc = new GlobalDataCtrl(); lastApoActView.act_user_name = gdc.GetStrByField("user_name", "sys_user", "user_no", userNo); lastApoActView.act_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); lastApoActView.step_finished = "是"; lastApoActView.apo_finished = "否"; //数据写入 return(FinishApprove(lastApoActView)); }
/// <summary> /// 结束当前审核流程 /// </summary> /// <param name="currentApoActView"></param> /// <returns></returns> public string FinishApprove(ModelView.ApoActView currentApoActView) { string msg = UpdateApprove(currentApoActView.ralate_no); if (msg == "success") { ApoActCtrl apoActCtrl = new ApoActCtrl(); msg = apoActCtrl.Insert(currentApoActView) > 0?"success":"结束流程数据写入失败!"; } return(msg); }
/// <summary> /// 分页查询 /// </summary> /// <param name="where">where子句</param> /// <param name="orderBy">排序子句</param> /// <param name="pageSize">页面大小</param> /// <param name="pageIndex">页面索引</param> /// <param name="total">out参数,返回总记录条数</param> /// <returns>视图对象列表</returns> public List <ModelView.ApoActView> GetListPage(string where, Dictionary <string, string> orderBy, int pageSize, int pageIndex, out int total) { List <Model.TableModel.Apo_act> list = DbEngine.QueryPage <Model.TableModel.Apo_act>("apo_act", pageIndex, pageSize, where, orderBy, out total); List <ModelView.ApoActView> res = new List <ModelView.ApoActView>(); foreach (Model.TableModel.Apo_act item in list) { ModelView.ApoActView model = Model2View(item); res.Add(model); } return(res); }
/// <summary> /// 分页查询 /// </summary> /// <param name="where">where子句</param> /// <param name="orderBy">排序子句</param> /// <param name="pageSize">页面大小</param> /// <param name="pageIndex">页面索引</param> /// <returns>最终结果字符串</returns> public string GetListPage(string where, Dictionary <string, string> orderBy, int pageSize, int pageIndex) { int total = 0; List <Model.TableModel.Apo_act> list = DbEngine.QueryPage <Model.TableModel.Apo_act>("apo_act", pageIndex, pageSize, where, orderBy, out total); List <ModelView.ApoActView> res = new List <ModelView.ApoActView>(); foreach (Model.TableModel.Apo_act item in list) { ModelView.ApoActView model = Model2View(item); res.Add(model); } return(Common.JsonHelper.SerializeObject(new { total = total, rows = res })); }
/// <summary> /// 视图类转实体类 /// </summary> /// <param name="view">视图类</param> /// <returns>实体类</returns> private Model.TableModel.Apo_act View2Model(ModelView.ApoActView view) { Model.TableModel.Apo_act model = new Model.TableModel.Apo_act(); if (string.IsNullOrEmpty(view.id)) { model.id = Common.Md5Operate.CreateGuidId(); } else { model.id = view.id; } model.status_name = view.status_name; model.status_no = string.IsNullOrEmpty(view.status_no) ? "310" : view.status_no; GlobalDataCtrl globalDataCtrl = new GlobalDataCtrl(); model.act_no = string.IsNullOrEmpty(view.act_no) ? globalDataCtrl.GetNextNoByTblName("apo_act") : view.act_no; model.apo_no = string.IsNullOrEmpty(view.apo_no)?"ApoNo":view.apo_no; model.apo_item_no = string.IsNullOrEmpty(view.apo_item_no) ? "ApoItemNo" : view.apo_item_no; model.apo_item_name = string.IsNullOrEmpty(view.apo_item_name) ? "ApoItemName" : view.apo_item_name; int tmpInt = 0; model.apo_index = string.IsNullOrEmpty(view.apo_index) ? 0 : (int.TryParse(view.apo_index, out tmpInt)?tmpInt:0); model.next_item_no = string.IsNullOrEmpty(view.next_item_no) ? "NextItemNo" : view.next_item_no; model.next_item_name = string.IsNullOrEmpty(view.next_item_name) ? "NextItemName" : view.next_item_name; model.next_user_name = string.IsNullOrEmpty(view.next_user_name) ? "NextUserName" : view.next_user_name; model.act_desc = view.act_desc; model.act_result = view.act_result == "通过" ? true : false; model.act_step = string.IsNullOrEmpty(view.act_step) ? 0 : (int.TryParse(view.act_step, out tmpInt) ? tmpInt : 0); model.act_user_no = string.IsNullOrEmpty(view.act_user_no) ? "ActUserNo" : view.act_user_no; model.act_user_name = string.IsNullOrEmpty(view.act_user_name) ? "ActUserName" : view.act_user_name; DateTime dt = DateTime.Now; model.act_time = string.IsNullOrEmpty(view.act_time) ? DateTime.Now : DateTime.TryParse(view.act_time, out dt)?dt:DateTime.Now; model.ralate_no = string.IsNullOrEmpty(view.ralate_no) ? "RalateNo" : view.ralate_no; model.ralate_file_name = string.IsNullOrEmpty(view.ralate_file_name) ? "RalateFileName" : view.ralate_file_name; model.ralate_file_extension = string.IsNullOrEmpty(view.ralate_file_extension) ?"RalateFileExtension": view.ralate_file_extension; model.ralate_type_no = string.IsNullOrEmpty(view.ralate_type_no) ? "RalateTypeNo" : view.ralate_type_no; model.step_finished = view.step_finished == "是" ? true : false; model.apo_finished = view.apo_finished == "是" ? true : false; return(model); }
/// <summary> /// 审核通过 /// </summary> /// <param name="lastApoActView">前一审核动作视图</param> /// <param name="dmsFileView">要发起审核流程的文件信息</param> /// <param name="userNo">用户名</param> /// <returns>处理结果</returns> public string PassApprove(ModelView.ApoActView lastApoActView, ModelView.DmsFileView dmsFileView, string userNo)//文件类型对应审核类型编号 { string res = "success"; //获取下一个处理的流程视图 ApoItemCtrl apoItemCtrl = new ApoItemCtrl(); ModelView.ApoItemView nextApoItemView = apoItemCtrl.GetNext(lastApoActView.apo_no, lastApoActView.apo_item_no); if (nextApoItemView == null) { return("文件审核流程设定有误!"); } if (nextApoItemView.apo_user_no.ToLower() != userNo.ToLower()) { return("您无权审核此文件!"); } if (lastApoActView.act_result == "驳回") { return("无法通过已驳回的文件,请重传!"); } //获取最后一个处理的流程视图 ModelView.ApoItemView lastApoItemView = apoItemCtrl.GetLast(lastApoActView.apo_no); //确认上一流程 lastApoActView.step_finished = "是"; ApoActCtrl apoActCtrl = new ApoActCtrl(); apoActCtrl.Update(lastApoActView); //按照结束流程构造当前动作 lastApoActView.id = string.Empty; lastApoActView.status_name = "已确认"; lastApoActView.status_no = "310"; lastApoActView.act_no = string.Empty; lastApoActView.apo_item_no = nextApoItemView.apo_item_no; lastApoActView.apo_item_name = nextApoItemView.apo_item_name; lastApoActView.apo_index = nextApoItemView.apo_index; lastApoActView.next_item_no = nextApoItemView.next_item_no; lastApoActView.next_item_name = string.Empty; lastApoActView.next_user_name = string.Empty; lastApoActView.act_result = "通过"; int intTmp = 1; lastApoActView.act_step = (int.TryParse(lastApoActView.act_step, out intTmp) ? intTmp + 1 : 1).ToString(); lastApoActView.act_user_no = userNo; GlobalDataCtrl gdc = new GlobalDataCtrl(); lastApoActView.act_user_name = gdc.GetStrByField("user_name", "sys_user", "user_no", userNo); lastApoActView.act_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); lastApoActView.step_finished = "是"; lastApoActView.apo_finished = "是"; ////如果是最后一个,同意的同时添加流程结束处理,即更新现有流程,同时更新文件状态 if (nextApoItemView.apo_item_no == lastApoItemView.apo_item_no) { res = FinishApprove(lastApoActView); if (res == "success") { dmsFileView.is_passed = "是"; dmsFileView.file_status = "使用中"; res = UpdateFile(dmsFileView); } } else { ModelView.ApoItemView nextLowerApoItemView = apoItemCtrl.GetNext(lastApoActView.apo_no, lastApoActView.apo_item_no); if (nextLowerApoItemView == null) { return("文件审核流程设定有误!"); } lastApoActView.next_item_name = nextLowerApoItemView.apo_item_name; lastApoActView.next_user_name = nextLowerApoItemView.apo_user_name; lastApoActView.step_finished = "否"; lastApoActView.apo_finished = "否"; res = Move2NextApprove(lastApoActView); } return(res); }
/// <summary> /// 写入并移动向下一审核流程 /// </summary> /// <param name="currentApoActView"></param> /// <returns></returns> private string Move2NextApprove(ModelView.ApoActView currentApoActView) { ApoActCtrl apoActCtrl = new ApoActCtrl(); return(apoActCtrl.Insert(currentApoActView) > 0 ? "success" : "审核通过数据写入失败!"); }
/// <summary> /// 更新操作 /// </summary> /// <param name="jsonStr">更新后对象的json序列化字符串</param> /// <returns>影响记录条数</returns> public int Update(string jsonStr) { ModelView.ApoActView model = Common.JsonHelper.DeserializeJsonToObject <ModelView.ApoActView>(jsonStr); return(Update(model)); }
public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; string msg = "success"; //获取传入的参数及校验 string approveResult = context.Request["approveResult"] ?? "APPROVERESULT"; if (string.IsNullOrEmpty(approveResult) || approveResult == "APPROVERESULT") { ResOutPut(context, "审核结果不合法!"); } string rowFile = context.Request["rowFile"] ?? "ROWFILE"; if (string.IsNullOrEmpty(rowFile) && rowFile == "ROWFILE") { ResOutPut(context, "文件信息有误!"); } string rowApoAct = context.Request["rowApoAct"] ?? "ROWAPPROVE"; if (string.IsNullOrEmpty(rowApoAct) && rowApoAct == "ROWAPPROVE") { ResOutPut(context, "审核信息有误!"); } //获取当前用户 HttpCookie cookies = context.Request.Cookies["MesCookie"]; string cookieStr = string.Empty; if (cookies == null || string.IsNullOrEmpty(cookies.Value)) { //context.Response.Redirect("/LoginForm.aspx"); } else { cookieStr = cookies.Value; } var obj = Newtonsoft.Json.JsonConvert.DeserializeObject <dynamic>(cookieStr) as JToken; string userNo = obj == null ? string.Empty : ((obj["userNo"] ?? string.Empty).ToString()); //类构建 ModelView.DmsFileView dmsFileView = Common.JsonHelper.DeserializeJsonToObject <ModelView.DmsFileView>(rowFile); ModelView.ApoActView apoActView = Common.JsonHelper.DeserializeJsonToObject <ModelView.ApoActView>(rowApoAct); //dfv.login_user_no = obj["userNo"].ToString(); //dfv.login_user_name = obj["userName"].ToString(); Ctrl.Bll.ApoActBll apoActBll = new Ctrl.Bll.ApoActBll(); if (approveResult == "通过") { try { msg = apoActBll.PassApprove(apoActView, dmsFileView, userNo); } catch (Exception) { ResOutPut(context, "审核通过失败"); } } else if (approveResult == "驳回") { try { msg = apoActBll.RejectApprove(apoActView, dmsFileView, userNo); } catch (Exception) { ResOutPut(context, "审核驳回失败"); } } else { ResOutPut(context, "审核结果不合法!"); } ResOutPut(context, msg); }