public ActionResult Deal(int flowNodeCaseId) { //当前待办节点实例 var nodeCase = BF_FLOW_NODE_CASE.Instance.GetEntityByKey <BF_FLOW_NODE_CASE.Entity>(flowNodeCaseId); //当前流程实例 var flowCase = BF_FLOW_CASE.Instance.GetEntityByKey <BF_FLOW_CASE.Entity>(nodeCase.FLOW_CASE_ID); //已处理通过的节点实例集合 var dealNodeCaseList = BF_FLOW_NODE_CASE.Instance.GetList <BF_FLOW_NODE_CASE.Entity>("FLOW_CASE_ID=? AND AUDIT_STATUS=?", flowCase.ID, CS.Common.Enums.AuditStatus.通过.GetHashCode()).OrderBy(p => p.ID); //表单主信息(MAIN_PAGE) //流转记录(暂未实现) //审核页面 var record = new BF_FLOW_NODE_CASE_RECORD.Entity() { FLOW_ID = flowCase.FLOW_ID, FLOW_CASE_ID = flowCase.ID, FLOW_NODE_CASE_ID = flowNodeCaseId, FLOW_NODE_ID = nodeCase.FLOW_NODE_ID }; ViewBag.AuditStatusList = new List <KV> { new KV { key = CS.Common.Enums.AuditStatus.通过.ToString(), value = CS.Common.Enums.AuditStatus.通过.GetHashCode().ToString() }, new KV { key = CS.Common.Enums.AuditStatus.退回.ToString(), value = CS.Common.Enums.AuditStatus.退回.GetHashCode().ToString() } }; ViewBag.MainFormPage = flowCase.MAIN_PAGE;//表单页面 return(View(record)); }
public ActionResult Deal(BF_FLOW_NODE_CASE_RECORD.Entity record) { JsonResultData result = new JsonResultData(); result.IsSuccess = true; try { var flow = BF_FLOW.Instance.GetEntityByKey <BF_FLOW.Entity>(record.FLOW_ID); var currFlowNode = BF_FLOW_NODE.Instance.GetEntityByKey <BF_FLOW_NODE.Entity>(record.FLOW_NODE_ID); #region 01.保存审批记录 record.AUDIT_TIME = DateTime.Now; record.AUDIT_UID = SystemSession.UserID; BF_FLOW_NODE_CASE_RECORD.Instance.Add(record); #endregion bool isPass = false; #region 02.修改当前节点实例状态 var flowNodeCase = BF_FLOW_NODE_CASE.Instance.GetEntityByKey <BF_FLOW_NODE_CASE.Entity>(record.FLOW_NODE_CASE_ID); if (record.AUDIT_STATUS == CS.Common.Enums.AuditStatus.退回.GetHashCode()) { flowNodeCase.AUDIT_STATUS = (short)CS.Common.Enums.AuditStatus.退回.GetHashCode(); flowNodeCase.IS_FINISH = 1; flowNodeCase.FINISH_TIME = DateTime.Now; BF_FLOW_NODE_CASE.Instance.UpdateByKey(flowNodeCase, flowNodeCase.ID); //退回流程至流程主节点 BF_FLOW_NODE_CASE.Instance.ReturnFlowNodeCase(record.FLOW_NODE_ID, record.FLOW_CASE_ID); } else { //验证是否多人全部审批通过 if (BF_FLOW_NODE_CASE.Instance.ValidateFlowNodeCaseIsFinish(record.FLOW_NODE_CASE_ID)) { flowNodeCase.AUDIT_STATUS = (short)CS.Common.Enums.AuditStatus.通过.GetHashCode(); flowNodeCase.IS_FINISH = 1; flowNodeCase.FINISH_TIME = DateTime.Now; BF_FLOW_NODE_CASE.Instance.UpdateByKey(flowNodeCase, flowNodeCase.ID); isPass = true; } } #endregion #region 03.触发下个节点流转 if (isPass) { var resBool = BF_FLOW_CASE.Instance.CreateNextNodesCase(flow, currFlowNode, record.FLOW_CASE_ID); } #endregion } catch (Exception ex) { result.IsSuccess = false; result.Message = "流程处理出错:" + ex.Message; } return(Json(result, JsonRequestBehavior.AllowGet)); }
public ActionResult Create(int SysCsFlowID, int sysCsMainTableKey) { //考虑限定开始节点是主节点,并且只能有一个? JsonResultData result = new JsonResultData(); result.IsSuccess = true; try { //流程 var flow = BF_FLOW.Instance.GetEntityByKey <BF_FLOW.Entity>(SysCsFlowID); //主节点 var mainNode = BF_FLOW_NODE.Instance.GetEntity <BF_FLOW_NODE.Entity>("FLOW_ID=? AND IS_MAIN=1", SysCsFlowID); #region 01.保存流程实例 int flowCaseId = BF_FLOW_CASE.Instance.GetNextValueFromSeqDef(); BF_FLOW_CASE.Entity flowCase = new BF_FLOW_CASE.Entity() { ID = flowCaseId, CREATE_TIME = DateTime.Now, CREATE_UID = SystemSession.UserID, FLOW_ID = flow.ID, FLOW_TYPE_ID = flow.FLOW_TYPE_ID, IS_ARCHIVE = 0, IS_ENABLE = 1, MAIN_PAGE = ((flow.MAIN_PAGE.IndexOf('?') >= 0) ? (flow.MAIN_PAGE + "&id=" + sysCsMainTableKey) : (flow.MAIN_PAGE + "?id=" + sysCsMainTableKey)).Replace("id=0&", ""), MAIN_TABLE = flow.MAIN_TABLE, PRIMARY_KEY = sysCsMainTableKey, NAME = flow.NAME }; BF_FLOW_CASE.Instance.Add(flowCase); #endregion #region 02.保存主节点实例 #region 02-1.保存主节点(是否需要记录填报人信息) int mainFlowNodeCaseId = BF_FLOW_NODE_CASE.Instance.AddMainFlowNodeCase(mainNode, flowCaseId, flow.ID); #endregion #region 02-2.保存主节点处理(填报)人信息 BF_FLOW_NODE_CASE_RECORD.Entity mainFlowNodeCaseRecord = new BF_FLOW_NODE_CASE_RECORD.Entity { ID = BF_FLOW_NODE_CASE_RECORD.Instance.GetNextValueFromSeqDef(), AUDIT_CONTENT = string.Format(@"[{0}]发起的主节点填报信息,该条信息仅记录,不存在审批", SystemSession.FullUserName), AUDIT_STATUS = Convert.ToInt16(CS.Common.Enums.AuditStatus.通过.GetHashCode()), //默认通过1 AUDIT_TIME = DateTime.Now, AUDIT_UID = SystemSession.UserID, //审批人即填报人 FLOW_ID = flow.ID, FLOW_CASE_ID = flowCaseId, FLOW_NODE_CASE_ID = mainFlowNodeCaseId }; #endregion #endregion #region 03.生成(下个)节点待办信息. var isSuccess = BF_FLOW_CASE.Instance.CreateNextNodesCase(flow, mainNode, flowCaseId); #endregion result.IsSuccess = true; result.Message = "流程实例创建成功!"; } catch (Exception ex) { result.IsSuccess = false; result.Message = "流程实例创建出错:" + ex.Message; } return(Json(result, JsonRequestBehavior.AllowGet)); }