using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.Enums.PF; using APT.BaseData.Domain.IServices; using APT.BaseData.Domain.IServices.AE; using APT.BaseData.Domain.IServices.FM; using APT.Infrastructure.Core; using APT.MS.Domain.Entities.HM; using APT.MS.Domain.Entities.OH; using APT.MS.Domain.Entities.PF; using APT.MS.Domain.Entities.SC; using APT.MS.Domain.Entities.TI; using APT.MS.Domain.Enums; using APT.Utility; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; namespace APT.SC.WebApi.Controllers.Api.OH { [Route("api/OH/OHHealthExamNotice")] public class OHHealthExamNoticeController : AuthorizeApiController { IFMFlowPermitService MFlowPermitService { get; set; } IPFApproveCallBackService ApproveCallBackService { get; set; } IAEAccidentEventReportService AccidentEventReportService { get; set; } IFMNotificationTaskService NotificationTaskService { get; set; } IFMUserService UserService { get; set; } IFMDepartmentService DepartmentService { get; set; } public OHHealthExamNoticeController(IFMFlowPermitService mFlowPermitService, IPFApproveCallBackService approveCallBackService, IAEAccidentEventReportService accidentEventReportService, IFMNotificationTaskService notificationTaskService, IFMUserService userService, IFMDepartmentService departmentService) { MFlowPermitService = mFlowPermitService; ApproveCallBackService = approveCallBackService; AccidentEventReportService = accidentEventReportService; NotificationTaskService = notificationTaskService; UserService = userService; DepartmentService = departmentService; } /// /// 排序分页查询数据 体检批次(Time) /// /// 分页过滤实体 /// [HttpPost, Route("OrderPagedBanch")] public PagedActionResult OrderPagedBanch([FromBody] KeywordPageFilter pageFilter) { return SafeGetPagedData(delegate (PagedActionResult result) { DateTime dtNow = DateTime.Now.Date; pageFilter.Sort = "BATCH"; //Guid? PLAN_ID_DEP = null; if (pageFilter.FilterGroup.Rules.Count > 0) { foreach (var item in pageFilter.FilterGroup.Rules) { //体检通知表 选择 体检批次 if (item.Field == "DateAdd") { dtNow = dtNow.AddDays(int.Parse(item.Value.ToString())); } } pageFilter.FilterGroup.Rules.Clear(); } //不做组织筛选 PagedActionResult orderPageEntities = GetOrderPageEntities(e => e.END_TIME > dtNow, pageFilter, null);//e.START_TIME >= dtNow //var dateDep = orderPageEntities.Data.Where(e=>e.DEPARTMENT_ID); result.Data = orderPageEntities.Data; foreach (var item in result.Data) { if (item.START_TIME != DateTime.MinValue && item.END_TIME != DateTime.MinValue) { //item.TIME = item.START_TIME.ToString("yyyy-MM-dd") + " ~ " + item.END_TIME.ToString("MM-dd"); //HH: mm item.TIME = GetTimeShow(item.START_TIME, item.END_TIME); } } result.TotalCount = orderPageEntities.TotalCount; }); } /// /// 显示时间 /// /// /// /// private string GetTimeShow(DateTime? START_TIME, DateTime? END_TIME) { if (!START_TIME.HasValue || !END_TIME.HasValue || START_TIME == DateTime.MinValue) { return ""; } else if (START_TIME.Value.Date == END_TIME.Value.Date) { return START_TIME.Value.ToString("MM-dd HH:mm") + " ~ " + END_TIME.Value.ToString("HH:mm"); } else { return START_TIME.Value.ToString("MM-dd") + " ~ " + END_TIME.Value.ToString("MM-dd"); } } /// /// 获得单条实体数据 /// /// 过滤实体 /// [HttpPost, Route("GetNotice")] public JsonActionResult GetNotice([FromBody] KeywordFilter filter) { //return WitEntity(null, filter); return SafeExecute(() => { T_OH_HEALTH_EXAM_NOTICE Notice = null; Guid NoticeID = Guid.Empty; if (filter.FilterGroup.Rules.Count > 0) { foreach (var item in filter.FilterGroup.Rules) { if (item.Field == "ID") { NoticeID = new Guid(item.Value.ToString()); } } filter.FilterGroup.Rules.Clear(); } if (NoticeID != Guid.Empty) { Notice = GetEntity(e => e.ID == NoticeID, filter, new string[] { "Nav_Files.Nav_ImgFile.Nav_File" }); Notice.Nav_ListNoticeRegister = GetEntities(e => e.NOTICE_ID == NoticeID && !e.IS_DELETED, null, new string[] { "Nav_Department", "Nav_User.Nav_Person.Nav_Post", "Nav_ExamBatch", "Nav_ListOccHazard.Nav_Hazard" }).ToList(); //if (Notice.Nav_ListNoticeRegister != null && Notice.Nav_ListNoticeRegister.Any()) //{ // foreach (var item in Notice.Nav_ListNoticeRegister) // { // if (item.EXAM_BATCH_ID.HasValue) // { // //体检时间 // item.Nav_ExamBatch.TIME = item.Nav_ExamBatch.START_TIME.ToString("yyyy-MM-dd") + " ~ " + item.Nav_ExamBatch.END_TIME.ToString("MM-dd"); // } // } //} var batch = Notice.Nav_ListNoticeRegister.Where(e => e.EXAM_BATCH_ID.HasValue && e.Nav_ExamBatch.USER_ID.HasValue).Select(e => e.Nav_ExamBatch.USER_ID); if (batch != null && batch.Any()) { var listUser = GetEntities(e => batch.Contains(e.ID), null, null); foreach (var item in Notice.Nav_ListNoticeRegister) { if (item.EXAM_BATCH_ID.HasValue) { item.Nav_ExamBatch.Nav_User = listUser.FirstOrDefault(e => e.ID == item.Nav_ExamBatch.USER_ID); } } } else { //根据部门 自动匹配 List listBatchSuit = GetEntities(e => e.START_TIME >= DateTime.Now.Date && e.Nav_ListDepartment != null, null, new string[] { "Nav_User", "Nav_ListDepartment" }).OrderBy(e => e.START_TIME).ToList(); List listBatchDep = new List(); for (int i = listBatchSuit.Count - 1; i > -1; i--) { if (listBatchSuit[i].Nav_ListDepartment == null || !listBatchSuit[i].Nav_ListDepartment.Any()) { listBatchSuit.RemoveAt(i); continue; } listBatchDep.AddRange(listBatchSuit[i].Nav_ListDepartment.ToList()); } T_OH_HEALTH_EXAM_BATCH batchCheck = null; foreach (var item in Notice.Nav_ListNoticeRegister) { //TODO 体检人所在部门 0512 修改一对多 //if (item.DEPARTMENT_ID_WORKSHOP.HasValue) //{ // batchCheck = listBatchSuit.FirstOrDefault(e => e.DEPARTMENT_ID == item.DEPARTMENT_ID_WORKSHOP); //} //else if (item.DEPARTMENT_ID.HasValue) //{ // batchCheck = listBatchSuit.FirstOrDefault(e => e.DEPARTMENT_ID == item.DEPARTMENT_ID); //} batchCheck = listBatchDep.FirstOrDefault(e => e.DEPARTMENT_ID == item.DEPARTMENT_ID)?.Nav_Batch; if (batchCheck != null) { item.EXAM_BATCH_ID = batchCheck.ID; item.Nav_ExamBatch = batchCheck; //item.THISDATE = batchCheck.START_TIME; } } } if (Notice.Nav_ListNoticeRegister != null && Notice.Nav_ListNoticeRegister.Any()) { foreach (var item in Notice.Nav_ListNoticeRegister) { if (item.EXAM_BATCH_ID.HasValue) { //体检时间 //if (item.Nav_ExamBatch.START_TIME.Date == item.Nav_ExamBatch.END_TIME.Date) //{ // item.Nav_ExamBatch.TIME = item.Nav_ExamBatch.START_TIME.ToString("MM-dd HH:mm") + " ~ " + item.Nav_ExamBatch.END_TIME.ToString("HH:mm"); //} //else //{ // item.Nav_ExamBatch.TIME = item.Nav_ExamBatch.START_TIME.ToString("MM-dd") + " ~ " + item.Nav_ExamBatch.END_TIME.ToString("MM-dd"); //} item.Nav_ExamBatch.TIME = GetTimeShow(item.Nav_ExamBatch.START_TIME, item.Nav_ExamBatch.END_TIME); } item.Nav_ListOccHazard = item.Nav_ListOccHazard.OrderBy(e => e.HAZARD_ID).ToList(); } } //Notice.Nav_ListNoticeRegister = Notice.Nav_ListNoticeRegister.OrderBy(e => e.DEPARTMENT_ID_WORKSHOP).ThenByDescending(e => e.Nav_User.APPROVE_ROLE_ID).ThenBy(e => e.Nav_User.NAME).ToList(); Notice.Nav_ListNoticeRegister = Notice.Nav_ListNoticeRegister.OrderBy(e => e.DEPARTMENT_ID).ThenBy(e => e.Nav_User.NAME).ToList(); } return Notice; }); } /// /// 体检通知 修改 /// /// /// [HttpPost, Route("FullUpdate")] public JsonActionResult FullUpdate([FromBody] T_OH_HEALTH_EXAM_NOTICE entity) { return SafeExecute(() => { //保存并发送的时候 给各个带队人 发送 带队通知 if (string.IsNullOrEmpty(entity.NAME)) { throw new Exception("请填写体检计划名称"); } var listNoticeRegister = entity.Nav_ListNoticeRegister; entity.Nav_ListNoticeRegister = null; var Files = entity.Nav_Files; entity.Nav_Files = null; if (listNoticeRegister == null || !listNoticeRegister.Any()) { throw new Exception("未获取到体检人员!"); } List listHaz = new List(); foreach (var item in listNoticeRegister) { if (item.Nav_ListOccHazard != null && item.Nav_ListOccHazard.Any()) { listHaz.AddRange(item.Nav_ListOccHazard); item.Nav_ListOccHazard = null; } } //if (entity.STATUS == PFStandardStatus.Sign) //{ // var listNotMatchBatch = listNoticeRegister.Where(e => !e.EXAM_BATCH_ID.HasValue); // if (listNotMatchBatch != null && listNotMatchBatch.Any()) // { // List listUserID = listNotMatchBatch.Where(e => !e.EXAM_BATCH_ID.HasValue).Select(e => e.USER_ID.Value).ToList(); // List listName = GetEntities(e => listUserID.Contains(e.ID), null, null).Select(e => e.NAME).ToList(); // throw new Exception("请完善体检批次:" + string.Join(",", listName) + "!"); // } //} if (entity.STATUS == PFStandardStatus.Draft) { //草稿 this.UnifiedCommit(() => { if (entity != null) UpdateEntityNoCommit(entity); //事故事件上报 if (Files != null && Files.Any())//附件 BantchSaveEntityNoCommit(Files); if (listNoticeRegister != null && listNoticeRegister.Any())//体检人 BantchSaveEntityNoCommit(listNoticeRegister); if (listHaz != null && listHaz.Any()) BantchSaveEntityNoCommit(listHaz); }); } else { List listIndex = new List(); int rowIndex = 1; foreach (var item in listNoticeRegister) { if (!item.EXAM_BATCH_ID.HasValue) { listIndex.Add(rowIndex); } rowIndex++; } if (listIndex.Count > 0) { throw new Exception("体检批次不能为空:行" + String.Join(",", listIndex) + "!"); } //原来 的一个 通知 变成 按体检批次变成多个通知 List listNotice = new List();//通知 插入 更新 List listNoticeFile = new List();//通知文件插入 更新 Dictionary dicBatchIDModelNotice = new Dictionary();//体检批次 - 体检通知 //T_OH_HEALTH_EXAM_BATCH List listBatchID = listNoticeRegister.Select(e => e.EXAM_BATCH_ID.Value).Distinct().ToList(); List listBatch = GetEntities(e => listBatchID.Contains(e.ID), null, new string[] { "Nav_User" }).ToList(); DateTime dtEnd = DateTime.Now;//本次体检 最迟结束时间 (用于发送通知给人事专员录入体检结果) foreach (var item in listBatch) { if (item.END_TIME > dtEnd) { dtEnd = item.END_TIME; } } entity.EXAM_BATCH_ID = listBatchID[0]; entity.NOTICEIMPORTSTATE = NoticeImportState.Draft; entity.END_TIME = dtEnd; dicBatchIDModelNotice.Add(listBatchID[0], entity); DateTime dtNow = DateTime.Now; entity.PARENTID = entity.ID; for (int i = 1; i < listBatchID.Count; i++) { T_OH_HEALTH_EXAM_NOTICE notice = new T_OH_HEALTH_EXAM_NOTICE(); notice.PARENTID = entity.ID; notice.ID = Guid.NewGuid(); notice.CODE = entity.CODE + i; notice.NAME = entity.NAME; notice.OTHER_STUFF = entity.OTHER_STUFF; notice.STATUS = entity.STATUS; //notice.APPROVE_ID =; notice.IS_DELETED = false; notice.ORG_ID = entity.ORG_ID; //notice.ENTITY_ORG_TPYE =; //notice.FORM_ID =; //notice.FLOW_STATUS =; //notice.FLOW_SEND_STATUS =; //notice.FLOW_ID =; //notice.CREATE_TIME =; //notice.MODIFY_TIME =; //notice.CREATER_ID =; //notice.MODIFIER_ID =; if (Files != null && Files.Any()) { foreach (var item in Files) { T_OH_HEALTH_EXAM_NOTICE_FILE noticeFile = new T_OH_HEALTH_EXAM_NOTICE_FILE(); noticeFile.ID = Guid.NewGuid(); noticeFile.NOTICE_ID = notice.ID; noticeFile.IMG_FILE_ID = item.IMG_FILE_ID; noticeFile.ORG_ID = item.ORG_ID; noticeFile.IS_DELETED = item.IS_DELETED; listNoticeFile.Add(noticeFile);//通知文件 } } listNotice.Add(notice);//通知 notice.EXAM_BATCH_ID = listBatchID[i]; notice.NOTICEIMPORTSTATE = NoticeImportState.Draft; notice.END_TIME = dtEnd; dicBatchIDModelNotice.Add(listBatchID[i], notice); } //带队人(每个批次一个通知) List listTitle = new List(); List listUserID = new List(); List listUserName = new List(); List DataId = new List(); foreach (var item in dicBatchIDModelNotice) { listTitle.Add("体检通知-带队");//通知标题 listUserID.Add(listBatch.Find(e => e.ID == item.Key).USER_ID.Value); listUserName.Add(listBatch.Find(e => e.ID == item.Key).Nav_User.NAME);//带队人 DataId.Add(item.Value.ID);//体检通知ID } //通知人 List listRegTitle = new List(); List listRegUserID = new List(); List listRegUserName = new List(); List listTask = new List(); T_OH_HEALTH_EXAM_BATCH examBatch = null; T_FM_USER userNotice = null; var listUserNoticeID = listNoticeRegister.Select(e => e.USER_ID); var listUserNotice = GetEntities(e => listUserNoticeID.Contains(e.ID), null, null); //体检周期 //体检批次 DateTime dtNextTime = DateTime.Now; List listCycle = null; T_OH_HEALTH_EXAM_CYCLE cycleTemp = null; var listCYCLEID = listNoticeRegister.Where(e => e.CYCLE_ID.HasValue).Select(e => e.CYCLE_ID);//体检周期 if (listCYCLEID != null && listCYCLEID.Any()) { listCycle = GetEntities(e => listCYCLEID.Contains(e.ID), null, null).ToList(); } foreach (var item in listNoticeRegister) { userNotice = listUserNotice.First(e => e.ID == item.USER_ID); examBatch = listBatch.Find(e => e.ID == item.EXAM_BATCH_ID); T_FM_NOTIFICATION_TASK PerTask = NotificationTaskService.InsertUserNoticeTaskModel("请于" + examBatch.START_TIME.ToString("yyyy-MM-dd") + " ~ " + examBatch.END_TIME.ToString("MM-dd") + "参加体检", item.ID, item.ORG_ID, item.USER_ID.Value, userNotice.NAME, dtNow, examBatch.END_TIME, 2, ""); //FMNoticeTypeEnum.今日提醒 2 listTask.Add(PerTask); //清除导航属性 //通知赋值 if (dicBatchIDModelNotice.ContainsKey(item.EXAM_BATCH_ID.Value)) { item.NOTICE_ID = dicBatchIDModelNotice[item.EXAM_BATCH_ID.Value].ID; if (!item.NEXTDATE.HasValue && item.CYCLE_ID.HasValue) { //下次体检日期= 体检批次 开始时间或当前时间(取大值) + 体检周期的月 cycleTemp = listCycle.Find(e => e.ID == item.CYCLE_ID.Value); //item.NEXTDATE = (examBatch.START_TIME > dtNow ? examBatch.START_TIME : dtNow).AddMonths(cycleTemp.HEALTH_EXAM_CYCLE); item.THISDATE = examBatch.START_TIME > dtNow ? examBatch.START_TIME : dtNow; item.NEXTDATE = item.THISDATE.Value.AddMonths(cycleTemp.HEALTH_EXAM_CYCLE); } } } NotificationTaskService.SendAndFinishNotificationTask(listTitle, DataId, entity.ORG_ID, listUserID, listUserName, DateTime.Now, DateTime.Now.AddDays(1), 0, "OH010_SHOWPRINT", entity.TaskID, () => { if (entity != null) UpdateEntityNoCommit(entity); //事故事件上报 if (Files != null && Files.Any())//附件 BantchSaveEntityNoCommit(Files); if (listNotice != null && listNotice.Any())//通知 BantchSaveEntityNoCommit(listNotice); if (listNoticeFile != null && listNoticeFile.Any())//通知附件 BantchSaveEntityNoCommit(listNoticeFile); if (listNoticeRegister != null && listNoticeRegister.Any())//体检人 BantchSaveEntityNoCommit(listNoticeRegister); if (listHaz != null && listHaz.Any())//职业危害 BantchSaveEntityNoCommit(listHaz); if (listTask != null && listTask.Any())//体检人 今日提醒 BantchSaveEntityNoCommit(listTask); }, "OH010_SHOWPRINT"); } return true; }); } /// /// 带队人 确认 /// /// /// [HttpPost, Route("NoticeSign")] public JsonActionResult NoticeSign([FromBody] KeywordFilter filter) { return SafeExecute(() => { var TaskID = new Guid(filter.Parameter1); if (TaskID == Guid.Empty) { throw new Exception("获取数据【待办ID】传参失败!"); } var task = NotificationTaskService.GetEntityTask(TaskID); if (task.SOURCE_DATA_ID != new Guid(filter.Keyword)) { throw new Exception("传参有误!"); } var entity = GetEntity(task.SOURCE_DATA_ID.Value, null); entity.STATUS = PFStandardStatus.Approving;//带队人确认 this.UnifiedCommit(() => { if (task != null)//待办 UpdateEntityNoCommit(task); if (entity != null)//待办 UpdateEntityNoCommit(entity); }); return true; }); } /// /// 体检通知新增选择人(不定期体检) /// /// /// [HttpPost, Route("GetCombinNoticeRegister")] public JsonActionResult GetCombinNoticeRegister([FromBody] KeywordFilter filter) { return SafeExecute(() => { if (string.IsNullOrEmpty(filter.Keyword)) { ThrowError("获取选择人员信息传参失败!"); } if (string.IsNullOrEmpty(filter.Parameter1)) { ThrowError("获取体检计划信息传参失败!"); } OHHealthExamType? examType = null; Guid NOTICE_ID = new Guid(filter.Parameter1);//页面ID Guid UserID = new Guid(filter.Keyword);//用户ID Guid ID = new Guid(filter.Parameter2);//行ID if (!string.IsNullOrEmpty(filter.Parameter3)) { examType = (OHHealthExamType)(int.Parse(filter.Parameter3)); } Guid? DEPARTMENT_ID = null; //Guid? DEPARTMENT_ID_WORKSHOP = null; T_FM_DEPARTMENT Department = null; //T_FM_DEPARTMENT DepartmentWorkshop = null; var User = GetEntity(UserID, "Nav_Department", "Nav_Person");// //部门=0, 车间=1, 班组=2, 公司=3 #region 获取部门信息 DEPARTMENT_ID = User.DEPARTMENT_ID.Value; Department = User.Nav_Department; //if (User.Nav_Department.DEPARTMENT_TYPE == 3) //{ // DEPARTMENT_ID = User.DEPARTMENT_ID.Value; // Department = User.Nav_Department; //} //else if (User.Nav_Department.DEPARTMENT_TYPE == 2) //{ // DEPARTMENT_ID_WORKSHOP = User.Nav_Department.PARENT_ID.Value; // DepartmentWorkshop = GetEntity(DEPARTMENT_ID_WORKSHOP.Value, "Nav_Parent"); // DEPARTMENT_ID = DepartmentWorkshop.PARENT_ID.Value; // Department = GetEntity(DEPARTMENT_ID.Value); //} //else if (User.Nav_Department.DEPARTMENT_TYPE == 1) //{ // DEPARTMENT_ID_WORKSHOP = User.DEPARTMENT_ID.Value; // DEPARTMENT_ID = User.Nav_Department.PARENT_ID.Value; // DepartmentWorkshop = User.Nav_Department; // Department = GetEntity(DEPARTMENT_ID.Value); //} //else if (User.Nav_Department.DEPARTMENT_TYPE == 0) //{ // DEPARTMENT_ID = User.DEPARTMENT_ID.Value; // Department = User.Nav_Department; //} #endregion //根据 这个 责任制岗位 设置的体检周期表 查找 职业危害类型 //User.Nav_Person.POST_ID; //List listPostCycle = null; List listDepPost = null; if (User.Nav_Person.POST_ID.HasValue) { listDepPost = GetEntities(e => e.POST_ID == User.Nav_Person.POST_ID.Value && e.Nav_DepartmentInfo.DEPARTMENT_ID == User.DEPARTMENT_ID.Value && !e.IS_DELETED && !e.Nav_DepartmentInfo.IS_DELETED, null, "Nav_DepartmentInfo").OrderByDescending(e => e.CREATE_TIME).ToList(); //List listDpost = GetEntities(e => e.DEPOST_ID == User.Nav_Person.POST_ID.Value, null, "Nav_Post").ToList(); //if (listDpost != null && listDpost.Any()) //{ // List listPostID = listDpost.Select(e => e.POST_ID).ToList(); // //TODO // //责任制岗位修改 0511 // //listPostCycle = GetEntities(e => listPostID.Contains(e.SC_POST_ID) && e.Nav_Record.DEPARTMENT_ID.HasValue && e.Nav_Record.DEPARTMENT_ID.Value == DEPARTMENT_ID, null, new string[] { "Nav_Record.Nav_ListOccHazard.Nav_Hazard" }).ToList(); //} } T_OH_HEALTH_EXAM_NOTICE_REGISTER modelCombin = new T_OH_HEALTH_EXAM_NOTICE_REGISTER(); modelCombin.ID = ID; modelCombin.NOTICE_ID = NOTICE_ID; modelCombin.USER_ID = UserID; modelCombin.Nav_User = User; modelCombin.DEPARTMENT_ID = DEPARTMENT_ID; modelCombin.Nav_Department = Department; //modelCombin.Nav_DepartmentWorkshop = DepartmentWorkshop; //modelCombin.DEPARTMENT_ID_WORKSHOP = DEPARTMENT_ID_WORKSHOP; //modelCombin.CYCLE_ID //modelCombin.EXAM_BATCH_ID if (examType.HasValue) { modelCombin.TYPE = examType.Value; } modelCombin.STATUS = OHHealthExamNoticeRegisterStatus.WaitNotice; modelCombin.IS_DELETED = false; modelCombin.ORG_ID = filter.OrgId; //自动匹配 体检批次 var listBanchDep = GetEntities(e => e.DEPARTMENT_ID == DEPARTMENT_ID && !e.IS_DELETED && e.Nav_Batch != null && !e.Nav_Batch.IS_DELETED && e.Nav_Batch.START_TIME > DateTime.Now, null, "Nav_Batch.Nav_User"); if (listBanchDep != null && listBanchDep.Any()) { //TODO 体检人所在部门 0512 修改一对多 var banchTemp = listBanchDep.OrderBy(e => e.Nav_Batch.START_TIME).ToList()[0]; modelCombin.EXAM_BATCH_ID = banchTemp.BATCH_ID; modelCombin.Nav_ExamBatch = banchTemp.Nav_Batch; modelCombin.Nav_ExamBatch.TIME = modelCombin.Nav_ExamBatch.START_TIME.ToString("yyyy-MM-dd") + "~" + modelCombin.Nav_ExamBatch.END_TIME.ToString("MM-dd"); modelCombin.THISDATE = modelCombin.Nav_ExamBatch.START_TIME;//本次体检时间 } //modelCombin.ENTITY_ORG_TPYE //modelCombin.FORM_ID //modelCombin.FLOW_STATUS //modelCombin.FLOW_SEND_STATUS //modelCombin.FLOW_ID //modelCombin.CREATE_TIME //modelCombin.MODIFY_TIME //modelCombin.CREATER_ID //modelCombin.MODIFIER_ID //modelCombin.PLAN_ID_DEP //modelCombin.PLAN_REGISTER_ID //modelCombin.NEXTDATE #region 获取上次体检时间 BaseFilter basFiliter = new BaseFilter(); basFiliter.Order = DbOrder.DESC; basFiliter.Orders.Add(new DataOrder() { Field = "THISDATE", Order = DbOrder.DESC }); var modelLast = GetEntity(e => !e.IS_DELETED && e.USER_ID == UserID && e.STATUS >= OHHealthExamNoticeRegisterStatus.NoticeResult, basFiliter, ""); if (modelLast != null && modelLast.THISDATE.HasValue) { modelCombin.LASTDATE = modelLast.THISDATE;//上次体检时间 就是上次通知的本次时间 } #endregion if (listDepPost != null && listDepPost.Any()) { modelCombin.CYCLE_ID = listDepPost[0].Nav_DepartmentInfo.EXAM_CYCLE_ID; //T_OH_HEALTH_EXAM_CYCLE_DEPARTMENTINFO_POST List listHazard = new List(); var examCycle = GetEntity(e => e.ID == modelCombin.CYCLE_ID, "Nav_ListOccHazard.Nav_Hazard"); foreach (var item in examCycle.Nav_ListOccHazard) { listHazard.Add(new T_OH_EXAM_NOTICE_OCC_HAZARD() { ID = Guid.NewGuid(), REGISTER_ID = modelCombin.ID, HAZARD_ID = item.HAZARD_ID, Nav_Hazard = item.Nav_Hazard, IS_DELETED = false, ORG_ID = item.ORG_ID, //ENTITY_ORG_TPYE //FORM_ID //FLOW_STATUS //FLOW_SEND_STATUS //FLOW_ID //CREATE_TIME //MODIFY_TIME //CREATER_ID //MODIFIER_ID }); } modelCombin.Nav_ListOccHazard = listHazard; } //if (listPostCycle != null && listPostCycle.Count > 0) //{ // if (listPostCycle.Count == 1) // { // modelCombin.CYCLE_ID = listPostCycle[0].RECORD_ID; // } // List listHazard = new List(); // foreach (var item in listPostCycle) // { // foreach (var itemOcc in item.Nav_Record.Nav_ListOccHazard) // { // if (itemOcc?.Nav_Hazard?.RISK_TYPE == HMRiskTypeEnmu.职业危害辨识) // { // //职业危害辨识 // listHazard.Add(new T_OH_EXAM_NOTICE_OCC_HAZARD() // { // ID = Guid.NewGuid(), // REGISTER_ID = modelCombin.ID, // HAZARD_ID = itemOcc.HAZARD_ID, // Nav_Hazard = itemOcc.Nav_Hazard, // IS_DELETED = false, // ORG_ID = item.ORG_ID, // //ENTITY_ORG_TPYE // //FORM_ID // //FLOW_STATUS // //FLOW_SEND_STATUS // //FLOW_ID // //CREATE_TIME // //MODIFY_TIME // //CREATER_ID // //MODIFIER_ID // }); // } // } // } // modelCombin.Nav_ListOccHazard = listHazard; //} return modelCombin; }); } /// /// 自动推送 体检通知 /// 加载体检人员 /// /// /// [HttpPost, Route("GetNoticeCycle")] public JsonActionResult GetNoticeCycle([FromBody] KeywordFilter filter) { return SafeExecute(() => { T_OH_HEALTH_EXAM_NOTICE NoticeCycle = GetEntity(null, filter, new string[] { "Nav_ListNoticeRegister.Nav_User", "Nav_ListNoticeRegister.Nav_Department", "Nav_ListNoticeRegister.Nav_DepartmentWorkshop", "Nav_ListNoticeRegister.Nav_Cycle", "Nav_ListNoticeRegister.Nav_ExamBatch", "Nav_ListNoticeRegister.Nav_ListOccHazard.Nav_Hazard", "Nav_Files" }); if (NoticeCycle == null) { throw new Exception("获取体检通知信息失败!"); } if (NoticeCycle.ISSYSTEM) { var ListNoticeRegister = NoticeCycle.Nav_ListNoticeRegister; //下次体检时间 DateTime dtNoticeEnd = DateTime.Now.Date.AddDays(16).AddSeconds(-1); //半个月以内要体检的人 var listNoticeReg = GetEntities(e => e.NEXTDATE.HasValue && e.NEXTDATE <= dtNoticeEnd && !e.IS_DELETED, null, new string[] { "Nav_User", "Nav_Department", "Nav_DepartmentWorkshop", "Nav_Cycle", "Nav_ListOccHazard.Nav_Hazard" }).OrderBy(e => e.DEPARTMENT_ID); if (listNoticeReg != null && listNoticeReg.Any()) { //根据部门 自动匹配 //体检批次 开始时间 半个月以内的 List listBatchSuit = GetEntities(e => e.START_TIME > DateTime.Now && e.START_TIME < dtNoticeEnd && e.Nav_ListDepartment != null && !e.IS_DELETED, null, new string[] { "Nav_User", "Nav_ListDepartment" }).OrderBy(e => e.START_TIME).ToList(); //Nav_Department List listBatchDep = new List(); for (int i = listBatchSuit.Count - 1; i > -1; i--) { if (listBatchSuit[i].Nav_ListDepartment == null || !listBatchSuit[i].Nav_ListDepartment.Any()) { listBatchSuit.RemoveAt(i); } listBatchDep.AddRange(listBatchSuit[i].Nav_ListDepartment.ToList()); } List listBatchCheck = null; T_OH_HEALTH_EXAM_NOTICE_REGISTER modelCheck = null; List ListOccHazard = null; foreach (var item in listNoticeReg) { modelCheck = ListNoticeRegister.FirstOrDefault(e => e.USER_ID == item.USER_ID); if (modelCheck == null) { modelCheck = new T_OH_HEALTH_EXAM_NOTICE_REGISTER(); modelCheck.ID = Guid.NewGuid(); modelCheck.NOTICE_ID = NoticeCycle.ID; modelCheck.USER_ID = item.USER_ID; modelCheck.Nav_User = item.Nav_User; modelCheck.Nav_Department = item.Nav_Department; modelCheck.Nav_DepartmentWorkshop = item.Nav_DepartmentWorkshop; modelCheck.Nav_Cycle = item.Nav_Cycle; if (item.Nav_ListOccHazard != null && item.Nav_ListOccHazard.Any()) { ListOccHazard = new List(); foreach (var itemHaz in item.Nav_ListOccHazard) { ListOccHazard.Add(new T_OH_EXAM_NOTICE_OCC_HAZARD() { ID = Guid.NewGuid(), REGISTER_ID = modelCheck.ID, HAZARD_ID = itemHaz.HAZARD_ID, Nav_Hazard = itemHaz.Nav_Hazard, IS_DELETED = false, ORG_ID = itemHaz.ORG_ID, //ENTITY_ORG_TPYE =, //FORM_ID =, //FLOW_STATUS =, //FLOW_SEND_STATUS =, //FLOW_ID =, //CREATE_TIME =, //MODIFY_TIME =, //CREATER_ID =, //MODIFIER_ID =, }); } modelCheck.Nav_ListOccHazard = ListOccHazard; } modelCheck.DEPARTMENT_ID = item.DEPARTMENT_ID; modelCheck.DEPARTMENT_ID_WORKSHOP = item.DEPARTMENT_ID_WORKSHOP; modelCheck.CYCLE_ID = item.CYCLE_ID; //modelCheck.EXAM_BATCH_ID = item.EXAM_BATCH_ID; //TODO 体检人所在部门 0512 修改一对多 ////根据实际 重新匹配 体检批次 //listBatchCheck = listBatchSuit.FindAll(e => e.DEPARTMENT_ID == modelCheck.Nav_User.DEPARTMENT_ID).OrderBy(e => e.START_TIME).ToList(); //if ((listBatchCheck == null || !listBatchCheck.Any()) && modelCheck.DEPARTMENT_ID_WORKSHOP.HasValue) //{ // listBatchCheck = listBatchSuit.FindAll(e => e.DEPARTMENT_ID == modelCheck.DEPARTMENT_ID_WORKSHOP).OrderBy(e => e.START_TIME).ToList(); //} //if ((listBatchCheck == null || !listBatchCheck.Any()) && modelCheck.DEPARTMENT_ID.HasValue) //{ // listBatchCheck = listBatchSuit.FindAll(e => e.DEPARTMENT_ID == modelCheck.DEPARTMENT_ID).OrderBy(e => e.START_TIME).ToList(); //} listBatchCheck = listBatchSuit.FindAll(e => e.Nav_ListDepartment.FirstOrDefault(e => e.DEPARTMENT_ID == modelCheck.Nav_User.DEPARTMENT_ID) != null).OrderBy(e => e.START_TIME).ToList(); if (listBatchCheck != null && listBatchCheck.Any()) { modelCheck.EXAM_BATCH_ID = listBatchCheck[0].ID; modelCheck.Nav_ExamBatch = listBatchCheck[0]; modelCheck.Nav_ExamBatch.TIME = listBatchCheck[0].START_TIME.ToString("yyyy-MM-dd") + " ~ " + listBatchCheck[0].END_TIME.ToString("MM-dd"); } ////根据实际 重新匹配 体检批次 //listBatchCheck = listBatchSuit.FindAll(e => e.DEPARTMENT_ID == modelCheck.Nav_User.DEPARTMENT_ID).OrderBy(e => e.START_TIME).ToList(); //if ((listBatchCheck == null || !listBatchCheck.Any()) && modelCheck.DEPARTMENT_ID_WORKSHOP.HasValue) //{ // listBatchCheck = listBatchSuit.FindAll(e => e.DEPARTMENT_ID == modelCheck.DEPARTMENT_ID_WORKSHOP).OrderBy(e => e.START_TIME).ToList(); //} //if ((listBatchCheck == null || !listBatchCheck.Any()) && modelCheck.DEPARTMENT_ID.HasValue) //{ // listBatchCheck = listBatchSuit.FindAll(e => e.DEPARTMENT_ID == modelCheck.DEPARTMENT_ID).OrderBy(e => e.START_TIME).ToList(); //} //if (listBatchCheck != null && listBatchCheck.Any()) //{ // modelCheck.EXAM_BATCH_ID = listBatchCheck[0].ID; // modelCheck.Nav_ExamBatch = listBatchCheck[0]; // modelCheck.Nav_ExamBatch.TIME = listBatchCheck[0].START_TIME.ToString("yyyy-MM-dd") + " ~ " + listBatchCheck[0].END_TIME.ToString("MM-dd"); //} modelCheck.TYPE = item.TYPE; modelCheck.STATUS = OHHealthExamNoticeRegisterStatus.WaitNotice; modelCheck.IS_DELETED = item.IS_DELETED; modelCheck.ORG_ID = item.ORG_ID; //modelCheck.ENTITY_ORG_TPYE =item. ; //modelCheck.FORM_ID =item.; //modelCheck.FLOW_STATUS=item.; //modelCheck.FLOW_SEND_STATUS=item. ; //modelCheck.FLOW_ID =item.; //modelCheck.CREATE_TIME =item.; //modelCheck.MODIFY_TIME =item.; //modelCheck.CREATER_ID =item.; //modelCheck.MODIFIER_ID =item.; modelCheck.PLAN_ID_DEP = item.PLAN_ID_DEP; modelCheck.PLAN_REGISTER_ID = item.PLAN_REGISTER_ID; //modelCheck.NEXTDATE = item. ; } ListNoticeRegister.Add(modelCheck); } } NoticeCycle.Nav_ListNoticeRegister = ListNoticeRegister; } return NoticeCycle; }); } } }