public decimal AddFlow(T_FLOW flow, IList<T_FLOW_AUTH> auth) { using (var ctx = new OAContext()) { ctx.T_FLOW.Add(flow); foreach (var item in auth) { ctx.T_FLOW_AUTH.Add(item); } return ctx.SaveChanges(); } }
public decimal UpdateFlow(T_FLOW flow, IList<T_FLOW_AUTH> auth = null) { using (var ctx = new OAContext()) { var re = ctx.T_FLOW.Attach(flow); ctx.Entry<T_FLOW>(flow).State = EntityState.Modified; if (auth != null) { ctx.Database.ExecuteSqlCommand("delete T_FLOW_AUTH where flow_id=:p0", flow.FLOW_ID); if (auth.Count > 0) { foreach (var item in auth) { ctx.T_FLOW_AUTH.Add(item); } } } return ctx.SaveChanges(); } }
public ActionModel ContinueWork(SNSession session, T_FLOW beginFlow, T_STEP beginStep, decimal prevWorkAnyNodeId) { return BeginWork(session, beginFlow, beginStep, prevWorkAnyNodeId); }
public ActionModel BeginWork(SNSession session, T_FLOW beginFlow, T_STEP beginStep, decimal prevWorkAnyNodeId = 0) { #region 创建事项流程简述 //TODO:自动生成 // 1.确定事项的入口:确定入口步骤 done // 2.1.根据入口步骤生曾第一节点(即产生了主线路) done // 2.2.根据第一节点产生事项 done // 2.3.生成节点授权信息(steptouser) done // 3.根据入口步骤所属的流程,生成相关阶段 done // 4.1.创建表单--根据步骤ID获取要默认创建的文笺列表 done // 4.2.默认打开排序号第一的表单 todo // 4.3.获取可输入项--根据文笺ID获取当前步骤文笺的输入项列表 done //----------------- //TODO:输入数据 // 1.1.输入事项相关属性,生成事项标签 // 2.1.输入项输入值 // 3.1.设置表单属性(序号、是否带纸质等) //----------------- //TODO:完成,保存数据 // 1.1.保存节点 // 1.2.保存节点授权 // 2.1.保存表单 // 2.2.保存输入项 // 3.1.保存阶段 // 4.1.保存事项 //----------------- //TODO:保存下步信息(事项第一步不可接新流程) // 1.1.产生下步节点 // 1.2.产生下步授权(stepToUser) //throw new NotImplementedException(); #endregion // 构建控制工厂 var fact = new CtrlFactory(); // 构建动作ActionModel var vm = new ActionModel(); // 生成节点新ID var nodeId = this.BuildID(); // 生成事项第一节点 var nodeCtrl = fact.NodeCtrl(); vm.CurrentNode = nodeCtrl.BuildTo(beginStep.STEP_ID, beginStep.STEP_NAME, nodeId, prevWorkAnyNodeId); // 生成事项第一节点域 vm.CurrentNodeDomain = nodeCtrl.CreateNodeDomain(vm.CurrentNode.NODE_ID, session.DeptId, session.UserId, session.DelegateUserId); // 生成事项 var workCtrl = fact.WorkCtrl(); vm.CurrentWork = workCtrl.CreateWork(vm.CurrentNode.NODE_ID, session.OrgId); // 生成第一阶段 var stageCtrl = fact.StageCtrl(); vm.CurrentStage = stageCtrl.CreateStage(vm.CurrentNode.NODE_ID, beginStep.FLOW_ID, beginFlow.FLOW_NAME); // 生成需自动创建的实体文笺 var entityCtrl = fact.EntityCtrl(); vm.EntityList = entityCtrl.CreateEntityForNode(vm.CurrentNode.STEP_ID, vm.CurrentWork.WORK_ID, vm.CurrentNode.NODE_ID, vm.CurrentNodeDomain.DEPT_ID, vm.CurrentNodeDomain.USER_ID); //TODO:验证AM下各个对象的完备性 return vm; }