首页 > 代码库 > 请假应用(二)
请假应用(二)
关于流程
最开始想学习OA的流程,老大说目前需求不需要那么麻烦。目前需求是请假人在发起工作时候,自己选择流程(同一级可选择多人),后期让管理员配置流程。所以目前采用的方式是利用字符串拼接。userid&userid(同级) userid-userid(不同级) userid#0/1 表示并/或。 采用这样的处理方式我不知道后期会不会出现其他的错误,但是目前来看是可以解决现有的任何问题。
还需要处理的问题就是委托,审批人允许把该流程委托给其他人处理。啊啊啊啊啊,思维有点混乱了。今天得好好想想。
贴上昨天的代码吧(才把发起请假做好,惨无人道的速度啊。)
1 #region 请假 2 /// <summary> 3 /// 请假界面 4 /// </summary> 5 /// <returns></returns> 6 public ActionResult 请假界面() 7 { 8 return View(); 9 } 10 /// <summary> 11 /// 请假界面返回信息 12 /// </summary> 13 public ActionResult LeaveReturn() 14 { 15 //模拟数据 16 string Title = "从前台获取标题"; 17 string Content = "从前台获取内容"; 18 string UserId = "6";//模拟数据,应该为登陆者ID,从Session中获取 19 string AttId = "1001";//"从前台获取附件ID"; 20 string TypeId = "3";//从前台获取; 21 string Status = "0";//发起以后就在审批,默认为0; 22 string EntId = "1001";// 应为企业ID,从Session中获取 23 DateTime StartTime = DateTime.Now;//从前台获取时间,这里模拟为现在时间 24 DateTime EndTime = DateTime.Now;//如上 25 DateTime SubmitTime = DateTime.Now;//申请时间 26 //更新model 27 model_leave.l_Title = Title; 28 model_leave.l_Content = Content; 29 model_leave.l_Userid = int.Parse(UserId);//转化 30 //判断是否有附件 31 if (AttId == null) 32 { 33 model_leave.l_AttId = null; 34 } 35 else 36 { 37 model_leave.l_AttId = int.Parse(AttId); 38 } 39 model_leave.l_TypeId = int.Parse(TypeId); 40 model_leave.l_Status = int.Parse(Status); 41 model_leave.E_entId = int.Parse(EntId); 42 model_leave.l_StartTime = StartTime; 43 model_leave.l_EndTime = EndTime; 44 model_leave.l_SubmitTime = SubmitTime; 45 //将数据插入请假表 46 if (bll_leave.Add(model_leave)) 47 { 48 //获取刚插入表数据的主键 49 string sql = "select max(l_Id) from pc_leave where l_Userid=‘" + UserId + "‘"; 50 string ItemId = PM.DBUtility.DbHelperMySQL.Query(sql).Tables[0].Rows[0][0].ToString(); 51 string Process = "userid&userid&0-userid-userid"; 52 DateTime AddTime = DateTime.Now; 53 string Manager = "1";//此处从process中解出 54 //创建一个Hashtable实例 55 Hashtable htDiaAndCir = new Hashtable(); 56 //构造哈希表语句 57 string sqlInterCir = //这里语句就不写出来了,也不难 58 MySqlParameter[] praCir = //这里语句就不写出来了,也不难 59 60 string sqlInterCou = //这里语句就不写出来了,也不难 61 MySqlParameter[] praCou = //这里语句就不写出来了,也不难
htDiaAndCir.Add(sqlInterCir, praCir); 62 htDiaAndCir.Add(sqlInterCou, praCou); 63 //将数据插入流转记录表 64 if (DBUtility.DbHelperMySQL.ExecuteSqlTran(htDiaAndCir)) 65 { 66 return Json(new { code = 0, msg = "请假成功!" }); 67 } 68 else 69 { 70 //将插入的请假表删除 71 bll_leave.Delete(int.Parse(ItemId)); 72 Common.WriteErrorLog("40063", "流转记录表插入失败", "[AppLeave] 插入流转表"); 73 return Json(new { code = 40063, msg = "请假失败!" }); 74 } 75 } 76 else 77 { 78 Common.WriteErrorLog("40062", "请假表插入失败", "[AppLeave] 插入请假表"); 79 return Json(new { code = 40062, msg = "请假失败!" }); 80 } 81 } 82 /// <summary> 83 /// 删除附件 84 /// </summary> 85 /// <returns></returns> 86 [HttpPost] 87 public ActionResult DelAttachment() 88 { 89 try 90 { 91 //附件id 92 string attId = Request["attid"]; 93 //附件名称 94 string attName = Request["attname"]; 95 if (string.IsNullOrEmpty(attId) || string.IsNullOrEmpty(attName)) 96 return Json(new { code = -1, msg = "参数错误!" }); 97 else 98 { 99 //删除数据表100 bll_attachment.Delete(int.Parse(attId));101 //删除文件102 System.IO.File.Delete(HttpContext.Server.MapPath("/Content/JqueryUpload/upload/" + attName));103 return Json(new { code = 0, msg = "删除成功!" });104 }105 }106 catch (Exception ex)107 {108 Common.WriteErrorLog("40004", "删除附件失败:" + ex.Message, "[work] 删除附件");109 return Json(new { code = -2, msg = "删除失败!" });110 }111 112 }113 #endregion
请假应用(二)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。