namespace BLL { using System.Collections.Generic; using System.Linq; using Model; using System; using Newtonsoft.Json; using Microsoft.SqlServer.Dts.Runtime; using System.Runtime.Caching; public static class ProjectService { public static SGGLDB db = Funs.DB; /// ///获取项目信息 /// /// public static Model.Base_Project GetProjectByProjectId(string projectId) { return Funs.DB.Base_Project.FirstOrDefault(e => e.ProjectId == projectId); } /// ///根据ID获取项目名称 /// /// public static string GetProjectNameByProjectId(string projectId) { string name = string.Empty; var project = Funs.DB.Base_Project.FirstOrDefault(e => e.ProjectId == projectId); if (project != null) { name = project.ProjectName; } return name; } /// ///根据ID获取项目编号 /// /// public static string GetProjectCodeByProjectId(string projectId) { string name = string.Empty; var project = Funs.DB.Base_Project.FirstOrDefault(e => e.ProjectId == projectId); if (project != null) { name = project.ProjectCode; } return name; } /// ///根据ID获取项目编号 /// /// public static string GetJTProjectCodeByProjectId(string projectId) { string name = string.Empty; var project = Funs.DB.Base_Project.FirstOrDefault(e => e.ProjectId == projectId); if (project != null) { name = project.JTProjectCode; if (string.IsNullOrEmpty(name)) { name = project.ProjectCode; } } return name; } public static Model.Base_Project GetProjectByProjectShortName(string name) { return Funs.DB.Base_Project.FirstOrDefault(e => e.ShortName == name); } public static Model.Base_Project GetProjectByProjectName(string name) { return Funs.DB.Base_Project.FirstOrDefault(e => e.ProjectName == name); } public static Model.Base_Project GetProjectByProjectCode(string code) { return Funs.DB.Base_Project.FirstOrDefault(e => e.ProjectCode == code); } /// ///获取项目简称 /// /// public static string GetShortNameByProjectId(string projectId) { string name = string.Empty; var project = Funs.DB.Base_Project.FirstOrDefault(e => e.ProjectId == projectId); if (project != null) { name = project.ShortName; } return name; } /// /// 增加项目信息 /// /// public static void AddProject(Model.Base_Project project) { Model.SGGLDB db = Funs.DB; Model.Base_Project newProject = new Base_Project { ProjectId = project.ProjectId, ProjectCode = project.ProjectCode, JTProjectCode = project.JTProjectCode, ProjectName = project.ProjectName, StartDate = project.StartDate, EndDate = project.EndDate, ProjectAddress = project.ProjectAddress, ContractNo = project.ContractNo, WorkRange = project.WorkRange, Duration = project.Duration, ShortName = project.ShortName, ProjectType = project.ProjectType, PostCode = project.PostCode, Remark = project.Remark, ProjectState = project.ProjectState, ProjectState2 = project.ProjectState2, IsUpTotalMonth = project.IsUpTotalMonth, UnitId = project.UnitId, ProjectMainPerson = project.ProjectMainPerson, ProjectLiaisonPerson = project.ProjectLiaisonPerson, IsForeign = project.IsForeign, FromProjectId = project.FromProjectId, MapCoordinates = project.MapCoordinates, ProjectMoney = project.ProjectMoney, ConstructionMoney = project.ConstructionMoney, Telephone = project.Telephone, Country = project.Country, Province = project.Province, City = project.City, EnglishRemark = project.EnglishRemark, HJProjectCode = project.HJProjectCode, KZProjectCode = project.KZProjectCode, Progress = project.Progress, ProjType = project.ProjType, ProjPhase = project.ProjPhase, MasterSysId = project.MasterSysId, }; db.Base_Project.InsertOnSubmit(newProject); db.SubmitChanges(); HSEDataCollectService.ProjectHSEDataCollectSubmission(newProject); } /// ///修改项目信息 /// /// public static void UpdateProject(Model.Base_Project project) { SGGLDB db = Funs.DB; Base_Project newProject = db.Base_Project.FirstOrDefault(e => e.ProjectId == project.ProjectId); if (newProject != null) { newProject.ProjectCode = project.ProjectCode; newProject.JTProjectCode = project.JTProjectCode; newProject.ProjectName = project.ProjectName; newProject.StartDate = project.StartDate; newProject.EndDate = project.EndDate; newProject.ProjectAddress = project.ProjectAddress; newProject.ShortName = project.ShortName; newProject.ContractNo = project.ContractNo; newProject.WorkRange = project.WorkRange; newProject.Duration = project.Duration; newProject.ProjectType = project.ProjectType; newProject.PostCode = project.PostCode; newProject.Remark = project.Remark; newProject.ProjectState = project.ProjectState; newProject.ProjectState2 = project.ProjectState2; newProject.IsUpTotalMonth = project.IsUpTotalMonth; newProject.UnitId = project.UnitId; newProject.ProjectMainPerson = project.ProjectMainPerson; newProject.ProjectLiaisonPerson = project.ProjectLiaisonPerson; newProject.IsForeign = project.IsForeign; newProject.FromProjectId = project.FromProjectId; newProject.MapCoordinates = project.MapCoordinates; newProject.ProjectMoney = project.ProjectMoney; newProject.ConstructionMoney = project.ConstructionMoney; newProject.Telephone = project.Telephone; newProject.Country = project.Country; newProject.Province = project.Province; newProject.City = project.City; newProject.EnglishRemark = project.EnglishRemark; newProject.HJProjectCode = project.HJProjectCode; newProject.KZProjectCode = project.KZProjectCode; newProject.Progress = project.Progress; newProject.ProjType = project.ProjType; newProject.ProjPhase = project.ProjPhase; newProject.MasterSysId = project.MasterSysId; db.SubmitChanges(); HSEDataCollectService.ProjectHSEDataCollectSubmission(newProject); } } /// /// 根据项目Id删除一个项目信息 /// /// public static void DeleteProject(string projectId) { SGGLDB db = Funs.DB; Base_Project project = db.Base_Project.FirstOrDefault(e => e.ProjectId == projectId); if (project != null) { db.Base_Project.DeleteOnSubmit(project); db.SubmitChanges(); } } /// /// 获取施工中项目集合 /// /// public static List GetProjectWorkList() { var list = (from x in Funs.DB.Base_Project where x.ProjectState == null || x.ProjectState == BLL.Const.ProjectState_1 orderby x.ProjectCode descending select x).ToList(); return list; } /// /// 获取项目下拉选项 /// /// public static List GetProjectDropDownListByState(string state) { if (state == BLL.Const.ProjectState_1) //施工 { var list = (from x in Funs.DB.Base_Project where x.ProjectState == state || x.ProjectState == null orderby x.ProjectCode descending select x).ToList(); return list; } else { var list = (from x in Funs.DB.Base_Project where x.ProjectState == state orderby x.ProjectCode descending select x).ToList(); return list; } } /// /// 获取项目下拉选项 /// /// public static List GetAllProjectDropDownList(string[] pids = null) { string cacheKey = "allProjects"; var memoryCache = MemoryCache.Default; if (memoryCache.Get(cacheKey) != null) { var result = (List)memoryCache.Get(cacheKey); if (pids == null) { return result; } else { result = result.Where(e => pids.Contains(e.ProjectId)).ToList(); return result; } } else { var list = (from x in Funs.DB.Base_Project where x.ProjectState == Const.ProjectState_1 || x.ProjectState == null orderby x.ProjectCode descending select x).ToList(); var policy = new CacheItemPolicy { AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(Const.CacheMinutes), }; memoryCache.Set(cacheKey, list, policy); if (pids == null) { return list; } else { var result = list.Where(e => pids.Contains(e.ProjectId)).ToList(); return result; } } } /// /// 获取某类型下项目下拉选项 /// /// public static List GetProjectByProjectTypeDropDownList(string projectType) { var list = (from x in Funs.DB.Base_Project where x.ProjectType == projectType orderby x.ProjectCode descending select x).ToList(); return list; } /// /// 获取userId参与项目下拉框 /// /// public static List GetProjectByUserIdDropDownList(string userId) { if (userId == Const.sysglyId || userId == Const.hfnbdId || userId == Const.sedinId) { return (from x in Funs.DB.Base_Project orderby x.ProjectCode descending select x).ToList(); } var getUser = UserService.GetUserByUserId(userId); if (getUser != null) { /// 获取角色类型 var getRoleP = Funs.DB.Sys_RolePower.FirstOrDefault(x => x.RoleId == getUser.RoleId && x.IsOffice == false); if (getRoleP != null) { return (from x in Funs.DB.Base_Project orderby x.ProjectCode descending select x).ToList(); } else { return (from x in Funs.DB.Base_Project join y in Funs.DB.Project_ProjectUser on x.ProjectId equals y.ProjectId where y.UserId == userId && y.IsPost == true orderby x.ProjectCode descending select x).Distinct().ToList(); } } else { return null; } } /// /// 获取userId参与项目下拉框 /// /// public static List GetProjectByUserIdStateDropDownList(string userId, string state, string urlType = "") { if (userId == Const.sysglyId || userId == Const.hfnbdId || userId == Const.sedinId) { return (from x in Funs.DB.Base_Project where x.ProjectState == state orderby x.ProjectCode descending select x).ToList(); } var getUser = UserService.GetUserByUserId(userId); if (getUser != null) { /// 获取角色类型 var getRoleP = Funs.DB.Sys_RolePower.FirstOrDefault(x => x.RoleId == getUser.RoleId && x.IsOffice == false); //如果是项目级别,获取到他的类型后,并且还要单位是五环的 if (!string.IsNullOrEmpty(urlType)) { //五环的能看所有项目,否则只能看项目用户中有自己或者所属单位是自己单位的 if (getRoleP != null && getUser.UnitId == Const.UnitId_CWCEC) { return (from x in Funs.DB.Base_Project where x.ProjectState == state orderby x.ProjectCode descending select x).ToList(); } else { return (from x in Funs.DB.Base_Project join y in Funs.DB.Project_ProjectUser on x.ProjectId equals y.ProjectId where ((y.UserId == userId && y.IsPost == true) || x.UnitId == getUser.UnitId) && x.ProjectState == state orderby x.ProjectCode descending select x).Distinct().ToList(); } } else { if (getRoleP != null) { return (from x in Funs.DB.Base_Project where x.ProjectState == state orderby x.ProjectCode descending select x).ToList(); } else { return (from x in Funs.DB.Base_Project join y in Funs.DB.Project_ProjectUser on x.ProjectId equals y.ProjectId where y.UserId == userId && y.IsPost == true && x.ProjectState == state orderby x.ProjectCode descending select x).Distinct().ToList(); } } } else { return null; } } #region 项目表下拉框 /// /// 项目表下拉框 /// /// 下拉框名字 /// 是否显示请选择 public static void InitProjectDropDownList(FineUIPro.DropDownList dropName, bool isShowPlease) { dropName.DataValueField = "ProjectId"; dropName.DataTextField = "ProjectName"; dropName.DataSource = BLL.ProjectService.GetProjectWorkList(); dropName.DataBind(); if (isShowPlease) { Funs.FineUIPleaseSelect(dropName); } } /// /// 项目表下拉框 /// /// 下拉框名字 /// 是否显示请选择 public static void InitAllProjectDropDownList(FineUIPro.DropDownList dropName, bool isShowPlease) { dropName.DataValueField = "ProjectId"; dropName.DataTextField = "ProjectName"; var projectlist = BLL.ProjectService.GetAllProjectDropDownList(); dropName.DataSource = projectlist; dropName.DataBind(); if (projectlist.Count() == 0) { isShowPlease = true; } if (isShowPlease) { Funs.FineUIPleaseSelect(dropName); } } /// /// 项目表下拉框 /// /// 下拉框名字 /// 是否显示请选择 public static void InitAllProjectDropDownList2(FineUIPro.DropDownList dropName, bool isShowPlease) { dropName.DataValueField = "ProjectId"; dropName.DataTextField = "ProjectName"; var projectlist = BLL.ProjectService.GetAllProjectDropDownList(); Model.Base_Project project = new Base_Project(); project.ProjectId = "0"; project.ProjectName = "本部"; List list = new List(); list.Add(project); list.AddRange(projectlist); dropName.DataSource = list; dropName.DataBind(); if (projectlist.Count() == 0) { isShowPlease = true; } if (isShowPlease) { Funs.FineUIPleaseSelect(dropName); } } /// /// /// /// /// /// public static void InitAllProjectShortNameDropDownList(FineUIPro.DropDownList dropName, string userId, bool isShowPlease) { dropName.DataValueField = "ProjectId"; dropName.DataTextField = "ProjectName"; var projectlist = GetProjectByUserIdDropDownList(userId); dropName.DataSource = projectlist; dropName.DataBind(); if (projectlist.Count() == 0) { isShowPlease = true; } if (isShowPlease) { Funs.FineUIPleaseSelect(dropName); } } /// /// /// /// /// /// public static void InitProjectShortNameByStateDropDownList(FineUIPro.DropDownList dropName, string userId, string state, bool isShowPlease, string urlType = "") { dropName.DataValueField = "ProjectId"; dropName.DataTextField = "ProjectName"; var projectlist = GetProjectByUserIdStateDropDownList(userId, state, urlType); dropName.DataSource = projectlist; dropName.DataBind(); if (projectlist.Count() == 0) { isShowPlease = true; } if (isShowPlease) { Funs.FineUIPleaseSelect(dropName); } } /// /// 某类型下项目表下拉框 /// /// 下拉框名字 /// 是否显示请选择 public static void InitProjectByProjectTypeDropDownList(FineUIPro.DropDownList dropName, string projectType, bool isShowPlease) { dropName.DataValueField = "ProjectId"; dropName.DataTextField = "ProjectName"; var projectlist = BLL.ProjectService.GetProjectByProjectTypeDropDownList(projectType); dropName.DataSource = projectlist; dropName.DataBind(); if (projectlist.Count() == 0) { isShowPlease = true; } if (isShowPlease) { Funs.FineUIPleaseSelect(dropName); } } #endregion #region 获取项目经理、施工经理、安全经理、质量经理、开车经理 /// /// 项目经理 /// /// /// public static string GetProjectManagerName(string projectId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { string name = string.Empty; if (projectId != null) { name = (from x in db.Base_Project join y in db.Project_ProjectUser on x.ProjectId equals y.ProjectId join z in db.Sys_User on y.UserId equals z.UserId where x.ProjectId == projectId && y.RoleId.Contains(BLL.Const.ProjectManager) select z.UserName).FirstOrDefault(); } return name; } } /// /// 施工经理 /// /// /// public static string GetConstructionManagerName(string projectId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { string name = string.Empty; if (projectId != null) { name = (from x in db.Base_Project join y in db.Project_ProjectUser on x.ProjectId equals y.ProjectId join z in db.Sys_User on y.UserId equals z.UserId where x.ProjectId == projectId && y.RoleId.Contains(BLL.Const.ConstructionManager) select z.UserName).FirstOrDefault(); } return name; } } /// /// 安全经理 /// /// /// public static string GetHSSEManagerName(string projectId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { string name = string.Empty; if (projectId != null) { name = (from x in db.Project_ProjectUser join y in db.Sys_User on x.UserId equals y.UserId where x.ProjectId == projectId && x.RoleId.Contains(BLL.Const.HSSEManager) select y.UserName).FirstOrDefault(); } return name; } } /// /// 获取安全经理 /// /// /// public static Model.Project_ProjectUser getHSSEManager(string projectId) { return Funs.DB.Project_ProjectUser.FirstOrDefault(x => x.ProjectId == projectId && x.RoleId.Contains(BLL.Const.HSSEManager)); } /// /// 质量经理 /// /// /// public static string GetQAManagerName(string projectId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { string name = string.Empty; if (projectId != null) { name = (from x in db.Base_Project join y in db.Project_ProjectUser on x.ProjectId equals y.ProjectId join z in db.Sys_User on y.UserId equals z.UserId where x.ProjectId == projectId && y.RoleId.Contains(BLL.Const.QAManager) select z.UserName).FirstOrDefault(); } return name; } } /// /// 开车经理 /// /// /// public static string GetDriveManagerName(string projectId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { string name = string.Empty; if (projectId != null) { name = (from x in db.Base_Project join y in db.Project_ProjectUser on x.ProjectId equals y.ProjectId join z in db.Sys_User on y.UserId equals z.UserId where x.ProjectId == projectId && y.RoleId.Contains(BLL.Const.DriveManager) select z.UserName).FirstOrDefault(); } return name; } } #endregion /// /// 获取项目各单位类型单位名称 /// /// /// /// public static string getProjectUnitNameByUnitType(string projectId, string unitType) { string unitName = string.Empty; if (!string.IsNullOrEmpty(projectId)) { var getUnitName = from x in Funs.DB.Project_ProjectUnit join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId where x.ProjectId == projectId.ToString() && x.UnitType == unitType select y.UnitName; if (getUnitName.Count() > 0) { unitName = Funs.GetStringByArray(getUnitName.ToArray()); } } return unitName; } /// ///获取项目材料软件ID /// /// public static long GetCLProjectCodeByProjectId(string projectId) { long code = 0; var project = Funs.DB.Base_Project.FirstOrDefault(e => e.ProjectId == projectId); if (project != null) { code = project.CLProjectCode ?? 0; } return code; } /// /// 获取施工中项目集合 /// /// public static List GetProjectWorkList(string unitId) { var getDatas = from x in Funs.DB.Base_Project where (x.ProjectState == null || x.ProjectState == BLL.Const.ProjectState_1) select x; if (unitId == BLL.Const.UnitId_CWCEC) { getDatas = getDatas.Where(x => x.UnitId == unitId || x.UnitId == null); } else { getDatas = getDatas.Where(x => x.UnitId == unitId); } var list = getDatas.OrderBy(x => x.ProjectName).ToList(); return list; } #region 加载公司级别项目 public static List GetUnEndProjectByUserIdDropDownList(string projectState, string projectName = null, string projectCode = null) { IQueryable projects = (from x in Funs.DB.Base_Project where x.ProjectState == projectState orderby x.ProjectCode descending select x); if (!string.IsNullOrEmpty(projectName)) { projects = from x in projects where x.ProjectName.Contains(projectName) select x; } if (!string.IsNullOrEmpty(projectCode)) { projects = from x in projects where x.ProjectCode.Contains(projectCode) select x; } return (from x in projects join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId select x).Distinct().ToList(); } #endregion /// /// 获取主数据项目 /// /// public static List GetMasterProjectInfos() { var thisUnit = CommonService.GetIsThisUnit(); Dictionary dic = new Dictionary() { {"collCropCode", thisUnit.CollCropCode} }; List projectlist = new List(); var returnData = ServerService.GerDataFromCncec("/api/Common/GetMasterDataProjectByCollCropCode", dic, null); if (returnData != null && returnData.code == 1) { projectlist = JsonConvert.DeserializeObject>(returnData.data.ToString()); } return projectlist; } /// /// 获取主数据项目(下拉框) /// /// /// public static void InitMasterProjectDropDownList(FineUIPro.DropDownList dropName, bool isShowPlease) { dropName.DataValueField = "SysId"; dropName.DataTextField = "PrjName"; var thisUnit = CommonService.GetIsThisUnit(); Dictionary dic = new Dictionary() { {"collCropCode", thisUnit.CollCropCode} }; List projectlist = new List(); var returnData = ServerService.GerDataFromCncec("api/Common/GetMasterDataProjectByCollCropCode", dic, null); if (returnData != null && returnData.code == 1) { projectlist = JsonConvert.DeserializeObject>(returnData.data.ToString()); } dropName.DataSource = projectlist; dropName.DataBind(); if (projectlist.Count() == 0) { isShowPlease = true; } if (isShowPlease) { Funs.FineUIPleaseSelect(dropName); } } } }