using System; using Model; using System.Collections.Generic; using System.Linq; namespace BLL { /// /// 企业级检查明细服务 /// public static class UnitHazardRegisterItemService { #region Methods /// /// 添加明细记录 /// /// 明细记录 public static void AddUnitHazardRegisterItem(Model.Supervise_UnitHazardRegisterItem item) { Funs.DB.Supervise_UnitHazardRegisterItem.InsertOnSubmit(item); Funs.DB.SubmitChanges(); } /// /// 根据主表ID删除所有明细 /// /// 主表ID public static void DeleteItemsByRegisterId(string registerId) { var items = (from x in Funs.DB.Supervise_UnitHazardRegisterItem where x.UnitHazardRegisterId == registerId select x).ToList(); if (items.Count > 0) { Funs.DB.Supervise_UnitHazardRegisterItem.DeleteAllOnSubmit(items); Funs.DB.SubmitChanges(); } } /// /// 删除明细记录 /// /// 明细ID public static void DeleteUnitHazardRegisterItemById(string itemId) { Model.Supervise_UnitHazardRegisterItem item = Funs.DB.Supervise_UnitHazardRegisterItem.FirstOrDefault(e => e.UnitHazardRegisterItemId == itemId); if (item != null) { Funs.DB.Supervise_UnitHazardRegisterItem.DeleteOnSubmit(item); Funs.DB.SubmitChanges(); } } /// /// 根据风险级别获取明细数量 /// /// 主表ID /// 风险级别 /// 明细数量 public static int GetCountByRiskLevel(string registerId, string riskLevel) { return (from x in Funs.DB.Supervise_UnitHazardRegisterItem where x.UnitHazardRegisterId == registerId && x.RiskLevel == riskLevel select x).Count(); } /// /// 获取已完成的明细数量 /// /// 主表ID /// 已完成数量 public static int GetFinishedCount(string registerId) { return (from x in Funs.DB.Supervise_UnitHazardRegisterItem where x.UnitHazardRegisterId == registerId && x.CompleteStatus == 1 select x).Count(); } /// /// 根据主表ID获取明细列表 /// /// 主表ID /// 明细列表 public static List GetItemsByRegisterId(string registerId) { return (from x in Funs.DB.Supervise_UnitHazardRegisterItem where x.UnitHazardRegisterId == registerId orderby x.SortIndex select x).ToList(); } /// /// 获取主单的整改状态 /// /// 主单ID /// 整改状态:0=全部未整改,1=部分整改,2=全部整改 public static int GetRectifyStatus(string registerId) { var items = GetItemsByRegisterId(registerId); if (items.Count == 0) { return 0; // 无明细,视为全部未整改 } int finishedCount = items.Count(x => x.CompleteStatus == 1); int totalCount = items.Count; if (finishedCount == 0) { return 0; // 全部未整改 } else if (finishedCount < totalCount) { return 1; // 部分整改 } else { return 2; // 全部整改 } } /// /// 获取整改状态文本 /// /// 主单ID /// 状态文本 public static string GetRectifyStatusText(string registerId) { int status = GetRectifyStatus(registerId); switch (status) { case 0: return "全部未整改"; case 1: return "部分整改"; case 2: return "全部整改"; default: return "未知"; } } /// /// 获取未完成的明细数量 /// /// 主表ID /// 未完成数量 public static int GetUnfinishedCount(string registerId) { return (from x in Funs.DB.Supervise_UnitHazardRegisterItem where x.UnitHazardRegisterId == registerId && (x.CompleteStatus == null || x.CompleteStatus == 0) select x).Count(); } /// /// 根据明细ID获取明细记录 /// /// 明细ID /// 明细记录 public static Model.Supervise_UnitHazardRegisterItem GetUnitHazardRegisterItemById(string itemId) { return Funs.DB.Supervise_UnitHazardRegisterItem.FirstOrDefault(e => e.UnitHazardRegisterItemId == itemId); } /// /// 获取企业级检查明细列表(使用input对象,返回总数) /// /// 查询条件 /// 页码(从0开始) /// 每页大小 /// 是否返回所有数据(不分页) /// 总记录数 /// 检查明细列表 public static List GetUnitHazardRegisterItems( UnitHazardRegisterItemInput input, int pageIndex, int pageSize, bool returnAll, out int totalCount) { var db = Funs.DB; var query = from i in db.Supervise_UnitHazardRegisterItem join r in db.Supervise_UnitHazardRegister on i.UnitHazardRegisterId equals r.UnitHazardRegisterId join ct in db.Base_SuperviseCheckType on new { MainType = r.CheckMainType, TypeCode = r.CheckType } equals new { MainType = ct.CheckMainType, TypeCode = ct.CheckTypeCode } into ctGroup from ct in ctGroup.DefaultIfEmpty() join u in db.Base_Unit on r.CheckUnitId equals u.UnitId into uGroup from u in uGroup.DefaultIfEmpty() join user in db.Sys_User on r.InsResponsibleUserId equals user.UserId into userGroup from user in userGroup.DefaultIfEmpty() select new UnitHazardRegisterItemOutput { UnitHazardRegisterItemId = i.UnitHazardRegisterItemId, UnitHazardRegisterCode = r.UnitHazardRegisterCode, CheckDate = r.CheckDate, CheckMainTypeName = r.CheckMainType == "0" ? "安全" : "质量", CheckTypeName = ct.CheckTypeName, ProblemDescription = i.ProblemDescription, ProblemType = i.ProblemType, RiskLevel = i.RiskLevel, RectifyRequirement = i.RectifyRequirement, StatesName = UnitHazardRegisterService.ConvertState(r.States.Value), CheckTeam = r.CheckTeam, ProjectId = r.ProjectId, CheckUnitName = u.UnitName, States = r.States, ProblemStatesName = i.CompleteStatus==1 ? "已整改":"未整改", ProblemStates = i.CompleteStatus, InsResponsibleUserId = r.InsResponsibleUserId, InsResponsibleUserName= user.UserName }; // 应用检查大类过滤 if (input != null && !string.IsNullOrEmpty(input.CheckMainType)) { query = query.Where(x => x.CheckMainTypeName.Contains(input.CheckMainType == "0" ? "安全" : "质量")); } // 项目id过滤 if (input != null && !string.IsNullOrEmpty(input.ProjectId)) { query = query.Where(x => x.ProjectId.Contains(input.ProjectId)); } // 检查组/人搜索 if (input != null && !string.IsNullOrEmpty(input.CheckTeam)) { query = query.Where(x => x.CheckTeam.Contains(input.CheckTeam)); } // 检查类别搜索 if (input != null && !string.IsNullOrEmpty(input.CheckType)) { query = query.Where(x => x.CheckTypeName != null && x.CheckTypeName.Contains(input.CheckType)); } // 问题描述搜索 if (input != null && !string.IsNullOrEmpty(input.Problem)) { query = query.Where(x => x.ProblemDescription.Contains(input.Problem)); } // 检查时间范围 if (input != null && input.StartTime.HasValue) { query = query.Where(x => x.CheckDate >= input.StartTime.Value); } if (input != null && input.EndTime.HasValue) { query = query.Where(x => x.CheckDate <= input.EndTime.Value); } // 风险级别过滤 if (input != null && !string.IsNullOrEmpty(input.RiskLevel) && input.RiskLevel != "null") { query = query.Where(x => x.RiskLevel == input.RiskLevel); } // 状态过滤 if (input != null && input.States != null) { query = query.Where(x => x.States == input.States); } // 问题整改状态过滤 if (input != null && input.ProblemStates != null) { query = query.Where(x => x.ProblemStates == input.ProblemStates); } // 单位权限过滤 if (input != null && !string.IsNullOrEmpty(input.UnitId)) { var thisUnit = BLL.CommonService.GetIsThisUnit(); if (thisUnit.UnitId != input.UnitId) { // 先获取用户有权限的项目ID列表 var projectIds = (from p in Funs.DB.Base_Project where p.UnitId == input.UnitId select p.ProjectId).ToList(); // 过滤查询结果 query = query.Where(x => Funs.DB.Supervise_UnitHazardRegister .Any(r => Funs.DB.Supervise_UnitHazardRegisterItem .Any(i => i.UnitHazardRegisterItemId == x.UnitHazardRegisterItemId && i.UnitHazardRegisterId == r.UnitHazardRegisterId && projectIds.Contains(r.ProjectId)))); } } // 获取总数 totalCount = query.Count(); // 排序和分页 var orderedQuery = query.OrderByDescending(x => x.CheckDate); if (returnAll) { return orderedQuery.ToList(); } return orderedQuery .Skip(pageIndex * pageSize) .Take(pageSize) .ToList(); } /// /// 更新明细记录 /// /// 明细记录 public static void UpdateUnitHazardRegisterItem(Model.Supervise_UnitHazardRegisterItem item) { Model.Supervise_UnitHazardRegisterItem oldItem = Funs.DB.Supervise_UnitHazardRegisterItem.FirstOrDefault(e => e.UnitHazardRegisterItemId == item.UnitHazardRegisterItemId); if (oldItem != null) { oldItem.ProblemDescription = item.ProblemDescription; oldItem.ProblemType = item.ProblemType; oldItem.RiskLevel = item.RiskLevel; oldItem.RectifyRequirement = item.RectifyRequirement; oldItem.CompleteStatus = item.CompleteStatus; oldItem.CompletedDate = item.CompletedDate; oldItem.SortIndex = item.SortIndex; Funs.DB.SubmitChanges(); } } #endregion Methods } }