using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Reflection.Metadata; using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.Entities.OP; using APT.BaseData.Domain.Enums; using APT.BaseData.Domain.Enums.PF; using APT.BaseData.Domain.IServices.FM; using APT.Infrastructure.Api; using APT.Infrastructure.Core; using APT.Migrations; using APT.MS.Domain.Entities.OG; using APT.MS.Domain.Entities.SC.SC; using APT.MS.Domain.Entities.SE; using APT.MS.Domain.Enums; using APT.Utility; using Castle.Core.Internal; using ICSharpCode.SharpZipLib.Core; using Microsoft.AspNetCore.Mvc; using NPOI.HSSF.Record; using NPOI.HSSF.Record.Chart; using NPOI.SS.Formula.Functions; using NPOI.Util; namespace APT.SC.WebApi.Controllers.Api.SE { [Route("api/SE/SENewUsers")] public class SENewUsersController : AuthorizeApiController { IFMNotificationTaskService NotificationTaskService { get; set; } public SENewUsersController(IFMNotificationTaskService notificationTaskService) { NotificationTaskService = notificationTaskService; } /// /// 更新 /// /// /// [HttpPost, Route("FullUpdate")] public JsonActionResult FullUpdate([FromBody] T_SE_NEW_USERS entity) { return SafeExecute(() => { List sendNoticeList = new List(); List detailFiles = new List(); T_FM_NOTIFICATION_TASK finishNotice = null; var Nav_NewUserDetail = entity.Nav_NewUserDetail; var Nav_Files = entity.Nav_Files; if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify")) { var endTime = DateTime.Now.AddDays(10); var newEndTime = new DateTime(endTime.Year, endTime.Month, endTime.Day, 23, 59, 59); if (entity.TRAINNING_TIME == "0" || string.IsNullOrEmpty(entity.TRAINNING_TIME)) { throw new Exception("学时不能为0!"); } BaseFilter bf = new BaseFilter(entity.ORG_ID); bf.Include = new string[] { "Nav_Parent.Nav_Parent" }; var alldeps = GetEntities(t => t.ENABLE_STATUS == 0, bf); var currUserDepId = APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID; var auditDep = GetEntity(currUserDepId.ToString()); var listCode = Nav_NewUserDetail.Where(e => e.CODE.Length > 0).Select(e => e.CODE); var listUserCheck = GetEntities(e => listCode.Contains(e.CODE), null, null); foreach (var item in Nav_NewUserDetail) { var dep = alldeps.FirstOrDefault(t => t.ID == item.USER_DEPARTMENT_ID); if (dep.DEPARTMENT_TYPE == auditDep.DEPARTMENT_TYPE) { if (string.IsNullOrEmpty(item.CODE)) { throw new Exception("请填写" + item.Nav_User.NAME + "的工号!"); } if (item.USER_POST_ID == Guid.Empty || item.USER_POST_ID == null) { throw new Exception("请填写" + item.Nav_User.NAME + "的岗位!"); } } if (listUserCheck != null && listUserCheck.Count() > 0 && !string.IsNullOrEmpty(item.CODE) && item.USER_ID.HasValue) { var CodeCheck = listUserCheck.FirstOrDefault(e => e.CODE == item.CODE && e.ID != item.USER_ID); if (CodeCheck != null) { throw new Exception("工号不能重复【" + item.CODE + "】!"); } } } if (entity.TRAIN_STATUS == SEThreeLevelSafeTrainType.公司级) { foreach (var item in Nav_NewUserDetail) { var dep = alldeps.FirstOrDefault(t => t.ID == item.USER_DEPARTMENT_ID); if (dep.DEPARTMENT_TYPE == 0) { item.NEXT_DEPARTMENT_ID = dep.ID; } if (dep.DEPARTMENT_TYPE == 1) { item.NEXT_DEPARTMENT_ID = dep.Nav_Parent.ID; } else if (dep.DEPARTMENT_TYPE == 2) { item.NEXT_DEPARTMENT_ID = dep.Nav_Parent.Nav_Parent.ID; } } } if (entity.TRAIN_STATUS == SEThreeLevelSafeTrainType.部门级) { foreach (var item in Nav_NewUserDetail) { item.NEXT_DEPARTMENT_ID = item.USER_DEPARTMENT_ID; } } var allDepartment = Nav_NewUserDetail.Where(t => t.IS_DELETED == false).Select(t => t.USER_DEPARTMENT_ID); var allUser = GetEntities(t => allDepartment.Contains(t.DEPARTMENT_ID) && t.Nav_ApproveRole != null, new BaseFilter(entity.ORG_ID)); if (entity.IS_CREATETEST == SETrainNeedSuvey.否) { foreach (var item in Nav_NewUserDetail) { if (string.IsNullOrEmpty(item.SCORE)) { throw new Exception("线下考试请填写分数!"); } if (item.Nav_Files == null) { throw new Exception("线下考试请上传附件!"); } if (item.Nav_Files != null && item.Nav_Files.Count() > 0) { item.Nav_Files.ForEach(nf => { nf.USER_DETAIL_ID = item.ID; }); detailFiles.AddRange(item.Nav_Files); item.Nav_Files = null; } } } var listUserID = Nav_NewUserDetail.Where(e => e.USER_ID.HasValue).Select(e => e.USER_ID.Value); var listUser = GetEntities(e => listUserID.Contains(e.ID), null); foreach (var item in Nav_NewUserDetail) { if (!item.USER_ID.HasValue) continue; sendNoticeList.Add(NotificationTaskService.InsertUserNoticeTaskModel("三级安全培训记录-" + entity.TRAIN_STATUS.GetDescription() + "-签到", item.ID, entity.ORG_ID, (Guid)item.USER_ID, listUser.FirstOrDefault(e => e.ID == item.USER_ID.Value)?.NAME, DateTime.Now, DateTime.Now.AddDays(1), 1, "SE062_SHOWPRINT")); } finishNotice = NotificationTaskService.GetTaskFinishModel(entity.TaskID, "SE061_SHOWPRINT"); } UnifiedCommit(() => { UpdateEntityNoCommit(entity); if (sendNoticeList != null && sendNoticeList.Any()) BantchAddEntityNoCommit(sendNoticeList); if (finishNotice != null) UpdateEntityNoCommit(finishNotice); if (Nav_NewUserDetail != null && Nav_NewUserDetail.Any()) BantchSaveEntityNoCommit(Nav_NewUserDetail); if (Nav_Files != null && Nav_Files.Any()) BantchSaveEntityNoCommit(Nav_Files); if (detailFiles.Any()) BantchSaveEntityNoCommit(detailFiles); }); return true; }); } /// /// 更新 /// /// /// [HttpPost, Route("PersonalAgree")] public JsonActionResult PersonalAgree([FromBody] KeywordFilter filter) { return SafeExecute(() => { var orgId = filter.GetOrgId(); var currID = Guid.Parse(filter.Parameter1); var taskID = Guid.Parse(filter.Parameter2); var eduCardID = Guid.Parse(filter.Parameter3); var userID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; if (taskID != null && taskID != Guid.Empty) { var currTask = GetEntity(t => t.ID == taskID); if (currTask != null) { userID = currTask.USER_ID; } } T_FM_NOTIFICATION_TASK finishNotice = null; T_FM_NOTIFICATION_TASK sendNotice = null; finishNotice = NotificationTaskService.GetTaskFinishModel(taskID); List Nav_Papers = null; #region var eduCard = GetEntity(eduCardID); List units = new List(); var currUser = GetEntity(t => t.ID == userID); var currUserDeail = GetEntity(t => t.ID == currID); var currPerson = GetEntity(t => t.ID == currUser.PERSON_ID); T_FM_DEPARTMENT departInfo = null; if (!string.IsNullOrEmpty(currUserDeail.CODE))//不一样才进行 修改 比如一开始 是手机号码 配置的是工号 { departInfo = this.GetEntity(currUserDeail.USER_DEPARTMENT_ID.ToString()); if (departInfo != null && departInfo.MineType != null) { var enumList = this.GetEntity(t => t.CODE == "BSMineTypeEnum" && t.VALUE == departInfo.MineType); currUser.MineType = departInfo.MineType.ToString(); T_FM_USER_PRODUCTION_UNIT unit = new T_FM_USER_PRODUCTION_UNIT(); unit.ORG_ID = orgId; unit.USER_ID = (Guid)userID; unit.ENUMS_ID = enumList?.ID; unit.Nav_Enums = null; units.Add(unit); } if (!string.IsNullOrEmpty(currUserDeail.CODE) && currUserDeail.CODE != currUser.CODE) { var userCodeCheck = GetEntity(e => e.CODE == currUserDeail.CODE && e.ID != currUser.ID); if (userCodeCheck != null) { throw new Exception("工号不能重复,请核对工号并联系管理员处理!"); } using (var context = new MigrationContext(ConfigurationManager.ConnectionStrings["default"])) { var opuser = context.GetEntity(t => t.CODE == currUser.CODE, null); opuser.CODE = currUserDeail.CODE; context.UpdateEntity(opuser); context.SaveChanges(); } } currUser.CODE = currUserDeail.CODE; currUser.DEPARTMENT_ID = currUserDeail.USER_DEPARTMENT_ID; currPerson.CODE = currUserDeail.CODE; currPerson.DEPARTMENT_ID = currUserDeail.USER_DEPARTMENT_ID; currPerson.POST_ID = currUserDeail.USER_POST_ID; UpdateEntity(currUser); UpdateEntity(currPerson); } T_SE_NEW_USERS eduCardRef = null; T_SE_NEW_USERS newEduCard = null; List userDetailList = null; T_SE_NEW_USER_DETAIL currDetail = null; T_FM_NOTIFICATION_TASK sendNoticeRef = null; T_OG_SAFE_PDT_SIGNED signRecord = null; T_OG_SAFE_PDT_SIGNED_POST signPost = null; if (eduCard.IS_CREATETEST == SETrainNeedSuvey.是) { List sendNotices = new List(); var config = GetEntity(t => true); var SCount = 1; var MCount = 1; var CCount = 1; if (config != null) { if (config.M_TEST_COUNT > 0) { MCount = config.M_TEST_COUNT; } if (config.S_TEST_COUNT > 0) { SCount = config.S_TEST_COUNT; } if (config.C_TEST_COUNT > 0) { CCount = config.C_TEST_COUNT; } } var testidlist = new List(); var testFilter = new BaseFilter(filter.GetOrgId()); testFilter.Include = new string[] { "Nav_Points" }; var currStatus = eduCard.TRAIN_STATUS; IEnumerable pointS = new List(); if (eduCard.TRAIN_STATUS == SEThreeLevelSafeTrainType.公司级) { pointS = GetEntities(t => t.NAME == "三级安全教育-公司级", new BaseFilter(orgId)); } else if (eduCard.TRAIN_STATUS == SEThreeLevelSafeTrainType.部门级) { pointS = GetEntities(t => t.NAME == "三级安全教育-部门级", new BaseFilter(orgId)); } else if (eduCard.TRAIN_STATUS == SEThreeLevelSafeTrainType.班组级) { pointS = GetEntities(t => t.NAME == "三级安全教育-班组级", new BaseFilter(orgId)); } var pointIDS = pointS.Select(t => t.ID).ToList(); var allTests = GetEntities(st => st.Nav_Points.Any(pt => pointIDS.Contains((Guid)pt.POINT_ID)), testFilter).ToList(); var errorMsg = ""; if (errorMsg != "") { throw new Exception("知识点 " + errorMsg + " 没有题目!"); } CreateTestList(allTests, testidlist, pointIDS, (int)SETestTypeEnum.是非题, CCount); CreateTestList(allTests, testidlist, pointIDS, (int)SETestTypeEnum.单选题, SCount); CreateTestList(allTests, testidlist, pointIDS, (int)SETestTypeEnum.多选题, MCount); if (testidlist.Count == 0) { throw new Exception("当前题库数据不足,未能正常生成试卷!"); } Nav_Papers = new List(); testidlist.ForEach(testid => { var p = new T_SE_NEW_USER_DETAIL_PAPER { RECORD_ID = currID, ID = Guid.NewGuid(), ORG_ID = filter.GetOrgId(), USER_ID = userID, TEST_ID = testid, ANSWER = 0, }; Nav_Papers.Add(p); }); sendNotice = NotificationTaskService.InsertUserNoticeTaskModel("三级安全教育在线答题-" + eduCard.TRAIN_STATUS.GetDescription(), currID, filter.GetOrgId(), (Guid)userID, GetEntity((Guid)userID).NAME, DateTime.Now, DateTime.Now.AddHours(12), 1, "SE061_PAPERPAGE"); } else { CreateNextLevel(orgId, currID, taskID, eduCardID, null, ref eduCardRef, ref newEduCard, ref userDetailList, ref currDetail, ref sendNoticeRef); #region wyw 如果没有继续触发下一级 直接触发 安全生产责任制签订 OG001_SHOWPRINT 如果找不到对应的责任制 就给对应组织安全员(或班长) 触发今日提醒 GetOG001(taskID, currUser, currPerson, departInfo, ref signRecord, ref signPost, ref sendNoticeRef); //if (sendNoticeRef == null) //{ // var post = GetEntity(t => t.Nav_Dept.DEPARTMENT_ID == currUser.DEPARTMENT_ID && t.DEPOST_ID == currPerson.POST_ID, new string[] { "Nav_Dept.Nav_Post" }); // if (post != null) // { // var standardCreate = GetEntity(t => t.POST_ID == post.Nav_Dept.POST_ID && t.STATUS == SCSystemEditStatus.已归档 && t.FILE_STATUS == SCSystemFileStatus.有效); // if (standardCreate != null) // { // var chargeUser = GetEntity(t => t.DEPARTMENT_ID == post.Nav_Dept.Nav_Post.DEPARTMENT_ID && t.Nav_Person.POST_ID == post.Nav_Dept.Nav_Post.DEPOST_ID && t.ENABLE_STATUS == 0); // if (chargeUser != null) // { // signRecord = new T_OG_SAFE_PDT_SIGNED // { // ID = Guid.NewGuid(), // ORG_ID = currUser.ORG_ID, // STATUS = (int)PFStandardStatus.Draft, // TRIGGER_TYPE = OGPersonalSignedTriggerType.新员工触发, // //TRIGGER_TYPE = OGPersonalSignedTriggerType.手动新增, // STANDARD_ID = standardCreate.ID, // FILE_CONTENT = standardCreate.FILE_CONTENT, // DEPARTMENT_ID = currUser.DEPARTMENT_ID, // ANNUAL = DateTime.Now.Year // }; // if (chargeUser != null) // { // signRecord.CHARGE_USER_ID = chargeUser.ID; // } // signPost = new T_OG_SAFE_PDT_SIGNED_POST // { // SAFE_PDT_SIGNED_ID = signRecord.ID, // ID = Guid.NewGuid(), // ORG_ID = currUser.ORG_ID, // USER_ID = currUser.ID, // POST_ID = currPerson.POST_ID, // CHARGE_USER_ID = signRecord.CHARGE_USER_ID // }; // sendNoticeRef = NotificationTaskService.InsertUserNoticeTaskModel(DateTime.Now.ToShortDateString() + "安全生产责任制个人签订表", signRecord.ID, currUser.ORG_ID, currUser.ID, currUser.NAME, DateTime.Now, DateTime.Now.AddDays(7), 1, "OG001_SHOWPRINT"); // } // } // } // else // { // //找不到 责任制 // T_FM_USER sendUser = null; // var userApprol = GetEntities(e => e.ENABLE_STATUS == 0 && e.DEPARTMENT_ID.HasValue && e.APPROVE_ROLE_ID.HasValue && e.DEPARTMENT_ID.Value == currUser.DEPARTMENT_ID.Value, null, "Nav_ApproveRole"); // if (userApprol != null && userApprol.Count() > 0 && currPerson.POST_ID.HasValue) // { // switch (departInfo.DEPARTMENT_TYPE)//FMDepartmentType 部门=0, 车间=1, 班组=2, 公司=3 // { // case 2: // sendUser = userApprol.FirstOrDefault(e => e.Nav_ApproveRole.NAME.Contains("负责人")); // break; // default: // sendUser = userApprol.FirstOrDefault(e => e.Nav_ApproveRole.NAME.Contains("安全")); // break; // } // } // if (sendUser == null) // { // //找不到人只能给她自己做联系人员处理 // sendNoticeRef = NotificationTaskService.InsertUserNoticeTaskModel("请联系你所在组织安全员绑定责任制岗位并上传责任状", currID, currUser.ORG_ID, currUser.ID, currUser.NAME, DateTime.Now, DateTime.Now.AddDays(7), (int)FMNoticeTypeEnum.今日提醒, "PF135"); // } // else // { // var UserPost = GetEntity(currPerson.POST_ID.Value); // sendNoticeRef = NotificationTaskService.InsertUserNoticeTaskModel("请为《" + currUser.NAME + ":" + UserPost.NAME + "》绑定责任制岗位并上传责任状", currID, currUser.ORG_ID, sendUser.ID, sendUser.NAME, DateTime.Now, DateTime.Now.AddDays(7), (int)FMNoticeTypeEnum.今日提醒, "PF135"); // } // } //} #endregion } #endregion UnifiedCommit(() => { if (finishNotice != null) UpdateEntityNoCommit(finishNotice); if (sendNotice != null) AddEntityNoCommit(sendNotice); if (Nav_Papers != null && Nav_Papers.Any()) BantchAddEntityNoCommit(Nav_Papers); if (units.Any()) BantchSaveEntityNoCommit(units); //CreateNextLevel wyw 从 方法体抽出来的 if (eduCardRef != null) UpdateEntityNoCommit(eduCardRef); if (newEduCard != null) AddEntityNoCommit(newEduCard); if (userDetailList != null) BantchAddEntityNoCommit(userDetailList); if (currDetail != null) UpdateEntityNoCommit(currDetail); if (sendNoticeRef != null) AddEntityNoCommit(sendNoticeRef); //责任制签订 if (signRecord != null) UpdateEntityNoCommit(signRecord); if (signPost != null) UpdateEntityNoCommit(signPost); }); return true; }); } public class TrainUserPaperModel { public List Nav_Papers { get; set; } public T_SE_SECONFIG Nav_Config { get; set; } public Guid TaskID { get; set; } public Guid ORG_ID { get; set; } } [HttpPost, Route("GetUserPapers")] public JsonActionResult GetUserPapers([FromBody] KeywordFilter filter) { var papers = GetEntities(null, filter).ToList(); var config = GetEntity(t => true); var ret = new JsonActionResult(); ret.Data = new TrainUserPaperModel { Nav_Papers = papers, Nav_Config = config }; ret.IsSuccessful = true; ret.TotalCount = 1; ret.ErrorMessage = ""; return ret; } [HttpPost, Route("SavePapers")] public JsonActionResult SavePapers([FromBody] TrainUserPaperModel entity) { return SafeExecute(() => { if (entity.Nav_Papers == null || entity.Nav_Papers.Count == 0) { throw new Exception("试卷不能为空"); } var score = 0; var sscore = entity.Nav_Config.S_TEST_SCORE; var mscore = entity.Nav_Config.M_TEST_SCORE; var cscore = entity.Nav_Config.C_TEST_SCORE; foreach (var item in entity.Nav_Papers) { if (item.ANSWER != 0 && item.ANSWER == item.Nav_Test.ANSWER) { if (item.Nav_Test.TYPE == SETestTypeEnum.是非题) { score += cscore; } else if (item.Nav_Test.TYPE == SETestTypeEnum.单选题) { score += sscore; } else if (item.Nav_Test.TYPE == SETestTypeEnum.多选题) { score += mscore; } } } var passMark = GetEntity(t => t.IS_DELETED == false); if (passMark != null) { if (passMark.PASS_MARK != 0) { if (score < passMark.PASS_MARK) { throw new Exception("考试成绩:" + score + "分小于标准线" + passMark.PASS_MARK + ",请重新考试!"); } } } foreach (var item in entity.Nav_Papers) { item.SCORE = score; } T_SE_NEW_USERS eduCard = null; T_SE_NEW_USERS newEduCard = null; List userDetailList = null; T_SE_NEW_USER_DETAIL currDetail = null; T_FM_NOTIFICATION_TASK sendNotice = null; var finishNotice = NotificationTaskService.GetTaskFinishModel(entity.TaskID); CreateNextLevel(entity.ORG_ID, entity.Nav_Papers[0].RECORD_ID, entity.TaskID, entity.Nav_Papers[0].Nav_Record.EDU_CARD_ID, score.ToString(), ref eduCard, ref newEduCard, ref userDetailList, ref currDetail, ref sendNotice); T_OG_SAFE_PDT_SIGNED signRecord = null; T_OG_SAFE_PDT_SIGNED_POST signPost = null; var currUser = GetEntity(APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value); var currPerson = GetEntity(currUser.PERSON_ID.Value); var departInfo = GetEntity(currUser.DEPARTMENT_ID.Value); GetOG001(entity.TaskID, currUser, currPerson, departInfo, ref signRecord, ref signPost, ref sendNotice); UnifiedCommit(() => { if (finishNotice != null) UpdateEntityNoCommit(finishNotice); BantchSaveEntityNoCommit(entity.Nav_Papers); //CreateNextLevel wyw 从 方法体抽出来的 if (eduCard != null) UpdateEntityNoCommit(eduCard); if (newEduCard != null) AddEntityNoCommit(newEduCard); if (userDetailList != null) BantchAddEntityNoCommit(userDetailList); if (currDetail != null) UpdateEntityNoCommit(currDetail); if (sendNotice != null) AddEntityNoCommit(sendNotice); //责任制签订 if (signRecord != null) UpdateEntityNoCommit(signRecord); if (signPost != null) UpdateEntityNoCommit(signPost); }); return true; }); } private void CreateTestList(List allTests, List ret, List contentFilter, int type, int count) { var tests = allTests.Where(st => st.Nav_Points.Any(pt => contentFilter.Contains(pt.POINT_ID.Value)) && st.TYPE == (SETestTypeEnum)type).OrderBy(t => Guid.NewGuid()).Take(count); ; if (tests != null) { ret.AddRange(tests.Select(it => it.ID)); } } /// /// /// /// /// /// /// /// /// /// /// /// /// private void CreateNextLevel(Guid ORG_ID, Guid RECORD_ID, Guid TaskID, Guid EDU_CARD_ID, string score, ref T_SE_NEW_USERS eduCard, ref T_SE_NEW_USERS newEduCard, ref List userDetailList, ref T_SE_NEW_USER_DETAIL currDetail, ref T_FM_NOTIFICATION_TASK sendNotice) { #region var orgId = ORG_ID; var currID = RECORD_ID; var taskID = TaskID; var eduCardID = EDU_CARD_ID; //T_FM_NOTIFICATION_TASK sendNotice = null; userDetailList = new List(); T_SE_THREE_LEVEL_SAFE_CONTENT train_contents = null; var basefilter = new BaseFilter(orgId); var userDetails = GetEntities(t => t.EDU_CARD_ID == eduCardID, basefilter); var currDetailT = userDetails.FirstOrDefault(t => t.ID == currID);//不能直接用 故定义中间参数 if (currDetailT != null) { if (score != null) { currDetailT.SCORE = score; currDetailT.EXAMINATION_RESULTS = SEExaminationResultsEnum.合格; } currDetailT.STATUS = SEThreeLevelSafeTrainStatus.公司培训; } var isFinish = userDetails.Count(t => t.NEXT_DEPARTMENT_ID == currDetailT.NEXT_DEPARTMENT_ID && t.STATUS == 0); eduCard = GetEntity(eduCardID); var currSattus = SEThreeLevelSafeTrainType.公司级; if (isFinish == 0 && eduCard.TRAIN_STATUS != SEThreeLevelSafeTrainType.班组级) { T_FM_USER sendUser = null; if (eduCard.TRAIN_STATUS == SEThreeLevelSafeTrainType.公司级) { sendUser = GetEntity(t => t.DEPARTMENT_ID == currDetailT.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "部门安全员" && t.IS_DELETED == false && t.ENABLE_STATUS == 0); if (sendUser == null) { sendUser = GetEntity(t => t.DEPARTMENT_ID == currDetailT.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "安环部安全员" && t.IS_DELETED == false && t.ENABLE_STATUS == 0); if (sendUser == null) { sendUser = GetEntity(t => t.DEPARTMENT_ID == currDetailT.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "部门负责人" && t.IS_DELETED == false && t.ENABLE_STATUS == 0); if (sendUser == null) { sendUser = GetEntity(t => t.DEPARTMENT_ID == currDetailT.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "车间安全员" && t.IS_DELETED == false && t.ENABLE_STATUS == 0); if (sendUser == null) { sendUser = GetEntity(t => t.DEPARTMENT_ID == currDetailT.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "车间负责人" && t.IS_DELETED == false && t.ENABLE_STATUS == 0); } } } //currSattus = SEThreeLevelSafeTrainType.部门级; //train_contents = GetEntity(t => t.THREE_LEVEL_SAFE_TRAIN_TYPE == SEThreeLevelSafeTrainType.部门级); } //wyw T_SE_NEW_USERS train_contents 找不到会报错 currSattus = SEThreeLevelSafeTrainType.部门级; train_contents = GetEntity(t => t.THREE_LEVEL_SAFE_TRAIN_TYPE == SEThreeLevelSafeTrainType.部门级); } else if (eduCard.TRAIN_STATUS == SEThreeLevelSafeTrainType.部门级) { sendUser = GetEntity(t => t.DEPARTMENT_ID == currDetailT.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "班组负责人" && t.IS_DELETED == false && t.ENABLE_STATUS == 0); if (sendUser != null) { currSattus = SEThreeLevelSafeTrainType.班组级; train_contents = GetEntity(t => t.THREE_LEVEL_SAFE_TRAIN_TYPE == SEThreeLevelSafeTrainType.班组级); } } if (sendUser != null) { newEduCard = new T_SE_NEW_USERS(); newEduCard.ID = Guid.NewGuid(); newEduCard.ORG_ID = orgId; newEduCard.USER_ID = sendUser.ID; newEduCard.DEPARTMENT_ID = sendUser.DEPARTMENT_ID; newEduCard.CONTENT_ID = train_contents.ID; newEduCard.TRAIN_STATUS = currSattus; var commonDeptartmentUsers = userDetails.Where(t => t.NEXT_DEPARTMENT_ID == currDetailT.NEXT_DEPARTMENT_ID); var commonUserIds = commonDeptartmentUsers.Select(t => t.USER_ID); var userFilter = new BaseFilter(orgId); userFilter.Include = new string[] { "Nav_Person" }; foreach (var user in commonDeptartmentUsers) { T_SE_NEW_USER_DETAIL userDetail = new T_SE_NEW_USER_DETAIL(); userDetail.ID = Guid.NewGuid(); userDetail.CODE = user.CODE; userDetail.EDU_CARD_ID = newEduCard.ID; userDetail.USER_ID = user.USER_ID; userDetail.ID_CARD_NUMBER = user.ID_CARD_NUMBER; userDetail.ORG_ID = newEduCard.ORG_ID; userDetail.IN_TIME = user.CREATE_TIME; userDetail.USER_POST_ID = user.USER_POST_ID; userDetail.USER_DEPARTMENT_ID = user.USER_DEPARTMENT_ID; userDetail.EXAMINATION_RESULTS = SEExaminationResultsEnum.合格; userDetailList.Add(userDetail); } var endTime = DateTime.Now.AddDays(10); var newEndTime = new DateTime(endTime.Year, endTime.Month, endTime.Day, 23, 59, 59); sendNotice = NotificationTaskService.InsertUserNoticeTaskModel(DateTime.Now.ToShortDateString() + "-三级安全培训-" + newEduCard.TRAIN_STATUS.GetDescription(), newEduCard.ID, orgId, sendUser.ID, sendUser.NAME, DateTime.Now, newEndTime, 1, "SE062"); } var isAllDone = userDetails.Count(t => t.STATUS == 0); if (isAllDone == 0) { eduCard.STATUS = SENewUserStatus.归档; } currDetail = currDetailT; if (sendNotice == null) { //wyw 当三级安全教育结束时 为了三级安全卡 签名正常 SE063ShowPrint currDetail.STATUS = SEThreeLevelSafeTrainStatus.公司培训; } #endregion //UnifiedCommit(() => //{ // if (eduCard != null) // UpdateEntityNoCommit(eduCard); // if (newEduCard != null) // AddEntityNoCommit(newEduCard); // if (userDetailList != null) // BantchAddEntityNoCommit(userDetailList); // if (currDetail != null) // UpdateEntityNoCommit(currDetail); // if (sendNotice != null) // AddEntityNoCommit(sendNotice); //}); } } //private void CreateNextLevel(Guid ORG_ID, Guid RECORD_ID, Guid TaskID, Guid EDU_CARD_ID, string score) //{ // #region // var orgId = ORG_ID; // var currID = RECORD_ID; // var taskID = TaskID; // var eduCardID = EDU_CARD_ID; // T_FM_NOTIFICATION_TASK sendNotice = null; // T_SE_NEW_USERS newEduCard = null; // List userDetailList = new List(); // T_SE_THREE_LEVEL_SAFE_CONTENT train_contents = null; // var basefilter = new BaseFilter(orgId); // var userDetails = GetEntities(t => t.EDU_CARD_ID == eduCardID, basefilter); // var currDetail = userDetails.FirstOrDefault(t => t.ID == currID); // if (currDetail != null) // { // if (score != null) // { // currDetail.SCORE = score; // currDetail.EXAMINATION_RESULTS = SEExaminationResultsEnum.合格; // } // currDetail.STATUS = SEThreeLevelSafeTrainStatus.公司培训; // } // var isFinish = userDetails.Count(t => t.NEXT_DEPARTMENT_ID == currDetail.NEXT_DEPARTMENT_ID && t.STATUS == 0); // var eduCard = GetEntity(eduCardID); // var currSattus = SEThreeLevelSafeTrainType.公司级; // if (isFinish == 0 && eduCard.TRAIN_STATUS != SEThreeLevelSafeTrainType.班组级) // { // T_FM_USER sendUser = null; // if (eduCard.TRAIN_STATUS == SEThreeLevelSafeTrainType.公司级) // { // sendUser = GetEntity(t => t.DEPARTMENT_ID == currDetail.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "部门安全员" && t.IS_DELETED == false && t.ENABLE_STATUS == 0); // if (sendUser == null) // { // sendUser = GetEntity(t => t.DEPARTMENT_ID == currDetail.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "安环部安全员" && t.IS_DELETED == false && t.ENABLE_STATUS == 0); // if (sendUser == null) // { // sendUser = GetEntity(t => t.DEPARTMENT_ID == currDetail.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "部门负责人" && t.IS_DELETED == false && t.ENABLE_STATUS == 0); // if (sendUser == null) // { // sendUser = GetEntity(t => t.DEPARTMENT_ID == currDetail.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "车间安全员" && t.IS_DELETED == false && t.ENABLE_STATUS == 0); // if (sendUser == null) // { // sendUser = GetEntity(t => t.DEPARTMENT_ID == currDetail.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "车间负责人" && t.IS_DELETED == false && t.ENABLE_STATUS == 0); // } // } // } // currSattus = SEThreeLevelSafeTrainType.部门级; // train_contents = GetEntity(t => t.THREE_LEVEL_SAFE_TRAIN_TYPE == SEThreeLevelSafeTrainType.部门级); // } // } // else if (eduCard.TRAIN_STATUS == SEThreeLevelSafeTrainType.部门级) // { // sendUser = GetEntity(t => t.DEPARTMENT_ID == currDetail.NEXT_DEPARTMENT_ID && t.Nav_ApproveRole.NAME == "班组负责人" && t.IS_DELETED == false && t.ENABLE_STATUS == 0); // if (sendUser != null) // { // currSattus = SEThreeLevelSafeTrainType.班组级; // train_contents = GetEntity(t => t.THREE_LEVEL_SAFE_TRAIN_TYPE == SEThreeLevelSafeTrainType.班组级); // } // } // if (sendUser != null) // { // newEduCard = new T_SE_NEW_USERS(); // newEduCard.ID = Guid.NewGuid(); // newEduCard.ORG_ID = orgId; // newEduCard.USER_ID = sendUser.ID; // newEduCard.DEPARTMENT_ID = sendUser.DEPARTMENT_ID; // newEduCard.CONTENT_ID = train_contents.ID; // newEduCard.TRAIN_STATUS = currSattus; // var commonDeptartmentUsers = userDetails.Where(t => t.NEXT_DEPARTMENT_ID == currDetail.NEXT_DEPARTMENT_ID); // var commonUserIds = commonDeptartmentUsers.Select(t => t.USER_ID); // var userFilter = new BaseFilter(orgId); // userFilter.Include = new string[] { "Nav_Person" }; // foreach (var user in commonDeptartmentUsers) // { // T_SE_NEW_USER_DETAIL userDetail = new T_SE_NEW_USER_DETAIL(); // userDetail.ID = Guid.NewGuid(); // userDetail.CODE = user.CODE; // userDetail.EDU_CARD_ID = newEduCard.ID; // userDetail.USER_ID = user.USER_ID; // userDetail.ID_CARD_NUMBER = user.ID_CARD_NUMBER; // userDetail.ORG_ID = newEduCard.ORG_ID; // userDetail.IN_TIME = user.CREATE_TIME; // userDetail.USER_POST_ID = user.USER_POST_ID; // userDetail.USER_DEPARTMENT_ID = user.USER_DEPARTMENT_ID; // userDetail.EXAMINATION_RESULTS = SEExaminationResultsEnum.合格; // userDetailList.Add(userDetail); // } // var endTime = DateTime.Now.AddDays(10); // var newEndTime = new DateTime(endTime.Year, endTime.Month, endTime.Day, 23, 59, 59); // sendNotice = NotificationTaskService.InsertUserNoticeTaskModel(DateTime.Now.ToShortDateString() + "-三级安全培训-" + newEduCard.TRAIN_STATUS.GetDescription(), newEduCard.ID, orgId, sendUser.ID, sendUser.NAME, DateTime.Now, newEndTime, 1, "SE062"); // } // var isAllDone = userDetails.Count(t => t.STATUS == 0); // if (isAllDone == 0) // { // eduCard.STATUS = SENewUserStatus.归档; // } // #endregion // UnifiedCommit(() => // { // if (eduCard != null) // UpdateEntityNoCommit(eduCard); // if (newEduCard != null) // AddEntityNoCommit(newEduCard); // if (userDetailList != null) // BantchAddEntityNoCommit(userDetailList); // if (currDetail != null) // UpdateEntityNoCommit(currDetail); // if (sendNotice != null) // AddEntityNoCommit(sendNotice); // }); // } //} /// /// 责任状签订信息获取 /// /// /// /// /// /// /// /// public void GetOG001(Guid TaskID, T_FM_USER currUser, T_FM_PERSON currPerson, T_FM_DEPARTMENT departInfo, ref T_OG_SAFE_PDT_SIGNED signRecord, ref T_OG_SAFE_PDT_SIGNED_POST signPost, ref T_FM_NOTIFICATION_TASK sendNoticeRef) { // 如果没有继续触发下一级 直接触发 安全生产责任制签订 OG001_SHOWPRINT 如果找不到对应的责任制 就给对应组织安全员(或班长) 触发今日提醒 if (sendNoticeRef == null) { var post = GetEntity(t => t.Nav_Dept.DEPARTMENT_ID == currUser.DEPARTMENT_ID && t.DEPOST_ID == currPerson.POST_ID, new string[] { "Nav_Dept.Nav_Post" }); if (post != null) { var standardCreate = GetEntity(t => t.POST_ID == post.Nav_Dept.POST_ID && t.STATUS == SCSystemEditStatus.已归档 && t.FILE_STATUS == SCSystemFileStatus.有效); if (standardCreate != null) { var chargeUser = GetEntity(t => t.DEPARTMENT_ID == post.Nav_Dept.Nav_Post.DEPARTMENT_ID && t.Nav_Person.POST_ID == post.Nav_Dept.Nav_Post.DEPOST_ID && t.ENABLE_STATUS == 0); if (chargeUser != null) { signRecord = new T_OG_SAFE_PDT_SIGNED { ID = Guid.NewGuid(), ORG_ID = currUser.ORG_ID, STATUS = (int)PFStandardStatus.Draft, TRIGGER_TYPE = OGPersonalSignedTriggerType.新员工触发, //TRIGGER_TYPE = OGPersonalSignedTriggerType.手动新增, STANDARD_ID = standardCreate.ID, FILE_CONTENT = standardCreate.FILE_CONTENT, DEPARTMENT_ID = currUser.DEPARTMENT_ID, ANNUAL = DateTime.Now.Year }; if (chargeUser != null) { signRecord.CHARGE_USER_ID = chargeUser.ID; } signPost = new T_OG_SAFE_PDT_SIGNED_POST { SAFE_PDT_SIGNED_ID = signRecord.ID, ID = Guid.NewGuid(), ORG_ID = currUser.ORG_ID, USER_ID = currUser.ID, POST_ID = currPerson.POST_ID, CHARGE_USER_ID = signRecord.CHARGE_USER_ID }; sendNoticeRef = NotificationTaskService.InsertUserNoticeTaskModel(DateTime.Now.ToShortDateString() + "安全生产责任制个人签订表", signRecord.ID, currUser.ORG_ID, currUser.ID, currUser.NAME, DateTime.Now, DateTime.Now.AddDays(7), 1, "OG001_SHOWPRINT"); } } } else { //找不到 责任制 T_FM_USER sendUser = null; var userApprol = GetEntities(e => e.ENABLE_STATUS == 0 && e.DEPARTMENT_ID.HasValue && e.APPROVE_ROLE_ID.HasValue && e.DEPARTMENT_ID.Value == currUser.DEPARTMENT_ID.Value, null, "Nav_ApproveRole"); if (userApprol != null && userApprol.Count() > 0 && currPerson.POST_ID.HasValue) { switch (departInfo.DEPARTMENT_TYPE)//FMDepartmentType 部门=0, 车间=1, 班组=2, 公司=3 { case 2: sendUser = userApprol.FirstOrDefault(e => e.Nav_ApproveRole.NAME.Contains("负责人")); break; default: sendUser = userApprol.FirstOrDefault(e => e.Nav_ApproveRole.NAME.Contains("安全")); break; } } if (sendUser == null) { //找不到人只能给她自己做联系人员处理 sendNoticeRef = NotificationTaskService.InsertUserNoticeTaskModel("请联系你所在组织安全员绑定责任制岗位并上传责任状让你签订", TaskID, currUser.ORG_ID, currUser.ID, currUser.NAME, DateTime.Now, DateTime.Now.AddDays(7), (int)FMNoticeTypeEnum.今日提醒, "PF135"); } else { var UserPost = GetEntity(currPerson.POST_ID.Value); sendNoticeRef = NotificationTaskService.InsertUserNoticeTaskModel("请为《" + currUser.NAME + ":" + UserPost.NAME + "》绑定责任制岗位并上传责任状,并让其签订", TaskID, currUser.ORG_ID, sendUser.ID, sendUser.NAME, DateTime.Now, DateTime.Now.AddDays(7), (int)FMNoticeTypeEnum.今日提醒, "PF135"); } } } } /// /// 查询 /// /// /// [HttpPost, Route("GetUsers")] public JsonActionResult> GetUsers([FromBody] KeywordFilter filter) { return SafeExecute>(() => { return GetEntities(null, filter).Select(it => it.Nav_User).Distinct(it => it.ID).ToList(); }); } } }