diff --git a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/SecurityInspectionRecordController.cs b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/SecurityInspectionRecordController.cs index da8e38d..73b9fd0 100644 --- a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/SecurityInspectionRecordController.cs +++ b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/SecurityInspectionRecordController.cs @@ -509,25 +509,25 @@ namespace APT.SK.WebApi.Controllers.Api { item.HIDDEN_LEVEL = null; } - var isExsists = details.FirstOrDefault(t => t.CHECK_RESULT == SKCheckResultEnum.Yes && t.CHECK_QUESTION_ID == null); + var isExsists = details.FirstOrDefault(t => t.CHECK_RESULT == SKCheckResultEnum.Yes && (t.CHECK_QUESTION_ID == null || t.HIDDEN_LEVEL == null || t.HIDDEN_PLACE == null)); if (isExsists != null) { - throw new Exception("有隐患必须选择隐患描述"); - } - var isExsistTwos = details.FirstOrDefault(t => t.CHECK_RESULT == SKCheckResultEnum.Yes && t.HIDDEN_LEVEL == null); - if (isExsistTwos != null) - { - throw new Exception("有隐患必须填写隐患等级"); + throw new Exception("有隐患必须选择隐患描述和隐患等级隐患地点"); } var isExsistFirsts = details.FirstOrDefault(t => t.CHECK_RESULT == SKCheckResultEnum.Yes && (t.Nav_CheckRecordDetailFiles == null || !t.Nav_CheckRecordDetailFiles.Any())); if (isExsistFirsts != null) { throw new Exception("有隐患必须上传隐患照片"); } - var noExsists = details.FirstOrDefault(t => t.CHECK_RESULT == SKCheckResultEnum.None && t.CHECK_QUESTION_ID != null); + var noExsists = details.FirstOrDefault(t => t.CHECK_RESULT != SKCheckResultEnum.None && (t.CHECK_QUESTION_ID != null|| t.HIDDEN_LEVEL != null || t.HIDDEN_PLACE != null)); if (noExsists != null) { - throw new Exception("无隐患无需填写隐患描述,请确认检查情况"); + throw new Exception("无隐患、不涉及无需填写隐患描述和隐患等级隐患地点,请确认检查情况"); + } + var noExsistTwos = details.FirstOrDefault(t => t.CHECK_RESULT != SKCheckResultEnum.Yes && t.Nav_CheckRecordDetailFiles != null && t.Nav_CheckRecordDetailFiles.Where(m=>!m.IS_DELETED).Any()); + if (noExsistTwos != null) + { + throw new Exception("无隐患、不涉及无需上传隐患照片"); } if (item.Nav_CheckRecordDetailUsers != null && item.Nav_CheckRecordDetailUsers.Any()) { @@ -739,27 +739,29 @@ namespace APT.SK.WebApi.Controllers.Api } } } - var groupDetails = tempDetails.GroupBy(t => new { t.RISK_AREA_ID, t.CHECK_CONTENTS_ID, t.CHECK_QUESTION_ID }); + var groupDetails = tempDetails.Where(t => t.CHECK_RESULT == SKCheckResultEnum.Yes).ToList(); + var groupDetailNos = tempDetails.Where(t=>t.CHECK_RESULT != SKCheckResultEnum.Yes).GroupBy(t => new { t.RISK_AREA_ID, t.CHECK_CONTENTS_ID, t.CHECK_QUESTION_ID }).Select(g=>g.FirstOrDefault()).ToList(); + groupDetails.AddRange(groupDetailNos); if (groupDetails.Any()) { foreach (var itemDetail in groupDetails) { - var ids = tempDetails.Where(t => t.RISK_AREA_ID == itemDetail.Key.RISK_AREA_ID && t.CHECK_CONTENTS_ID == itemDetail.Key.CHECK_CONTENTS_ID && t.CHECK_QUESTION_ID == itemDetail.Key.CHECK_QUESTION_ID).Select(m => m.ID).ToList(); + var ids = tempDetails.Where(t => t.RISK_AREA_ID == itemDetail.RISK_AREA_ID && t.CHECK_CONTENTS_ID == itemDetail.CHECK_CONTENTS_ID && t.CHECK_QUESTION_ID == itemDetail.CHECK_QUESTION_ID).Select(m => m.ID).ToList(); T_SK_SECURITY_INSPECTION_RECORD_SUMMARY_DETAIL summaryDetail = new T_SK_SECURITY_INSPECTION_RECORD_SUMMARY_DETAIL(); summaryDetail.ORG_ID = entity.ORG_ID; summaryDetail.SECURITY_INSPECTION_RECORD_SUMMARY_ID = summary.ID; - summaryDetail.RISK_AREA_ID = itemDetail.Key.RISK_AREA_ID; - summaryDetail.CHECK_CONTENTS_ID = itemDetail.Key.CHECK_CONTENTS_ID; - summaryDetail.CHECK_QUESTION_ID = itemDetail.Key.CHECK_QUESTION_ID; - summaryDetail.CHECKCONTENT = itemDetail.FirstOrDefault().CHECKCONTENT; - summaryDetail.CHECKPROOF = itemDetail.FirstOrDefault().CHECKPROOF; - summaryDetail.CHECKSTANDARD = itemDetail.FirstOrDefault().CHECKSTANDARD; - summaryDetail.CHECK_RESULT = itemDetail.FirstOrDefault().CHECK_RESULT; - summaryDetail.HIDDEN_DESCRIPTION = string.IsNullOrEmpty(itemDetail.FirstOrDefault().HIDDEN_DESCRIPTION) ? itemDetail.FirstOrDefault().Nav_Question?.DESCREPTION : itemDetail.FirstOrDefault().HIDDEN_DESCRIPTION; - summaryDetail.HIDDEN_LEVEL = itemDetail.FirstOrDefault().HIDDEN_LEVEL; - summaryDetail.HIDDEN_PLACE = itemDetail.FirstOrDefault().HIDDEN_PLACE; - summaryDetail.MARK = itemDetail.FirstOrDefault().MARK; - summaryDetail.NUM = itemDetail.FirstOrDefault().NUM; + summaryDetail.RISK_AREA_ID = itemDetail.RISK_AREA_ID; + summaryDetail.CHECK_CONTENTS_ID = itemDetail.CHECK_CONTENTS_ID; + summaryDetail.CHECK_QUESTION_ID = itemDetail.CHECK_QUESTION_ID; + summaryDetail.CHECKCONTENT = itemDetail.CHECKCONTENT; + summaryDetail.CHECKPROOF = itemDetail.CHECKPROOF; + summaryDetail.CHECKSTANDARD = itemDetail.CHECKSTANDARD; + summaryDetail.CHECK_RESULT = itemDetail.CHECK_RESULT; + summaryDetail.HIDDEN_DESCRIPTION = string.IsNullOrEmpty(itemDetail.HIDDEN_DESCRIPTION) ? itemDetail.Nav_Question?.DESCREPTION : itemDetail.HIDDEN_DESCRIPTION; + summaryDetail.HIDDEN_LEVEL = itemDetail.HIDDEN_LEVEL; + summaryDetail.HIDDEN_PLACE = itemDetail.HIDDEN_PLACE; + summaryDetail.MARK = itemDetail.MARK; + summaryDetail.NUM = itemDetail.NUM; sumdetails.Add(summaryDetail); var groupUsers = tempDetailUsers.Where(t => ids.Contains(t.SECURITY_INSPECTION_RECORD_SUMMARY_DETAIL_ID)).Select(m => m.USER_ID).Distinct().ToList(); if (groupUsers.Any()) @@ -952,18 +954,24 @@ namespace APT.SK.WebApi.Controllers.Api } if (sumdetails.Any()) { - var detailTemps = sumdetails.Where(t => t.CHECK_RESULT != SKCheckResultEnum.Yes).Distinct(m => new { m.RISK_AREA_ID, m.CHECK_CONTENTS_ID, m.CHECKCONTENT, m.CHECKSTANDARD, m.CHECK_QUESTION_ID, m.CHECK_RESULT, m.HIDDEN_DESCRIPTION, m.HIDDEN_LEVEL, m.HIDDEN_PLACE }).ToList(); - var detailTempNews = sumdetails.Where(t => t.CHECK_RESULT == SKCheckResultEnum.Yes).ToList(); - summaryDetails.AddRange(detailTemps); + var detailTempNews = sumdetails.Where(t => t.CHECK_RESULT == SKCheckResultEnum.Yes).ToList(); summaryDetails.AddRange(detailTempNews); + var detailTemps = sumdetails.Where(t => t.CHECK_RESULT != SKCheckResultEnum.Yes).Distinct(m => new { m.RISK_AREA_ID, m.CHECK_CONTENTS_ID }).ToList(); + foreach (var item in detailTemps) + { + var already = detailTempNews.FirstOrDefault(t => t.RISK_AREA_ID == item.RISK_AREA_ID && t.CHECK_CONTENTS_ID == item.CHECK_CONTENTS_ID); + if (already == null) + { + summaryDetails.Add(item); + } + } var detailIds = summaryDetails.Select(m => m.ID).ToList(); summaryDetailBasics = summaryDetailBasics.Where(t => detailIds.Contains(t.SECURITY_INSPECTION_RECORD_SUMMARY_DETAIL_ID)).ToList(); summaryDetailFiles = summaryDetailFiles.Where(t => detailIds.Contains(t.SECURITY_INSPECTION_RECORD_SUMMARY_DETAIL_ID)).ToList(); summaryDetailUsers = summaryDetailUsers.Where(t => detailIds.Contains(t.SECURITY_INSPECTION_RECORD_SUMMARY_DETAIL_ID)).ToList(); } - var departName = this.GetEntity(t => t.ID == entity.APPLY_DEPARTMENT_ID && t.ENABLE_STATUS == 0)?.NAME; //发消息 - var noticeTemp = NotificationTaskService.InsertUserNoticeTaskModel("安全检查记录汇总(" + departName + DateTime.Now.ToShortDateString().Replace("/", "") + ")", summary.ID, entity.ORG_ID, user.ID, user.NAME, DateTime.Now, + var noticeTemp = NotificationTaskService.InsertUserNoticeTaskModel("安全检查记录汇总-" + entity.DEPARTMENT_TYPE.GetDescription() + DateTime.Now.Month.PadLeft(2,'0') + DateTime.Now.Day.PadLeft(2,'0'), summary.ID, entity.ORG_ID, user.ID, user.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK012"); notices.Add(noticeTemp); } diff --git a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/SecurityInspectionRecordSummaryController.cs b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/SecurityInspectionRecordSummaryController.cs index 8667b66..84b1cf7 100644 --- a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/SecurityInspectionRecordSummaryController.cs +++ b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/SecurityInspectionRecordSummaryController.cs @@ -61,6 +61,15 @@ namespace APT.SK.WebApi.Controllers.Api List fileList = new List(); if (details != null && details.Any()) { + var groupDetails = details.Where(m => m.CHECK_RESULT == SKCheckResultEnum.Yes).GroupBy(t => new { t.RISK_AREA_ID, t.CHECK_CONTENTS_ID, t.CHECK_QUESTION_ID }).ToList(); + foreach (var group in groupDetails) + { + var haveRecord = details.Where(t => t.RISK_AREA_ID == group.Key.RISK_AREA_ID && t.CHECK_CONTENTS_ID == group.Key.CHECK_CONTENTS_ID && t.CHECK_QUESTION_ID == group.Key.CHECK_QUESTION_ID).ToList(); + if (haveRecord.Count > 1) + { + throw new Exception("检查内容"+haveRecord.FirstOrDefault()?.Nav_Contents?.CHECKCONTENT+"有重复的隐患,请删除重复"); + } + } var evaluationIsExist = this.GetEntity(t => t.ID == entity.ID, new string[] { "Nav_CheckRecordDetails", "Nav_CheckRecordDetails.Nav_CheckRecordDetailUsers", "Nav_CheckRecordDetails.Nav_CheckRecordDetailFiles", "Nav_CheckRecordDetails.Nav_CheckRecordDetailBasics" }); if (evaluationIsExist != null && evaluationIsExist.Nav_CheckRecordDetails != null && evaluationIsExist.Nav_CheckRecordDetails.Any()) { @@ -84,6 +93,7 @@ namespace APT.SK.WebApi.Controllers.Api deleteDetailIds.Add(t.ID); }); } + foreach (var item in details) { if (item.CHECK_RESULT == null) @@ -145,8 +155,10 @@ namespace APT.SK.WebApi.Controllers.Api item.Nav_Contents = null; } } + var delFileIds = this.GetEntities(t => t.SECURITY_INSPECTION_RECORD_SUMMARY_ID == entity.ID, new BaseFilter(entity.ORG_ID)).Select(m => m.ID).ToList(); if (files != null && files.Any()) { + files = files.Where(t => !t.IS_DELETED).ToList(); foreach (var item in files) { item.ORG_ID = entity.ORG_ID; @@ -257,7 +269,7 @@ namespace APT.SK.WebApi.Controllers.Api } var departName = this.GetEntity(t => t.ID == entity.APPLY_DEPARTMENT_ID && t.ENABLE_STATUS == 0)?.NAME; //发消息 - var notice = NotificationTaskService.InsertUserNoticeTaskModel("隐患上报(" + departName + entity.Nav_CheckType?.NAME + ")", report.ID, report.ORG_ID, (Guid)entity.APPLY_USER_ID, entity.Nav_ApplyUser?.NAME, DateTime.Now, + var notice = NotificationTaskService.InsertUserNoticeTaskModel("隐患上报-" + entity.DEPARTMENT_TYPE.GetDescription(), report.ID, report.ORG_ID, (Guid)entity.APPLY_USER_ID, entity.Nav_ApplyUser?.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK014"); notices.Add(notice); } @@ -287,7 +299,9 @@ namespace APT.SK.WebApi.Controllers.Api if (deleteFileIds != null && deleteFileIds.Any()) this.BantchDeleteEntityNoCommit(deleteFileIds); if (deleteDetailIds != null && deleteDetailIds.Any()) - this.BantchDeleteEntityNoCommit(deleteDetailIds); + this.BantchDeleteEntityNoCommit(deleteDetailIds); + if (delFileIds != null && delFileIds.Any()) + this.BantchDeleteEntityNoCommit(delFileIds); if (details != null && details.Any()) BantchSaveEntityNoCommit(details); if (userList != null && userList.Any()) @@ -427,7 +441,7 @@ namespace APT.SK.WebApi.Controllers.Api } var departName = this.GetEntity(t => t.ID == record.APPLY_DEPARTMENT_ID && t.ENABLE_STATUS == 0)?.NAME; //发消息 - var notice = NotificationTaskService.InsertUserNoticeTaskModel("隐患上报(" + departName + DateTime.Now.ToShortDateString().Replace("/", "") + ")", report.ID, report.ORG_ID, (Guid)record.APPLY_USER_ID, record.Nav_ApplyUser?.NAME, DateTime.Now, + var notice = NotificationTaskService.InsertUserNoticeTaskModel("隐患上报-" + record.DEPARTMENT_TYPE.GetDescription() + DateTime.Now.Month.PadLeft(2,'0')+ DateTime.Now.Day.PadLeft(2, '0'), report.ID, report.ORG_ID, (Guid)record.APPLY_USER_ID, record.Nav_ApplyUser?.NAME, DateTime.Now, DateTime.Now.AddHours(24), (int)FMNoticeTypeEnum.消息, "SK014"); notices.Add(notice); } @@ -597,7 +611,7 @@ namespace APT.SK.WebApi.Controllers.Api filter.IgnoreDataRule = true; var result = this.GetEntity(id, new string[] {"Nav_ApplyUser","Nav_ApplyDepartment","Nav_CheckType", "Nav_CheckRecordDetails","Nav_CheckRecordDetails.Nav_RiskArea","Nav_CheckRecordDetails.Nav_Contents","Nav_CheckRecordDetails.Nav_Question","Nav_CheckRecordDetails.Nav_CheckRecordDetailBasics.Nav_Law", - "Nav_CheckRecordDetails.Nav_CheckRecordDetailUsers.Nav_User", "Nav_CheckRecordDetails.Nav_CheckRecordDetailFiles.Nav_ImgFile", + "Nav_CheckRecordDetails.Nav_CheckRecordDetailUsers.Nav_User.Nav_UserSignFiles.Nav_ImgFile", "Nav_CheckRecordDetails.Nav_CheckRecordDetailFiles.Nav_ImgFile", "Nav_CheckRecordFiles","Nav_CheckRecordFiles.Nav_ImgFile","Nav_ProductionUnit"}); //var taskId = filter.FilterGroup.Rules.FirstOrDefault(t => t.Field == "TASK_ID").Value; if (result != null && result.Nav_CheckRecordDetails != null && result.Nav_CheckRecordDetails.Any())// && taskId != null