925 lines
		
	
	
		
			51 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			925 lines
		
	
	
		
			51 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
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<T_SE_NEW_USERS>
 | 
						||
    {
 | 
						||
        IFMNotificationTaskService NotificationTaskService { get; set; }
 | 
						||
        public SENewUsersController(IFMNotificationTaskService notificationTaskService)
 | 
						||
        {
 | 
						||
            NotificationTaskService = notificationTaskService;
 | 
						||
        }
 | 
						||
        /// <summary>
 | 
						||
        /// 更新
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="id"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        [HttpPost, Route("FullUpdate")]
 | 
						||
        public JsonActionResult<bool> FullUpdate([FromBody] T_SE_NEW_USERS entity)
 | 
						||
        {
 | 
						||
            return SafeExecute<bool>(() =>
 | 
						||
            {
 | 
						||
                List<T_FM_NOTIFICATION_TASK> sendNoticeList = new List<T_FM_NOTIFICATION_TASK>();
 | 
						||
                List<T_SE_NEW_USER_DETAIL_FILE> detailFiles = new List<T_SE_NEW_USER_DETAIL_FILE>();
 | 
						||
                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_FM_DEPARTMENT>(t => t.ENABLE_STATUS == 0, bf);
 | 
						||
                    var currUserDepId = APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID;
 | 
						||
                    var auditDep = GetEntity<T_FM_DEPARTMENT>(currUserDepId.ToString());
 | 
						||
 | 
						||
                    var listCode = Nav_NewUserDetail.Where(e => e.CODE.Length > 0).Select(e => e.CODE);
 | 
						||
                    var listUserCheck = GetEntities<T_FM_USER>(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_FM_USER>(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<T_FM_USER>(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;
 | 
						||
            });
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 更新
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="id"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        [HttpPost, Route("PersonalAgree")]
 | 
						||
        public JsonActionResult<bool> PersonalAgree([FromBody] KeywordFilter filter)
 | 
						||
        {
 | 
						||
            return SafeExecute<bool>(() =>
 | 
						||
            {
 | 
						||
                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_FM_NOTIFICATION_TASK>(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<T_SE_NEW_USER_DETAIL_PAPER> Nav_Papers = null;
 | 
						||
                #region
 | 
						||
                var eduCard = GetEntity<T_SE_NEW_USERS>(eduCardID);
 | 
						||
                List<T_FM_USER_PRODUCTION_UNIT> units = new List<T_FM_USER_PRODUCTION_UNIT>();
 | 
						||
                var currUser = GetEntity<T_FM_USER>(t => t.ID == userID);
 | 
						||
                var currUserDeail = GetEntity<T_SE_NEW_USER_DETAIL>(t => t.ID == currID);
 | 
						||
                var currPerson = GetEntity<T_FM_PERSON>(t => t.ID == currUser.PERSON_ID);
 | 
						||
                T_FM_DEPARTMENT departInfo = null;
 | 
						||
                if (!string.IsNullOrEmpty(currUserDeail.CODE))//不一样才进行 修改 比如一开始 是手机号码 配置的是工号
 | 
						||
                {
 | 
						||
                    departInfo = this.GetEntity<T_FM_DEPARTMENT>(currUserDeail.USER_DEPARTMENT_ID.ToString());
 | 
						||
                    if (departInfo != null && departInfo.MineType != null)
 | 
						||
                    {
 | 
						||
                        var enumList = this.GetEntity<T_FM_ENUMS>(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<T_FM_USER>(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_OP_ALLUSER>(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<T_SE_NEW_USER_DETAIL> 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<T_FM_NOTIFICATION_TASK> sendNotices = new List<T_FM_NOTIFICATION_TASK>();
 | 
						||
                    var config = GetEntity<T_SE_SECONFIG>(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<Guid>();
 | 
						||
                    var testFilter = new BaseFilter(filter.GetOrgId());
 | 
						||
                    testFilter.Include = new string[] { "Nav_Points" };
 | 
						||
                    var currStatus = eduCard.TRAIN_STATUS;
 | 
						||
                    IEnumerable<T_SE_TEST_ENUM_POINT> pointS = new List<T_SE_TEST_ENUM_POINT>();
 | 
						||
                    if (eduCard.TRAIN_STATUS == SEThreeLevelSafeTrainType.公司级)
 | 
						||
                    {
 | 
						||
                        pointS = GetEntities<T_SE_TEST_ENUM_POINT>(t => t.NAME == "三级安全教育-公司级", new BaseFilter(orgId));
 | 
						||
                    }
 | 
						||
                    else if (eduCard.TRAIN_STATUS == SEThreeLevelSafeTrainType.部门级)
 | 
						||
                    {
 | 
						||
                        pointS = GetEntities<T_SE_TEST_ENUM_POINT>(t => t.NAME == "三级安全教育-部门级", new BaseFilter(orgId));
 | 
						||
                    }
 | 
						||
                    else if (eduCard.TRAIN_STATUS == SEThreeLevelSafeTrainType.班组级)
 | 
						||
                    {
 | 
						||
                        pointS = GetEntities<T_SE_TEST_ENUM_POINT>(t => t.NAME == "三级安全教育-班组级", new BaseFilter(orgId));
 | 
						||
                    }
 | 
						||
                    var pointIDS = pointS.Select(t => t.ID).ToList();
 | 
						||
                    var allTests = GetEntities<T_SE_TEST>(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<T_SE_NEW_USER_DETAIL_PAPER>();
 | 
						||
 | 
						||
                    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<T_FM_USER>((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_SC_DEPARTMENT_POST>(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_SC_STANDARD_CREATE>(t => t.POST_ID == post.Nav_Dept.POST_ID && t.STATUS == SCSystemEditStatus.已归档 && t.FILE_STATUS == SCSystemFileStatus.有效);
 | 
						||
                    //        if (standardCreate != null)
 | 
						||
                    //        {
 | 
						||
                    //            var chargeUser = GetEntity<T_FM_USER>(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<T_FM_USER>(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<T_FM_USER_POST>(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<T_SE_NEW_USER_DETAIL_PAPER> 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<TrainUserPaperModel> GetUserPapers([FromBody] KeywordFilter filter)
 | 
						||
        {
 | 
						||
            var papers = GetEntities<T_SE_NEW_USER_DETAIL_PAPER>(null, filter).ToList();
 | 
						||
            var config = GetEntity<T_SE_SECONFIG>(t => true);
 | 
						||
            var ret = new JsonActionResult<TrainUserPaperModel>();
 | 
						||
            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<bool> 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_SE_SECONFIG>(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<T_SE_NEW_USER_DETAIL> 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<T_FM_USER>(APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value);
 | 
						||
                var currPerson = GetEntity<T_FM_PERSON>(currUser.PERSON_ID.Value);
 | 
						||
                var departInfo = GetEntity<T_FM_DEPARTMENT>(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<T_SE_TEST> allTests, List<Guid> ret, List<Guid> 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));
 | 
						||
            }
 | 
						||
        }
 | 
						||
        /// <summary>
 | 
						||
        /// 
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="ORG_ID"></param>
 | 
						||
        /// <param name="RECORD_ID"></param>
 | 
						||
        /// <param name="TaskID"></param>
 | 
						||
        /// <param name="EDU_CARD_ID"></param>
 | 
						||
        /// <param name="score"></param>
 | 
						||
        /// <param name="eduCard"></param>
 | 
						||
        /// <param name="newEduCard"></param>
 | 
						||
        /// <param name="userDetailList"></param>
 | 
						||
        /// <param name="currDetail"></param>
 | 
						||
        /// <param name="sendNotice"></param>
 | 
						||
        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<T_SE_NEW_USER_DETAIL> 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_NEW_USER_DETAIL>();
 | 
						||
            T_SE_THREE_LEVEL_SAFE_CONTENT train_contents = null;
 | 
						||
            var basefilter = new BaseFilter(orgId);
 | 
						||
            var userDetails = GetEntities<T_SE_NEW_USER_DETAIL>(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<T_SE_NEW_USERS>(eduCardID);
 | 
						||
            var currSattus = SEThreeLevelSafeTrainType.公司级;
 | 
						||
            if (isFinish == 0 && eduCard.TRAIN_STATUS != SEThreeLevelSafeTrainType.班组级)
 | 
						||
            {
 | 
						||
                T_FM_USER sendUser = null;
 | 
						||
 | 
						||
                if (eduCard.TRAIN_STATUS == SEThreeLevelSafeTrainType.公司级)
 | 
						||
                {
 | 
						||
                    sendUser = GetEntity<T_FM_USER>(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_FM_USER>(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_FM_USER>(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_FM_USER>(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_FM_USER>(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_SE_THREE_LEVEL_SAFE_CONTENT>(t => t.THREE_LEVEL_SAFE_TRAIN_TYPE == SEThreeLevelSafeTrainType.部门级);
 | 
						||
                    }
 | 
						||
                    //wyw  T_SE_NEW_USERS  train_contents 找不到会报错
 | 
						||
                    currSattus = SEThreeLevelSafeTrainType.部门级;
 | 
						||
                    train_contents = GetEntity<T_SE_THREE_LEVEL_SAFE_CONTENT>(t => t.THREE_LEVEL_SAFE_TRAIN_TYPE == SEThreeLevelSafeTrainType.部门级);
 | 
						||
                }
 | 
						||
                else if (eduCard.TRAIN_STATUS == SEThreeLevelSafeTrainType.部门级)
 | 
						||
                {
 | 
						||
                    sendUser = GetEntity<T_FM_USER>(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_SE_THREE_LEVEL_SAFE_CONTENT>(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<T_SE_NEW_USER_DETAIL> userDetailList = new List<T_SE_NEW_USER_DETAIL>();
 | 
						||
        //    T_SE_THREE_LEVEL_SAFE_CONTENT train_contents = null;
 | 
						||
        //    var basefilter = new BaseFilter(orgId);
 | 
						||
        //    var userDetails = GetEntities<T_SE_NEW_USER_DETAIL>(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<T_SE_NEW_USERS>(eduCardID);
 | 
						||
        //    var currSattus = SEThreeLevelSafeTrainType.公司级;
 | 
						||
        //    if (isFinish == 0 && eduCard.TRAIN_STATUS != SEThreeLevelSafeTrainType.班组级)
 | 
						||
        //    {
 | 
						||
        //        T_FM_USER sendUser = null;
 | 
						||
 | 
						||
        //        if (eduCard.TRAIN_STATUS == SEThreeLevelSafeTrainType.公司级)
 | 
						||
        //        {
 | 
						||
        //            sendUser = GetEntity<T_FM_USER>(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_FM_USER>(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_FM_USER>(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_FM_USER>(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_FM_USER>(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_SE_THREE_LEVEL_SAFE_CONTENT>(t => t.THREE_LEVEL_SAFE_TRAIN_TYPE == SEThreeLevelSafeTrainType.部门级);
 | 
						||
        //            }
 | 
						||
        //        }
 | 
						||
        //        else if (eduCard.TRAIN_STATUS == SEThreeLevelSafeTrainType.部门级)
 | 
						||
        //        {
 | 
						||
        //            sendUser = GetEntity<T_FM_USER>(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_SE_THREE_LEVEL_SAFE_CONTENT>(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);
 | 
						||
 | 
						||
        //        });
 | 
						||
        //    }
 | 
						||
        //}
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 责任状签订信息获取
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="TaskID"></param>
 | 
						||
        /// <param name="currUser"></param>
 | 
						||
        /// <param name="currPerson"></param>
 | 
						||
        /// <param name="departInfo"></param>
 | 
						||
        /// <param name="signRecord"></param>
 | 
						||
        /// <param name="signPost"></param>
 | 
						||
        /// <param name="sendNoticeRef"></param>
 | 
						||
        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_SC_DEPARTMENT_POST>(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_SC_STANDARD_CREATE>(t => t.POST_ID == post.Nav_Dept.POST_ID && t.STATUS == SCSystemEditStatus.已归档 && t.FILE_STATUS == SCSystemFileStatus.有效);
 | 
						||
                    if (standardCreate != null)
 | 
						||
                    {
 | 
						||
                        var chargeUser = GetEntity<T_FM_USER>(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<T_FM_USER>(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<T_FM_USER_POST>(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");
 | 
						||
                    }
 | 
						||
                }
 | 
						||
            }
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 查询
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="filter"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        [HttpPost, Route("GetUsers")]
 | 
						||
        public JsonActionResult<IEnumerable<T_FM_USER>> GetUsers([FromBody] KeywordFilter filter)
 | 
						||
        {
 | 
						||
            return SafeExecute<IEnumerable<T_FM_USER>>(() =>
 | 
						||
            {
 | 
						||
                return GetEntities<T_SE_NEW_USER_DETAIL_PAPER>(null, filter).Select(it => it.Nav_User).Distinct(it => it.ID).ToList();
 | 
						||
            });
 | 
						||
        }
 | 
						||
    }
 | 
						||
}
 |