public IList<T_ENTITY> CreateEntityForNode(decimal stepId, decimal workId, decimal nodeId, decimal deptId, decimal userId) { using (var ctx = new OAContext()) { /* ModelCtrl有获取步骤模型集合的方法,但此处为了性能,直接复制代码于此 */ // 获取Node关联的Step可用Model,根据Step_Model关系 var models = from m in ctx.T_MODEL.Where(p => p.RS == 1) join sm in ctx.T_STEP_MODEL.Where(p => p.RS == 1) on m.MODEL_ID equals sm.MODEL_ID where sm.STEP_ID == stepId select m; // 循环可用Model,根据Model生成Entity return models.ToList() //用ToList预加载 .Select(m => new T_ENTITY { WORK_ID = workId, NODE_ID = nodeId, MODEL_ID = m.MODEL_ID, FORM_ID = m.FORM_ID, ENTITY_ID = this.BuildID(), //生成newId ENTITY_NAME = m.MODEL_NAME, //EntityName默认为ModelName DEPT_ID = deptId, USER_ID = userId, //不需考虑代理情况 ENTITY_IDX = m.MODEL_IDX, //RANGE_RANK_TI=Tag.ModelTag.RangeRank.NodeRank, //TODO:暂时不考虑应用范围 ACTIVE_TI = EntityTag.Active.DoneSave, //默认为正式(完成时保存) }).ToList(); } }
public decimal SynchronousDept() { DataTable dt; var re = 0; using (var ctx = new OAContext()) { dt = ctx.SqlTable( "select * from V_DEPT v where v.ts>nvl((select max(ts) from T_DEPT),to_timestamp('2000-1-1 0:00:00.001','YYYY-MM-DD HH24:MI:SS.FF3')) order by ts"); } using (var ctx = new OAContext()) { if (dt != null && dt.Rows.Count > 0) { foreach (DataRow d in dt.Rows) { var org = Math.Abs(SNHelper.GuidToLongID(Guid.Parse(d["org_id"].ToString()))); string superDeptId = "null"; if (d["super_dept_id"]!=DBNull.Value) { superDeptId = d["super_dept_id"].ToString(); } var sql = string.Format( @"insert into t_dept(dept_id,super_dept_id,dept_name,dept_code,org_id,dept_idx,ts,rs) values({0},{1},'{2}',{3},{4},{5},to_timestamp('{6}','YYYY-MM-DD HH24:MI:SS.FF3'),{7})", d["dept_id"], superDeptId, d["dept_name"], d["dept_code"], org, d["dept_idx"], d["ts"], d["rs"]); re += ctx.Database.ExecuteSqlCommand(sql); } } } return re; }
public decimal DeleteDept(decimal deptId) { using (var ctx = new OAContext()) { return ctx.Database.ExecuteSqlCommand("update T_DEPT set rs=0 where DEPT_ID=:p", deptId); } }
public T_FORM GetForm(decimal formId) { using (var ctx = new OAContext()) { var re = ctx.T_FORM.SingleOrDefault(p => p.RS == 1 && p.FORM_ID == formId); return re; } }
public decimal AddForm(T_FORM form) { using (var ctx = new OAContext()) { ctx.T_FORM.Add(form); return ctx.SaveChanges(); } }
public IList<T_DEPT> GetAllDeptByOrgID(decimal orgID) { using (var ctx = new OAContext()) { var re = ctx.T_DEPT.Where(p => p.ORG_ID == orgID && p.RS == 1); return re.ToList(); } }
public decimal AddDept(T_DEPT dept) { using (var ctx = new OAContext()) { ctx.T_DEPT.Add(dept); return ctx.SaveChanges(); } }
public IList<T_FLOW_AUTH> GetFlowAuth(decimal flowID) { using (var ctx = new OAContext()) { var re = ctx.T_FLOW_AUTH.Where(p => p.FLOW_ID == flowID && p.RS == 1); return re.ToList(); } }
public decimal AddFileType(C_FILE_TYPE fileType) { using (var ctx = new OAContext()) { ctx.C_FILE_TYPE.Add(fileType); return ctx.SaveChanges(); } }
public T_FLOW GetFlow(decimal flowID) { using (var ctx = new OAContext()) { var re = ctx.T_FLOW.SingleOrDefault(p => p.FLOW_ID == flowID && p.RS == 1); return re; } }
public IList<C_FILE_TYPE> GetFileType() { using (var ctx = new OAContext()) { var re = ctx.C_FILE_TYPE; return re.ToList(); } }
public T_DEPT GetDept(decimal deptId) { using (var ctx = new OAContext()) { var re = ctx.T_DEPT.SingleOrDefault(t => t.DEPT_ID == deptId && t.RS == 1); return re; } }
public decimal DelForm(decimal formID) { using (var ctx = new OAContext()) { var re = 0; re += ctx.Database.ExecuteSqlCommand("update T_FORM set rs=0 where form_id=:p", formID); return re; } }
/// <summary> /// /// </summary> /// <param name="_oaContext"></param> /// <param name="_sysContext"></param> /// <param name="_commonService"></param> /// <param name="_userService"></param> public WorkReportController(OAContext _oaContext, SysContext _sysContext, ICommonService _commonService, IUserService _userService) { this.oaContext = _oaContext; this.sysContext = _sysContext; this.commonService = _commonService; this.userService = _userService; }
public decimal UpdateForm(T_FORM form) { using (var ctx = new OAContext()) { ctx.T_FORM.Attach(form); ctx.Entry<T_FORM>(form).State = System.Data.EntityState.Modified; return ctx.SaveChanges(); } }
public decimal UpdataFileType(C_FILE_TYPE fileType) { using (var ctx = new OAContext()) { ctx.C_FILE_TYPE.Attach(fileType); ctx.Entry<C_FILE_TYPE>(fileType).State = EntityState.Modified; return ctx.SaveChanges(); } }
/// <summary> /// /// </summary> /// <param name="_oaContext"></param> /// <param name="_sysContext"></param> /// <param name="_commonService"></param> /// <param name="_userService"></param> public IncardService(OAContext _oaContext, SysContext _sysContext, ICommonService _commonService, IUserService _userService) { this.oaContext = _oaContext; this.sysContext = _sysContext; this.commonService = _commonService; this.userService = _userService; }
public decimal DeleteFlow(decimal flowID) { using (var ctx = new OAContext()) { var re = 0; re += ctx.Database.ExecuteSqlCommand("update T_FLOW set rs=0 where flow_id=:p", flowID); re += ctx.Database.ExecuteSqlCommand("update T_FLOW_AUTH set rs=0 where flow_id=:p", flowID); return re; } }
/// <summary> /// EF上下文实例创建,如果不存在则创建,存在则使用已有对象。 /// </summary> /// <returns></returns> public static DbContext CreateDbContext() { DbContext dbContext = (DbContext)CallContext.GetData("dbContext"); if (dbContext == null) { dbContext = new OAContext(); CallContext.SetData("dbContext", dbContext); } return(dbContext); }
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(); } }
/// <summary> /// /// </summary> /// <param name="_oaContext"></param> /// <param name="_sysContext"></param> /// <param name="_commonService"></param> /// <param name="_userService"></param> /// <param name="_incardService"></param> public OfficeController(OAContext _oaContext, SysContext _sysContext, ICommonService _commonService, IUserService _userService, IIncardService _incardService ) { this.oaContext = _oaContext; this.sysContext = _sysContext; this.commonService = _commonService; this.userService = _userService; this.incardService = _incardService; }
/// <summary> /// /// </summary> /// <param name="_oaContext"></param> /// <param name="_sysContext"></param> /// <param name="_commonService"></param> /// <param name="_userService"></param> /// <param name="_smsService"></param> public AuthController(OAContext _oaContext, SysContext _sysContext, ICommonService _commonService, IUserService _userService, ISmsService _smsService ) { this.oaContext = _oaContext; this.sysContext = _sysContext; this.commonService = _commonService; this.userService = _userService; this.smsService = _smsService; }
public decimal SaveWork(T_WORK work) { Validate(work); using (var ctx = new OAContext()) { if (work.RS == null) { ctx.T_WORK.Add(work); } else { ctx.T_WORK.Attach(work); ctx.Entry<T_WORK>(work).State = EntityState.Modified; } return ctx.SaveChanges(); } }
public IList<dynamic> GetFlowAuths(decimal flowId) { using (var ctx = new OAContext()) { var x = new { flow_id = 1m, auth_to = 1m, auth_to_name = "" }; var t = x.GetType(); var re = ctx.SqlDynamic(string.Format(@" select fa.*,nvl(o.org_name,'') || nvl(d.dept_name,'') || nvl(r.role_name,'') as auth_name from t_flow_auth fa left join t_org o on fa.auth_to = o.org_id left join t_dept d on fa.auth_to = d.dept_id left join t_role r on fa.auth_to = r.role_id where fa.flow_id={0}", flowId)); return re; } }
public dynamic GetAllFlow() { using (var ctx = new OAContext()) { var re = ctx.T_FLOW.Where(p => p.RS == 1).Select(c => new { c.FLOW_IDX, c.FLOW_NAME, WORK_CATEGORY_TI_NAME = ctx.T_TAG_ITEM.FirstOrDefault(q => q.TAG_ITEM_ID == c.WORK_CATEGORY_TI).ITEM_NAME, FLOW_CATEGORY_TI_NAME = ctx.T_TAG_ITEM.FirstOrDefault(q => q.TAG_ITEM_ID == c.FLOW_CATEGORY_TI).ITEM_NAME, c.ENABLED, c.FLOW_CATEGORY_TI, c.FLOW_ID, c.FLOW_MAP, c.OUTER_ORG_FLOW, c.ORG_ID, c.WORK_CATEGORY_TI, }).OrderBy(t => t.FLOW_IDX); //var re = ctx.Database.SqlQuery<T_FLOW>(@"select f.*,i.item_name as FLOW_CATEGORY_TI_NAME from T_flow f inner join t_tag_item i on i.tag_item_id=f.flow_category_ti"); return re.ToList(); } }
/// <summary> /// 获取流程可用模型 T_MODEL /// </summary> /// <param name="flowId"></param> /// <returns></returns> public IList<T_MODEL> GetFlowModels(decimal flowId) { using (var ctx = new OAContext()) { // 获取所有流程所在单位可用的文笺(外部流程只能取所有单位可见的文笺),以及所有单位都可见的文笺 var re = ctx.T_MODEL.SqlQuery( @"select * from t_model where rs=1 and org_id = (select org_id from t_flow where flow_id=:p0) or org_id is null", flowId); return re.ToList(); } }
public TaskRepository(OAContext DbContext) : base(DbContext) { Db = DbContext; }
public IList<T_FLOW> GetFlows() { using (var ctx = new OAContext()) { var re = ctx.T_FLOW.Where(t => t.RS == 1 && t.ENABLED == FlowTag.Enabled.True); return re.ToList(); } }
public IList<dynamic> GetFlowStepAuths(decimal flowId) { using (var ctx = new OAContext()) { var re = ctx.SqlDynamic(string.Format(@" select sa.*, (r.role_name || d.dept_name || o.org_name) as auth_to_name from t_step_auth sa inner join t_step s on sa.step_id = s.step_id left join t_role r on sa.auth_to = {1} and sa.auth_to = r.role_id left join t_dept d on sa.auth_to = {2} and sa.auth_to = d.dept_id left join t_org o on sa.auth_to = {3} and sa.auth_to = o.org_id where s.rs = 1 and s.flow_id = {0} ", flowId, Tag.StepTag.StepAuth.AuthRole, Tag.StepTag.StepAuth.AuthDept, Tag.StepTag.StepAuth.AuthOrg)); return re; } }
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(); } }
/// <summary> /// 通用控制器. /// </summary> /// <param name="_sysContext"></param> /// <param name="_oaContext"></param> public CommonController(SysContext _sysContext, OAContext _oaContext) { sysContext = _sysContext; oaContext = _oaContext; }
public decimal UpdateDept(T_DEPT dept) { using (var ctx = new OAContext()) { ctx.T_DEPT.Attach(dept); ctx.Entry<T_DEPT>(dept).State = EntityState.Modified; return ctx.SaveChanges(); } }
public decimal SaveEntityItems(IList<T_ENTITY_ITEM> entityList, decimal active = Tag.EntityItemTag.Active.DoneSave) { // 1.从库中提取要更新的数据,根据要更新数据的ItemId // 2.与库中数据行做对比,判断要更新的数据执行新增还是更新操作 // 3.新增和更新状态暂存于要更新的数据的create_seq字段,-100新增 -200更新 // 4.要新增的数据add到表中 // 5.要更新的数据赋值到从数据库中提取的旧数据上,savechange时或被当作更新的 // 6.提交入库 //TODO:尚未测试 using (var ctx = new OAContext()) { //using (var scope = new TransactionScope()) //事务 { var update = -200; var insert = -100; // 获取相对应的旧实体项 var old = from t in ctx.T_ENTITY_ITEM where entityList.Select(p => p.ENTITY_ITEM_ID).Contains(t.ENTITY_ITEM_ID) select t; //读库! // 循环要更新的list,进行增、改筛选 foreach (var n in entityList) { var o = old.SingleOrDefault(p => p.ENTITY_ITEM_ID == n.ENTITY_ITEM_ID); if (o != null) //如果库中存在旧数据 { if (o.ITEM_VALUE_TYPE_TI == n.ITEM_VALUE_TYPE_TI && o.ITEM_VALUE.Equals(n.ITEM_VALUE) && o.ITEM_VALUE_BINARY.Equals(n.ITEM_VALUE_BINARY)) // 值类型相同 + 普通值相同 + 二进制对象值相同 = 值相同 { // 暂存状态 = 更新 n.CREATE_SEQ = update; } else // 值不同 { if (o.ACTIVE_TI == EntityItemTag.Active.DoneSave) // 状态正式 = 新增 { n.CREATE_SEQ = insert; } else // 内容不同 + 状态暂存 = 更新 { n.CREATE_SEQ = update; } } } else //库中没有的数据,直接新增 { n.CREATE_SEQ = insert; //新增 } n.ACTIVE_TI = active; //存储状态 n.TS = DateTime.Now; //更新时间戳 if (n.CREATE_SEQ == insert) { n.ENTITY_ITEM_ID = this.BuildID(); //产生新ItemId ctx.T_ENTITY_ITEM.Add(n); //新增入库 } else if (n.CREATE_SEQ == update) { o = n; //库中旧行赋于新值 } } var re = ctx.SaveChanges(); //写库! //scope.Complete(); return re; } } }
public decimal SaveEntities(IList<T_ENTITY> entityList, decimal active=Tag.EntityTag.Active.DoneSave) { //TODO:尚未测试,逻辑也为检验 using (var ctx = new OAContext()) { foreach (var e in entityList) { if (e.RS == null) { e.ACTIVE_TI = active; //设置新加实体的激活状态 ctx.T_ENTITY.Add(e); } else { ctx.T_ENTITY.Attach(e); ctx.Entry<T_ENTITY>(e).State = EntityState.Modified; } } return ctx.SaveChanges(); } }
public IList<T_ENTITY> GetEntityListByWork(decimal workId) { using (var ctx = new OAContext()) { var re = ctx.T_ENTITY.Where(p => p.RS == 1 && p.WORK_ID == workId); return re.ToList(); } }
public RepositoryBase(OAContext DbContext) { Db = DbContext; }
public IList<T_ENTITY_ITEM> GetEntityItems(decimal entityId, decimal? userId = null) { using (var ctx = new OAContext()) { #region //var re = // ctx.T_ENTITY_ITEM.SqlQuery(@" //select * from t_entity_item // where rs = 1 and entity_id = :p0 // and ts = (select max(t.ts) from t_entity_item t // where t.rs = 1 and t.entity_id = :p0)", entityId);//DONE:仅按时间戳筛选最新,也许不严谨 // return re.ToList(); //DONE:修复换用以下逻辑。上面的是每次输入都存一遍所有输入项,应该是下面的只存有改变的输入项 //select r.* from t_entity_item r inner join //( // select t.model_item_id,max(t.ts) ts from t_entity_item t // where t.model_id=:mid // group by t.model_item_id --按ModelItem分组,取得组中最新的Ts //) e on r.model_item_id=e.model_item_id and r.ts=e.ts and r.rs=1 --按modelItemId和ts链接 //where r.entity_id=:eid //--有可能有ts相等的同ModelItemId的,需要筛选 //select * // from t_entity_item // where create_seq in // (select max(t.create_seq) create_seq // from t_entity_item t // where (t.active_ti = :正式 or (t.user_id = :当前用户 and t.active_ti = :暂存)) // and t.model_item_id in // (select model_item_id // from t_model_item // where model_id = // (select model_id from t_entity where entity_id = :实体)) // group by t.model_item_id) #endregion //DONE:新查询逻辑,一切都搞定 // 1.根据实体的模型的模型项获取相关实体项 // 2.对实体项按模型项分组,取创建序列最大(最新)的项,即获取每个模型项最新的实体项 // 3.默认返回全正式的实体项,如果传入用户则返回用户能看到的最新数据(有暂存返回暂存,没暂存返回最新正式) var sqlstr = string.Format(@" select * from t_entity_item where create_seq in (select max(t.create_seq) create_seq from t_entity_item t where (t.active_ti = {0} {1}) and t.model_item_id in (select model_item_id from t_model_item where model_id = (select model_id from t_entity where entity_id = {2})) group by t.model_item_id)", EntityItemTag.Active.DoneSave, userId == null ? "" : string.Format(@"or (t.user_id = {0} and t.active_ti = {1})", userId, EntityItemTag.Active.QuickSave), entityId); var re = ctx.T_ENTITY_ITEM.SqlQuery(sqlstr); return re.ToList(); } }
public CustomerRepository(OAContext DbContext) : base(DbContext) { Db = DbContext; }
/// <summary> /// 获取流程可用输入项 T_MODEL_ITEM /// </summary> /// <param name="flowId"></param> /// <returns></returns> public IList<T_MODEL_ITEM> GetFlowInputs(decimal flowId) { using (var ctx = new OAContext()) { // 先获取可用流程,在获取流程的输入项 var re = ctx.T_MODEL_ITEM.SqlQuery(@"select * from t_model_item where rs=1 and model_id in (select model_id from t_model where org_id = (select org_id from t_flow where flow_id=:p0) or org_id is null)", flowId); return re.ToList(); } }