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.OH; 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/OHHealthExamCycle")] public class OHHealthExamCycleController : AuthorizeApiController { IFMFlowPermitService MFlowPermitService { get; set; } IPFApproveCallBackService ApproveCallBackService { get; set; } IAEAccidentEventReportService AccidentEventReportService { get; set; } public OHHealthExamCycleController(IFMFlowPermitService mFlowPermitService, IPFApproveCallBackService approveCallBackService, IAEAccidentEventReportService accidentEventReportService) { MFlowPermitService = mFlowPermitService; ApproveCallBackService = approveCallBackService; AccidentEventReportService = accidentEventReportService; } /// /// 排序分页查询数据 /// /// 分页过滤实体 /// [HttpPost, Route("OrderPagedDepWorkshop")] public PagedActionResult OrderPagedDepWorkshop([FromBody] KeywordPageFilter pageFilter) { return SafeGetPagedData(delegate (PagedActionResult result) { bool isSentDepID = false; if (pageFilter.FilterGroup.Rules.Count == 2) { foreach (var item in pageFilter.FilterGroup.Rules) { if (item.Field == "PARENT_ID" && item.Value != null) { isSentDepID = true; } } } if (isSentDepID) { //如果没有部门 返回空 PagedActionResult orderPageEntities = GetOrderPageEntities(null, pageFilter, null); result.Data = orderPageEntities.Data; result.TotalCount = orderPageEntities.TotalCount; } else { result.Data = new List(); result.TotalCount = 0; } }); } /// /// 体检周期表 修改 /// /// /// [HttpPost, Route("FullUpdate")] public JsonActionResult FullUpdate([FromBody] T_OH_HEALTH_EXAM_CYCLE entity) { #region 新版 return SafeExecute(() => { var listOcc = entity.Nav_ListOccHazard; entity.Nav_ListOccHazard = null; var listDepartmentInfo = entity.Nav_ListDepartmentInfo; entity.Nav_ListDepartmentInfo = null; List listDepartmentInfoPost = new List(); //var listPost = entity.Nav_ListSCPost; //entity.Nav_ListSCPost = null; //if (listPost == null || !listPost.Any() || listPost.Where(e => e.IS_DELETED) == null) //{ // throw new Exception("请选择岗位"); //} if (listOcc == null || !listOcc.Any()) { throw new Exception("请选择职业危害类型"); } if (string.IsNullOrEmpty(entity.HEALTH_EXAM_CONTENT)) { throw new Exception("请填写体检项目"); } else if (entity.HEALTH_EXAM_CONTENT.Length > 200) { throw new Exception("体检项目不能超过200个字符"); } if (entity.HEALTH_EXAM_CYCLE < 1) { throw new Exception("体检周期不能小于1"); } else if (entity.HEALTH_EXAM_CYCLE > 12) { throw new Exception("体检周期不能大于12"); } if (listDepartmentInfo == null || !listDepartmentInfo.Any()) { throw new Exception("请选择部门岗位信息!"); } var listDepartmentInfoS = listDepartmentInfo.ToList(); for (int i = 0; i < listDepartmentInfoS.Count(); i++) { if (!listDepartmentInfoS[i].DEPARTMENT_ID.HasValue) { throw new Exception("请选择行【" + (i + 1) + "】的部门!"); } if (listDepartmentInfoS[i].Nav_ListDepartmentInfoPost == null || !listDepartmentInfoS[i].Nav_ListDepartmentInfoPost.Any()) { throw new Exception("请选择行【" + (i + 1) + "】的岗位!"); } else { foreach (var item in listDepartmentInfoS[i].Nav_ListDepartmentInfoPost) { listDepartmentInfoPost.Add(item); item.Nav_Post = null; } listDepartmentInfoS[i].Nav_ListDepartmentInfoPost = null; } } if (listOcc != null && listOcc.Any()) { foreach (var item in listOcc) { item.Nav_Hazard = null; } } if (listDepartmentInfoPost == null || !listDepartmentInfoPost.Any()) { throw new Exception("岗位"); } this.UnifiedCommit(() => { if (entity != null) UpdateEntityNoCommit(entity); //事故事件上报 if (listOcc != null && listOcc.Any())//职业危害类型 BantchSaveEntityNoCommit(listOcc); if (listDepartmentInfo != null && listDepartmentInfo.Any())//职业危害类型 BantchSaveEntityNoCommit(listDepartmentInfo); if (listDepartmentInfoPost != null && listDepartmentInfoPost.Any())//职业危害类型 BantchSaveEntityNoCommit(listDepartmentInfoPost); //if (listPost != null && listPost.Any())//岗位 // BantchSaveEntityNoCommit(listPost); }); return true; }); #endregion #region 旧版 //return SafeExecute(() => //{ // if (entity.DEPARTMENT_ID == null) // { // throw new Exception("请选择部门"); // } // var listOcc = entity.Nav_ListOccHazard; // var listPost = entity.Nav_ListSCPost; // entity.Nav_ListOccHazard = null; // entity.Nav_ListSCPost = null; // if (listPost == null || !listPost.Any() || listPost.Where(e => e.IS_DELETED) == null) // { // throw new Exception("请选择岗位"); // } // //if (listOcc == null || !listOcc.Any()) // //{ // // throw new Exception("请选择职业危害类型"); // //} // if (string.IsNullOrEmpty(entity.HEALTH_EXAM_CONTENT)) // { // throw new Exception("请填写体检项目"); // } // else if (entity.HEALTH_EXAM_CONTENT.Length > 200) // { // throw new Exception("体检项目不能超过200个字符"); // } // if (entity.HEALTH_EXAM_CYCLE < 1) // { // throw new Exception("体检周期不能小于1"); // } // var listPostID = listPost.Where(e => !e.IS_DELETED).Select(e => e.SC_POST_ID); // //车间 岗位 职业危害类型 不能重复 // Expression> expression = e => e.ID != entity.ID && e.DEPARTMENT_ID == entity.DEPARTMENT_ID; // if (entity.DEPARTMENT_ID_WORKSHOP.HasValue) // { // expression.And(e => e.DEPARTMENT_ID_WORKSHOP == entity.DEPARTMENT_ID_WORKSHOP); // } // var listCycle = GetEntities(expression, null, new string[] { "Nav_ListSCPost.Nav_SCPost", "Nav_ListOccHazard.Nav_Hazard" }); // if (listCycle != null && listCycle.Any()) // { // //岗位 // //职业危害 // //不允许 同时 重复 // foreach (var item in listCycle) // { // var checkPost = item.Nav_ListSCPost.Where(e => !e.IS_DELETED && listPostID.Contains(e.SC_POST_ID)); // if (checkPost != null && checkPost.Any()) // { // //有重复的岗位 // if (listOcc != null && listOcc.Any()) // { // //主表 判断查询的 都有职业危害类型 // var listHAZARD_ID = item.Nav_ListOccHazard.Where(e => !e.IS_DELETED).Select(e => e.HAZARD_ID); // var repHazard = listOcc.Where(e => !e.IS_DELETED && listHAZARD_ID.Contains(e.HAZARD_ID)); // if (repHazard != null && repHazard.Any()) // { // var strRepHazard = string.Join(",", repHazard.ToList().Select(e => e.Nav_Hazard.NAME).ToList()); // var strRepPost = string.Join(",", checkPost.ToList().Select(e => e.Nav_SCPost.NAME).ToList()); // throw new Exception("此信息与系统中的【部门、车间、岗位(" + strRepPost + ")、职业危害类型(" + strRepHazard + ")】重复!"); // } // } // else // { // var strRepPost = string.Join(",", checkPost.ToList().Select(e => e.Nav_SCPost.NAME).ToList()); // //没有职业危害类型 // if (item.Nav_ListOccHazard == null || !item.Nav_ListOccHazard.Any()) // { // //添加的 体检周期表 在这个岗位 没有 添加职业危害重复 // throw new Exception("此信息与系统中的【部门、车间、岗位(" + strRepPost + ")】重复!"); // } // } // } // } // } // if (listOcc != null && listOcc.Any()) // { // foreach (var item in listOcc) // { // item.Nav_Hazard = null; // } // } // foreach (var item in listPost) // { // item.Nav_SCPost = null; // } // this.UnifiedCommit(() => // { // if (entity != null) // UpdateEntityNoCommit(entity); //事故事件上报 // if (listOcc != null && listOcc.Any())//职业危害类型 // BantchSaveEntityNoCommit(listOcc); // if (listPost != null && listPost.Any())//岗位 // BantchSaveEntityNoCommit(listPost); // }); // return true; //}); #endregion } /// /// 排序分页查询数据 /// /// 分页过滤实体 /// [HttpPost, Route("OrderPagedSub")] public PagedActionResult OrderPagedSub([FromBody] KeywordPageFilter pageFilter) { return SafeGetPagedData(delegate (PagedActionResult result) { //pageFilter.Include.Add("Nav_ListSCPost.Nav_SCPost"); //pageFilter.Include.Add("Nav_ListOccHazard.Nav_Hazard"); PagedActionResult orderPageEntities = GetOrderPageEntities(null, pageFilter, null); result.Data = orderPageEntities.Data; if (orderPageEntities.TotalCount > 0) { var listID = result.Data.Select(e => e.ID); var listPost = GetEntities(e => listID.Contains(e.RECORD_ID), null, new string[] { "Nav_SCPost" }); var listOccHazard = GetEntities(e => listID.Contains(e.RECORD_ID), null, new string[] { "Nav_Hazard" }); int count = result.Data.Count(); foreach (var item in result.Data) { var listTOccHazard = listOccHazard.Where(e => e.RECORD_ID == item.ID); if (listTOccHazard != null && listTOccHazard.Any()) { if (item.OCCHAZARD == null) { item.OCCHAZARD = ""; } foreach (var itemOCC in listTOccHazard) { item.OCCHAZARD += (item.OCCHAZARD.Length > 0 ? "," : "") + itemOCC.Nav_Hazard.NAME; } } var listTPost = listPost.Where(e => e.RECORD_ID == item.ID); if (listTPost != null && listTPost.Any()) { //TODO //责任制岗位修改 0511 //if (item.SCPost == null) //{ // item.SCPost = ""; //} //foreach (var itemPost in listTPost) //{ // item.SCPost += (item.SCPost.Length > 0 ? "," : "") + itemPost.Nav_SCPost.NAME; //} } } } result.TotalCount = orderPageEntities.TotalCount; }); } } }