/// <summary> /// 获取我的下属对象 /// </summary> private string GetMyUnderlingObjects(DataRow row) { var key = default(string); if (row.Table.Columns.Contains("Key") && !string.IsNullOrEmpty(row["Key"].AsString())) { key = row["Key"].AsString(); } using (var conn = new SqlConnection(PubConstant.hmWyglConnectionString)) { var reportObject = new List <ReportObjectModel>(); var sql = @"SELECT a.Id,a.MyUserCode AS UserCode,b.UserName AS UserName,b.RoleName, (SELECT STUFF( (SELECT '--' + Value FROM ( SELECT TOP 2 * FROM SplitString(b.DepName,'--',1) ORDER BY Id DESC ) AS t ORDER BY Id FOR XML PATH('')), 1, 2, '')) AS DepName FROM Tb_OAPublicWork_WorkRecordNoticeUser a LEFT JOIN view_Sys_UserRole_Filter b ON a.ToUserCode=b.UserCode WHERE ToUserCode=@UserCode"; if (!string.IsNullOrEmpty(key)) { sql += " AND (UserName LIKE @Key OR RoleName LIKE @Key OR DepName LIKE @Key)"; } var data = conn.Query(sql, new { UserCode = Global_Var.LoginUserCode, Key = $"%{key}%" }); foreach (var item in data) { var tmp = reportObject.Find(obj => obj.UserCode == item.UserCode); if (tmp == null) { tmp = new ReportObjectModel() { Id = item.Id, UserCode = item.UserCode, UserName = item.UserName, RoleInfo = new List <string>() }; reportObject.Add(tmp); } tmp.RoleInfo.Add(((item.DepName ?? "") + "," + item.RoleName).ToString().Trim(',')); } return(new ApiResult(true, reportObject).toJson()); } }
public ActionResult ReportTablePartial(string keysJSON) { //keysJSON - json строка с id объектов и дефектов, выбранных в чекбоксах. В строке подряд идут id объекта, затем id его дефектов var keys = JsonConvert.DeserializeObject <Guid[]>(keysJSON); List <ReportObjectModel> reportObjects = new List <ReportObjectModel>(); //модель для вьюхи foreach (var key in keys) { Объект pitObject = db.Объект.FirstOrDefault(o => o.id == key); //если id из массива принадлежит Объекту if (pitObject != null) { //добавляем в модель объект, участок газопровода, имя ЛПУ ReportObjectModel tempObj = new ReportObjectModel(); tempObj.pitObject = pitObject; tempObj.sectionTube = db.Участок_газопровода.FirstOrDefault(f => f.id == pitObject.id_участка_газопровода).Наименование; tempObj.lpuName = db.ЛПУ.FirstOrDefault(f => f.id == pitObject.id_ЛПУ).Наименование; reportObjects.Add(tempObj); } else // //если id из массива принадлежит Дефекту - добавляем дефекты к ОБъекту { ReportDefectModel tempDef = new ReportDefectModel(); Дефект def = db.Дефект.FirstOrDefault(d => d.id == key); tempDef.defectID = def.id; tempDef.vtd = db.Внутритрубная_диагностика.FirstOrDefault(v => v.id == def.id_ВТД); tempDef.ddo = db.ДДО.FirstOrDefault(d => d.id == def.id_ДДО); tempDef.repair = db.емонт.FirstOrDefault(r => r.id == def.id_Ремонта); tempDef.defKind = db.Виды_дефектов.FirstOrDefault(i => i.id == tempDef.vtd.id_виды_дефектов); tempDef.ddoResult = db.езультаты_ДДО.FirstOrDefault(i => i.id == tempDef.ddo.id_результаты_ДДО); tempDef.repKind = db.Виды_ремонта.FirstOrDefault(i => i.id == tempDef.repair.id_виды_ремонта); tempDef.id_признак_состояния = (int)def.id_признак_состояния; reportObjects.Last().defects.Add(tempDef); //добавляем к последнему добавленному объекту дефект } } //ViewBag.reportObjects = reportObjects; return(PartialView(reportObjects)); //reportObjects экспортировать в EXEL }
/// <summary> /// 获取我的汇报对象 /// </summary> private string GetMyReportObjects() { using (var conn = new SqlConnection(PubConstant.hmWyglConnectionString)) { var reportObject = new List <ReportObjectModel>(); var sql = @"SELECT a.Id,a.ToUserCode AS UserCode,b.UserName AS UserName,b.RoleName, (SELECT STUFF( (SELECT '--' + Value FROM ( SELECT TOP 2 * FROM SplitString(b.DepName,'--',1) ORDER BY Id DESC ) AS t ORDER BY Id FOR XML PATH('')), 1, 2, '')) AS DepName FROM Tb_OAPublicWork_WorkRecordNoticeUser a LEFT JOIN view_Sys_UserRole_Filter b ON a.ToUserCode=b.UserCode WHERE MyUserCode=@UserCode"; var data = conn.Query(sql, new { UserCode = Global_Var.LoginUserCode }); foreach (var item in data) { var tmp = reportObject.Find(obj => obj.UserCode == item.UserCode); if (tmp == null) { tmp = new ReportObjectModel() { Id = item.Id, UserCode = item.UserCode, UserName = item.UserName, RoleInfo = new List <string>() }; reportObject.Add(tmp); } tmp.RoleInfo.Add(((item.DepName ?? "") + "," + item.RoleName).ToString().Trim(',')); } return(new ApiResult(true, reportObject).toJson()); } }