using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using EmitMapper; namespace BLL { public static class APIRectifyNoticesService { #region 根据RectifyNoticesId获取风险巡检信息详细信息 /// /// 根据RectifyNoticesId获取风险巡检信息详细信息 /// /// /// public static Model.RectifyNoticesItem getRectifyNoticesById(string rectifyNoticesId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getRectifyNotices = from x in db.Check_RectifyNotices where x.RectifyNoticesId == rectifyNoticesId select new Model.RectifyNoticesItem { RectifyNoticesId = x.RectifyNoticesId, ProjectId = x.ProjectId, ProjectName = db.Base_Project.First(z => z.ProjectId == x.ProjectId).ProjectName, RectifyNoticesCode = x.RectifyNoticesCode, UnitId = x.UnitId, UnitName = db.Base_Unit.First(u => u.UnitId == x.UnitId).UnitName, WorkAreaId = x.WorkAreaId, WorkAreaName = UnitWorkService.GetUnitWorkName(x.WorkAreaId), CheckManNames = x.CheckManNames, CheckManIds = x.CheckManIds, CheckManIdNames = UserService.getUserNamesUserIds(x.CheckManIds), CheckManAllNames = getCheckAllManName(x.CheckManIds, x.CheckManNames), CheckedDate = string.Format("{0:yyyy-MM-dd HH:mm}", x.CheckedDate), CheckedDateD = x.CheckedDate, HiddenHazardType = x.HiddenHazardType, HiddenHazardTypeName = x.HiddenHazardType == "2" ? "较大" : (x.HiddenHazardType == "3" ? "重大" : "一般"), CompleteManId = x.CompleteManId, CompleteManName = db.Sys_User.First(u => u.UserId == x.CompleteManId).UserName, SignPersonId = x.SignPerson, SignPersonName = db.Sys_User.First(u => u.UserId == x.SignPerson).UserName, SignDate = string.Format("{0:yyyy-MM-dd HH:mm}", x.SignDate), ProfessionalEngineerId = x.ProfessionalEngineerId, ProfessionalEngineerName = db.Sys_User.First(u => u.UserId == x.ProfessionalEngineerId).UserName, ProfessionalEngineerTime1 = string.Format("{0:yyyy-MM-dd HH:mm}", x.ProfessionalEngineerTime1), ProfessionalEngineerTime2 = string.Format("{0:yyyy-MM-dd HH:mm}", x.ProfessionalEngineerTime2), ConstructionManagerId = x.ConstructionManagerId, ConstructionManagerName = db.Sys_User.First(u => u.UserId == x.ConstructionManagerId).UserName, ConstructionManagerTime1 = string.Format("{0:yyyy-MM-dd HH:mm}", x.ConstructionManagerTime1), ConstructionManagerTime2 = string.Format("{0:yyyy-MM-dd HH:mm}", x.ConstructionManagerTime2), ProjectManagerId = x.ProjectManagerId, ProjectManagerName = db.Sys_User.First(u => u.UserId == x.ProjectManagerId).UserName, ProjectManagerTime1 = string.Format("{0:yyyy-MM-dd HH:mm}", x.ProjectManagerTime1), ProjectManagerTime2 = string.Format("{0:yyyy-MM-dd HH:mm}", x.ProjectManagerTime2), DutyPersonId = x.DutyPersonId, DutyPersonName = db.Sys_User.First(u => u.UserId == x.DutyPersonId).UserName, DutyPersonTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.DutyPersonTime), CompleteDate = string.Format("{0:yyyy-MM-dd HH:mm}", x.CompleteDate), UnitHeadManId = x.UnitHeadManId, UnitHeadManName = db.Sys_User.First(u => u.UserId == x.UnitHeadManId).UserName, UnitHeadManDate = string.Format("{0:yyyy-MM-dd HH:mm}", x.UnitHeadManDate), CheckPersonId = x.CheckPerson, CheckPersonName = db.Sys_User.First(u => u.UserId == x.CheckPerson).UserName, ReCheckDate = string.Format("{0:yyyy-MM-dd HH:mm}", x.ReCheckDate), ReCheckOpinion = x.ReCheckOpinion, //WrongContent =x.WrongContent, //CompleteStatus=x.CompleteStatus, //RectificationName=x.DutyPerson, IsRectify = x.IsRectify ?? false, States = x.States, AttachUrl = APIUpLoadFileService.getFileUrl(x.RectifyNoticesId, null), BeAttachUrl = APIUpLoadFileService.getFileUrl(x.RectifyNoticesId + "#0", null), AfAttachUrl = APIUpLoadFileService.getFileUrl(x.RectifyNoticesId + "#1", null), RectifyNoticesItemItem = getRectifyNoticesItemItem(x.RectifyNoticesId), RectifyNoticesFlowOperateItem = getRectifyNoticesFlowOperateItem(x.RectifyNoticesId), }; return getRectifyNotices.FirstOrDefault(); } } #endregion #region 根据隐患整改单ID 获取整改单明细信息 /// /// 根据隐患整改单ID 获取整改单明细信息 /// /// public static List getRectifyNoticesItemItem(string rectifyNoticesId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getInfo = from x in db.Check_RectifyNoticesItem where x.RectifyNoticesId == rectifyNoticesId orderby x.LimitTime descending select new Model.RectifyNoticesItemItem { RectifyNoticesItemId = x.RectifyNoticesItemId, RectifyNoticesId = x.RectifyNoticesId, WrongContent = x.WrongContent, Requirement = x.Requirement, LimitTime = string.Format("{0:yyyy-MM-dd HH:mm:ss}", x.LimitTime), RectifyResults = x.RectifyResults, IsRectify = x.IsRectify, PhotoBeforeUrl = APIUpLoadFileService.getFileUrl(x.RectifyNoticesItemId + "#1", null), PhotoAfterUrl = APIUpLoadFileService.getFileUrl(x.RectifyNoticesItemId + "#2", null), }; return getInfo.ToList(); } } #endregion #region 根据隐患整改单ID 获取整改单审核信息 /// /// 根据隐患整改单ID 获取整改单明细信息 /// /// public static List getRectifyNoticesFlowOperateItem(string rectifyNoticesId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getInfo = from x in db.Check_RectifyNoticesFlowOperate where x.RectifyNoticesId == rectifyNoticesId orderby x.OperateTime descending select new Model.RectifyNoticesFlowOperateItem { FlowOperateId = x.FlowOperateId, RectifyNoticesId = x.RectifyNoticesId, OperateName = x.OperateName, OperateManId = x.OperateManId, OperateManName = db.Sys_User.First(z => z.UserId == x.OperateManId).UserName, OperateTime = string.Format("{0:yyyy-MM-dd HH:mm:ss}", x.OperateTime), IsAgree = x.IsAgree, Opinion = x.Opinion, SignatureUrl = APIUpLoadFileService.getFileUrl(string.Empty, x.SignatureUrl), }; return getInfo.ToList(); } } #endregion #region 根据隐患整改单ID 获取整改单审核信息 /// /// 根据隐患整改单ID 获取整改单明细信息 /// /// public static string getCheckAllManName(string checkManIds,string checkManNames) { string name = UserService.getUserNamesUserIds(checkManIds); if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(checkManNames)) { name += "," + checkManNames; } return name; } #endregion #region 根据projectId、states获取风险信息(状态 0待提交;1待签发;2待整改;3待审核;4待复查;5已完成) /// /// 根据projectId、states获取风险信息(状态 0待提交;1待签发;2待整改;3待审核;4待复查;5已完成) /// /// /// /// public static List getRectifyNoticesByProjectIdStates(string projectId, string states, int pageIndex) { var getDataLists =Funs.DB.SP_RectifyNoticesListByProjectStates(projectId, states,pageIndex,Funs.PageSize); return getDataLists.ToList(); } #endregion #region 保存RectifyNotices /// /// 保存RectifyNotices /// /// /// public static void SaveRectifyNotices(Model.RectifyNoticesItem rectifyNotices) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { bool insertRectifyNoticesItemItem = false; Model.Check_RectifyNotices newRectifyNotices = new Model.Check_RectifyNotices { RectifyNoticesId = rectifyNotices.RectifyNoticesId, ProjectId = rectifyNotices.ProjectId, RectifyNoticesCode = rectifyNotices.RectifyNoticesCode, UnitId = rectifyNotices.UnitId, CheckManNames = rectifyNotices.CheckManNames, CheckManIds = rectifyNotices.CheckManIds, CheckedDate = Funs.GetNewDateTime(rectifyNotices.CheckedDate), HiddenHazardType = rectifyNotices.HiddenHazardType, States = rectifyNotices.States, }; if (!string.IsNullOrEmpty(rectifyNotices.WorkAreaId)) { newRectifyNotices.WorkAreaId = rectifyNotices.WorkAreaId; } if (!string.IsNullOrEmpty(rectifyNotices.CompleteManId)) { newRectifyNotices.CompleteManId = rectifyNotices.CompleteManId; } if (newRectifyNotices.States == Const.State_1) { newRectifyNotices.SignPerson = rectifyNotices.SignPersonId; } //// 新增整改单 var isUpdate = db.Check_RectifyNotices.FirstOrDefault(x => x.RectifyNoticesId == newRectifyNotices.RectifyNoticesId); if (isUpdate == null) { newRectifyNotices.RectifyNoticesId = SQLHelper.GetNewID(); newRectifyNotices.RectifyNoticesCode = CodeRecordsService.ReturnCodeByMenuIdProjectId(Const.ProjectRectifyNoticesMenuId, newRectifyNotices.ProjectId, newRectifyNotices.UnitId); db.Check_RectifyNotices.InsertOnSubmit(newRectifyNotices); db.SubmitChanges(); CodeRecordsService.InsertCodeRecordsByMenuIdProjectIdUnitId(Const.ProjectRectifyNoticesMenuId, newRectifyNotices.ProjectId, newRectifyNotices.UnitId, newRectifyNotices.RectifyNoticesId, newRectifyNotices.CheckedDate); //// 整改单附件 if (!string.IsNullOrEmpty(rectifyNotices.BeAttachUrl)) { APIUpLoadFileService.SaveAttachUrl(Const.ProjectRectifyNoticesMenuId, newRectifyNotices.RectifyNoticesId + "#0", rectifyNotices.BeAttachUrl, "0"); } //// 反馈单附件 if (!string.IsNullOrEmpty(rectifyNotices.AfAttachUrl)) { APIUpLoadFileService.SaveAttachUrl(Const.ProjectRectifyNoticesMenuId, newRectifyNotices.RectifyNoticesId + "#1", rectifyNotices.AfAttachUrl, "0"); } //// 整个单据附件 if (!string.IsNullOrEmpty(rectifyNotices.AttachUrl)) { APIUpLoadFileService.SaveAttachUrl(Const.ProjectRectifyNoticesMenuId, newRectifyNotices.RectifyNoticesId, rectifyNotices.AttachUrl, "0"); } insertRectifyNoticesItemItem = true; //// 回写巡检记录表 if (!string.IsNullOrEmpty(rectifyNotices.HazardRegisterId)) { List listIds = Funs.GetStrListByStr(rectifyNotices.HazardRegisterId, ','); foreach (var item in listIds) { var getHazardRegister = db.HSSE_Hazard_HazardRegister.FirstOrDefault(x => x.HazardRegisterId == item); if (getHazardRegister != null) { getHazardRegister.States = "3"; getHazardRegister.HandleIdea += "已升级为隐患整改单:" + newRectifyNotices.RectifyNoticesCode; getHazardRegister.ResultId = newRectifyNotices.RectifyNoticesId; getHazardRegister.ResultType = "1"; db.SubmitChanges(); } } } //// 回写专项检查明细表 if (!string.IsNullOrEmpty(rectifyNotices.CheckSpecialDetailId)) { List listIds = Funs.GetStrListByStr(rectifyNotices.CheckSpecialDetailId, ','); foreach (var item in listIds) { var getCheckSpecialDetail = db.Check_CheckSpecialDetail.FirstOrDefault(x => x.CheckSpecialDetailId == item); if (getCheckSpecialDetail != null) { string dataType = string.Empty; string dataId = string.Empty; if (string.IsNullOrEmpty(getCheckSpecialDetail.DataType)) { dataType = "1"; dataId = "1," + newRectifyNotices.RectifyNoticesId; } else { dataType += ",1"; dataId += "|1," + newRectifyNotices.RectifyNoticesId; } getCheckSpecialDetail.DataType = dataType; getCheckSpecialDetail.DataId = dataId; db.SubmitChanges(); } } } } else { var oldStates = isUpdate.States; newRectifyNotices.RectifyNoticesId = isUpdate.RectifyNoticesId; isUpdate.States = rectifyNotices.States; if (oldStates == "0" && (newRectifyNotices.States == "0" || newRectifyNotices.States == "1")) ////编制人 修改或提交 { isUpdate.UnitId = rectifyNotices.UnitId; isUpdate.WorkAreaId = rectifyNotices.WorkAreaId; isUpdate.CheckManNames = rectifyNotices.CheckManNames; isUpdate.CheckManIds = rectifyNotices.CheckManIds; isUpdate.CheckedDate = Funs.GetNewDateTime(rectifyNotices.CheckedDate); isUpdate.HiddenHazardType = rectifyNotices.HiddenHazardType; if (newRectifyNotices.States == "1" && !string.IsNullOrEmpty(rectifyNotices.SignPersonId)) { isUpdate.SignPerson = rectifyNotices.SignPersonId; } else { newRectifyNotices.States = isUpdate.States = "0"; } db.SubmitChanges(); //// 删除明细表 var deleteItem = from x in db.Check_RectifyNoticesItem where x.RectifyNoticesId == isUpdate.RectifyNoticesId select x; if (deleteItem.Count() > 0) { foreach (var cdeleteItem in deleteItem) { CommonService.DeleteAttachFileById(cdeleteItem.RectifyNoticesItemId); } db.Check_RectifyNoticesItem.DeleteAllOnSubmit(deleteItem); } insertRectifyNoticesItemItem = true; } else if (oldStates == "1" && newRectifyNotices.States == "2") ////总包单位项目安全经理 审核 { /// 不同意 打回 同意抄送专业工程师、施工经理、项目经理 并下发分包接收人(也就是施工单位项目安全经理) if (rectifyNotices.IsAgree == false) { newRectifyNotices.States = isUpdate.States = "0"; } else { if (!string.IsNullOrEmpty(rectifyNotices.ProfessionalEngineerId)) { isUpdate.ProfessionalEngineerId = rectifyNotices.ProfessionalEngineerId; } if (!string.IsNullOrEmpty(rectifyNotices.ConstructionManagerId)) { isUpdate.ConstructionManagerId = rectifyNotices.ConstructionManagerId; } if (!string.IsNullOrEmpty(rectifyNotices.ProjectManagerId)) { isUpdate.ProjectManagerId = rectifyNotices.ProjectManagerId; } if (!string.IsNullOrEmpty(rectifyNotices.DutyPersonId)) { isUpdate.DutyPersonId = rectifyNotices.DutyPersonId; isUpdate.SignDate = DateTime.Now; } else { newRectifyNotices.States = isUpdate.States = "1"; } } db.SubmitChanges(); } else if (oldStates == "2" && newRectifyNotices.States == "3") /// 施工单位项目安全经理 整改 提交施工单位项目负责人 { //// 整改明细反馈 if (rectifyNotices.RectifyNoticesItemItem != null && rectifyNotices.RectifyNoticesItemItem.Count() > 0) { foreach (var rItem in rectifyNotices.RectifyNoticesItemItem) { var getUpdateItem = db.Check_RectifyNoticesItem.FirstOrDefault(x => x.RectifyNoticesItemId == rItem.RectifyNoticesItemId); if (getUpdateItem != null) { getUpdateItem.RectifyResults = rItem.RectifyResults; if (getUpdateItem.IsRectify != true) { getUpdateItem.IsRectify = null; } db.SubmitChanges(); } if (!string.IsNullOrEmpty(rItem.PhotoAfterUrl)) { APIUpLoadFileService.SaveAttachUrl(Const.ProjectRectifyNoticesMenuId, rItem.RectifyNoticesItemId + "#2", rItem.PhotoAfterUrl, "0"); } } } if (!string.IsNullOrEmpty(rectifyNotices.UnitHeadManId)) { isUpdate.UnitHeadManId = rectifyNotices.UnitHeadManId; isUpdate.CompleteDate = DateTime.Now; } else { newRectifyNotices.States = isUpdate.States = "2"; } db.SubmitChanges(); } else if (oldStates == "3" && newRectifyNotices.States == "4") { /// 施工单位项目负责人不同意 打回施工单位项目安全经理,同意提交安全经理/安全工程师复查 if (rectifyNotices.IsAgree == false) { newRectifyNotices.States = isUpdate.States = "2"; isUpdate.CompleteDate = null; } else { if (!string.IsNullOrEmpty(rectifyNotices.CheckPersonId)) { isUpdate.UnitHeadManDate = DateTime.Now; isUpdate.CheckPerson = rectifyNotices.CheckPersonId; } else { newRectifyNotices.States = isUpdate.States = "3"; } } db.SubmitChanges(); } else if (oldStates == "4" && newRectifyNotices.States == "5") { //// 整改明细反馈 复查 是否合格 if (rectifyNotices.RectifyNoticesItemItem != null && rectifyNotices.RectifyNoticesItemItem.Count() > 0) { foreach (var rItem in rectifyNotices.RectifyNoticesItemItem) { var getUpdateItem = db.Check_RectifyNoticesItem.FirstOrDefault(x => x.RectifyNoticesItemId == rItem.RectifyNoticesItemId); if (getUpdateItem != null) { getUpdateItem.IsRectify = rItem.IsRectify; db.SubmitChanges(); //// 存在不合格 意见自动不同意 if (!getUpdateItem.IsRectify.HasValue || getUpdateItem.IsRectify == false) { rectifyNotices.IsAgree = false; } } } } ////安全经理/安全工程师 同意关闭,不同意打回施工单位项目安全经理 isUpdate.ReCheckOpinion = rectifyNotices.ReCheckOpinion; if (rectifyNotices.IsAgree == false) { newRectifyNotices.States = isUpdate.States = "2"; isUpdate.UnitHeadManDate = null; isUpdate.CompleteDate = null; isUpdate.ProfessionalEngineerTime2 = null; isUpdate.ConstructionManagerTime2 = null; isUpdate.ProjectManagerTime2 = null; } else { isUpdate.ReCheckDate = DateTime.Now; //// 回写专项检查明细表 var getcheck = db.Check_CheckSpecialDetail.Where(x => x.DataId.Contains(isUpdate.RectifyNoticesId)); if (getcheck.Count() > 0) { foreach (var item in getcheck) { item.CompleteStatus = true; item.CompletedDate = DateTime.Now; db.SubmitChanges(); } //// 根据明细ID判断是否全部整改完成 并更新专项检查状态 Check_CheckSpecialService.UpdateCheckSpecialStates(getcheck.FirstOrDefault().CheckSpecialId); } } db.SubmitChanges(); } } if (insertRectifyNoticesItemItem) { //// 新增明细 if (rectifyNotices.RectifyNoticesItemItem != null && rectifyNotices.RectifyNoticesItemItem.Count() > 0) { foreach (var rItem in rectifyNotices.RectifyNoticesItemItem) { Model.Check_RectifyNoticesItem newItem = new Model.Check_RectifyNoticesItem { RectifyNoticesItemId = SQLHelper.GetNewID(), RectifyNoticesId = newRectifyNotices.RectifyNoticesId, WrongContent = rItem.WrongContent, Requirement = rItem.Requirement, LimitTime = Funs.GetNewDateTime(rItem.LimitTime), RectifyResults = null, IsRectify = null, }; db.Check_RectifyNoticesItem.InsertOnSubmit(newItem); db.SubmitChanges(); if (!string.IsNullOrEmpty(rItem.PhotoBeforeUrl)) { APIUpLoadFileService.SaveAttachUrl(Const.ProjectRectifyNoticesMenuId, newItem.RectifyNoticesItemId + "#1", rItem.PhotoBeforeUrl, "0"); } } } } //// 增加审核记录 if (rectifyNotices.RectifyNoticesFlowOperateItem != null && rectifyNotices.RectifyNoticesFlowOperateItem.Count() > 0) { var getOperate = rectifyNotices.RectifyNoticesFlowOperateItem.FirstOrDefault(); if (getOperate != null && !string.IsNullOrEmpty(getOperate.OperateManId)) { Model.Check_RectifyNoticesFlowOperate newOItem = new Model.Check_RectifyNoticesFlowOperate { FlowOperateId = SQLHelper.GetNewID(), RectifyNoticesId = newRectifyNotices.RectifyNoticesId, OperateName = getOperate.OperateName, OperateManId = getOperate.OperateManId, OperateTime = DateTime.Now, IsAgree = getOperate.IsAgree, Opinion = getOperate.Opinion, }; db.Check_RectifyNoticesFlowOperate.InsertOnSubmit(newOItem); db.SubmitChanges(); } } if (newRectifyNotices.States == Const.State_1) { APICommonService.SendSubscribeMessage(newRectifyNotices.SignPerson, "整改单待签发", rectifyNotices.CheckManNames, string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now)); } else if (newRectifyNotices.States == Const.State_2) { APICommonService.SendSubscribeMessage(newRectifyNotices.DutyPersonId, "整改单待整改", rectifyNotices.SignPersonName, string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now)); } else if (newRectifyNotices.States == Const.State_3) { APICommonService.SendSubscribeMessage(newRectifyNotices.UnitHeadManId, "整改单待审核", rectifyNotices.DutyPersonName, string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now)); } else if (newRectifyNotices.States == Const.State_4) { APICommonService.SendSubscribeMessage(newRectifyNotices.CheckPerson, "整改单待复查", rectifyNotices.UnitHeadManName, string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now)); } } } #endregion } }