1105 lines
		
	
	
		
			61 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			1105 lines
		
	
	
		
			61 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using APT.BaseData.Domain.ApiModel;
 | 
						||
using APT.BaseData.Domain.Entities.FM;
 | 
						||
using APT.BaseData.Domain.Enums;
 | 
						||
using APT.Infrastructure.Core;
 | 
						||
using APT.MS.Domain.Entities.SC.SC;
 | 
						||
using APT.MS.Domain.Entities.SC;
 | 
						||
using APT.MS.Domain.Entities.SK;
 | 
						||
using APT.MS.Domain.Enums;
 | 
						||
using APT.Utility;
 | 
						||
using Microsoft.AspNetCore.Mvc;
 | 
						||
using System;
 | 
						||
using System.Collections.Generic;
 | 
						||
using System.Data;
 | 
						||
using System.IO;
 | 
						||
using System.Linq;
 | 
						||
using APT.MS.Domain.Enums.SK;
 | 
						||
using Microsoft.Extensions.Logging;
 | 
						||
using Org.BouncyCastle.Utilities;
 | 
						||
using System.Reflection.Metadata;
 | 
						||
using Microsoft.Extensions.Hosting;
 | 
						||
using Microsoft.Extensions.DependencyModel;
 | 
						||
 | 
						||
namespace APT.SK.WebApi.Controllers.Api
 | 
						||
{
 | 
						||
    public class ImportDetails
 | 
						||
    {
 | 
						||
        public SKProductionUnit MineType { get; set; }
 | 
						||
 | 
						||
        public SKDepartmentTypeEnum DepartType { get; set; }
 | 
						||
        public Guid? CheckTypeId { get; set; }
 | 
						||
 | 
						||
        public SKPLANCHECKFREQUENCYEnum CheckCycle { get; set; }
 | 
						||
 | 
						||
        public string CheckContent { get; set; }
 | 
						||
 | 
						||
        public string HiddenScript { get; set; }
 | 
						||
        public string Measure { get; set; }
 | 
						||
 | 
						||
        public string Areas { get; set; }
 | 
						||
 | 
						||
        public string Risks { get; set; }
 | 
						||
    }
 | 
						||
    [Route("api/SK/SKCheckSet")]
 | 
						||
    public partial class CheckSetController : AuthorizeApiController<T_SK_CHECK_SET>
 | 
						||
    {
 | 
						||
        /// <summary>
 | 
						||
        /// 更新或新增数据
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="entity">对象实体</param>
 | 
						||
        /// <returns></returns>
 | 
						||
        [HttpPost, Route("FullUpdate")]
 | 
						||
        public JsonActionResult<bool> FullUpdate([FromBody] T_SK_CHECK_SET entity)
 | 
						||
        {
 | 
						||
            return SafeExecute<bool>(() =>
 | 
						||
            {
 | 
						||
                List<T_SK_CHECK_SET_CONTENTS_HIDDEN> hiddens = new List<T_SK_CHECK_SET_CONTENTS_HIDDEN>();
 | 
						||
                List<T_SK_CHECK_SET_CONTENTS_BASIC> basics = new List<T_SK_CHECK_SET_CONTENTS_BASIC>();
 | 
						||
                List<T_SK_CHECK_SET_CONTENTS_AREA> areas = new List<T_SK_CHECK_SET_CONTENTS_AREA>();
 | 
						||
                List<T_SK_CHECK_SET_CONTENTS_AREA_RISK> risks = new List<T_SK_CHECK_SET_CONTENTS_AREA_RISK>();
 | 
						||
                var details = entity.Nav_CheckSetContents;
 | 
						||
                entity.Nav_CheckSetContents = null;
 | 
						||
                if (details != null && details.Any())
 | 
						||
                {
 | 
						||
                    foreach (var item in details)
 | 
						||
                    {
 | 
						||
                        item.ORG_ID = entity.ORG_ID;
 | 
						||
                        item.CHECK_SET_ID = entity.ID;
 | 
						||
                        if (item.Nav_ContentsHiddens != null && item.Nav_ContentsHiddens.Any())
 | 
						||
                        {
 | 
						||
                            foreach (var item2 in item.Nav_ContentsHiddens)
 | 
						||
                            {
 | 
						||
                                item2.ORG_ID = entity.ORG_ID;
 | 
						||
                                item2.CHECK_CONTENTS_SET_ID = item.ID;
 | 
						||
                                hiddens.Add(item2);
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                        item.Nav_ContentsHiddens = null;
 | 
						||
                        if (item.Nav_ContentsBasics != null && item.Nav_ContentsBasics.Any())
 | 
						||
                        {
 | 
						||
                            foreach (var item2 in item.Nav_ContentsBasics)
 | 
						||
                            {
 | 
						||
                                item2.ORG_ID = entity.ORG_ID;
 | 
						||
                                item2.CHECK_CONTENTS_SET_ID = item.ID;
 | 
						||
                                basics.Add(item2);
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                        item.Nav_ContentsBasics = null;
 | 
						||
                        if (item.Nav_ContentsAreas != null && item.Nav_ContentsAreas.Any())
 | 
						||
                        {
 | 
						||
                            foreach (var item2 in item.Nav_ContentsAreas)
 | 
						||
                            {
 | 
						||
                                item2.ORG_ID = entity.ORG_ID;
 | 
						||
                                item2.CHECK_SET_CONTENTS_ID = item.ID;
 | 
						||
                                areas.Add(item2);
 | 
						||
                                if (item2.Nav_ContentsAreaRisks != null && item2.Nav_ContentsAreaRisks.Any())
 | 
						||
                                {
 | 
						||
                                    foreach (var item3 in item2.Nav_ContentsAreaRisks)
 | 
						||
                                    {
 | 
						||
                                        item3.ORG_ID = entity.ORG_ID;
 | 
						||
                                        item3.CHECK_SET_CONTENTS_AREA_ID = item2.ID;
 | 
						||
                                        risks.Add(item3);
 | 
						||
                                    }
 | 
						||
                                }
 | 
						||
                                item2.Nav_ContentsAreaRisks = null;
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                        item.Nav_ContentsAreas = null;
 | 
						||
                    }
 | 
						||
                }
 | 
						||
 | 
						||
                this.UnifiedCommit(() =>
 | 
						||
                {
 | 
						||
                    if (entity != null)
 | 
						||
                        UpdateEntityNoCommit(entity);
 | 
						||
                    if (details != null && details.Any())
 | 
						||
                        BantchSaveEntityNoCommit(details);
 | 
						||
                    if (hiddens != null && hiddens.Any())
 | 
						||
                        BantchSaveEntityNoCommit(hiddens);
 | 
						||
                    if (basics != null && basics.Any())
 | 
						||
                        BantchSaveEntityNoCommit(basics);
 | 
						||
                    if (areas != null && areas.Any())
 | 
						||
                        BantchSaveEntityNoCommit(areas);
 | 
						||
                    if (risks != null && risks.Any())
 | 
						||
                        BantchSaveEntityNoCommit(risks);
 | 
						||
                });
 | 
						||
                return true;
 | 
						||
            });
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 获取导入数据  
 | 
						||
        /// 参考         [Route("api/PF/Import")]
 | 
						||
        /// </summary>
 | 
						||
        /// <returns></returns>
 | 
						||
        [HttpPost, Route("GetImportData")]
 | 
						||
        public JsonActionResult<ImportDataModel> GetImportData()
 | 
						||
        {
 | 
						||
            return SafeExecute<ImportDataModel>(() =>
 | 
						||
            {
 | 
						||
                var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId;
 | 
						||
                var httpRequest = this.HttpContext.Request;
 | 
						||
                string orgIdStr = httpRequest.Form["OrgId"];// 获取 组织            
 | 
						||
                ImportDataModel result = new ImportDataModel();
 | 
						||
                var dic = Path.Combine(System.AppContext.BaseDirectory, "tempImportFiles");
 | 
						||
                if (!Directory.Exists(dic))
 | 
						||
                    Directory.CreateDirectory(dic);
 | 
						||
                foreach (var key in httpRequest.Form.Files)  // 文件键
 | 
						||
                {
 | 
						||
                    var postedFile = key;    // 获取文件键对应的文件对象
 | 
						||
                    string filePath = Path.Combine(dic, DateTime.Now.ToString("yyyy_MM_dd_hh_mm_ss") + "_" + postedFile.FileName);
 | 
						||
                    Byte[] fileData = new Byte[postedFile.Length];
 | 
						||
                    Stream sr = postedFile.OpenReadStream();//创建数据流对象 
 | 
						||
                    sr.Read(fileData, 0, (int)postedFile.Length);
 | 
						||
                    using (FileStream fs = new FileStream(filePath, FileMode.CreateNew))
 | 
						||
                    {
 | 
						||
                        fs.Write(fileData, 0, fileData.Length);
 | 
						||
                        fs.Flush();
 | 
						||
                        fs.Close();
 | 
						||
                    }
 | 
						||
 | 
						||
                    //获取数据
 | 
						||
                    Dictionary<int, int> startRowIndexs = new Dictionary<int, int>();
 | 
						||
                    startRowIndexs.Add(0, 1);//根据Excel格式数据赋值
 | 
						||
                    var dataTables = FileUtils.ReadExcelByOledb(filePath, startRowIndexs);
 | 
						||
                    string Msg = string.Empty;
 | 
						||
 | 
						||
                    bool isOK = InsertModel2(dataTables.Tables[0], orgId, ref Msg);
 | 
						||
 | 
						||
                    try
 | 
						||
                    {
 | 
						||
                        System.IO.File.Delete(filePath);
 | 
						||
                    }
 | 
						||
                    catch { }
 | 
						||
 | 
						||
                    result.Data = Msg;
 | 
						||
                    result.MessageList = new List<string> { Msg };
 | 
						||
                }
 | 
						||
 | 
						||
                return result;
 | 
						||
            });
 | 
						||
        }
 | 
						||
 | 
						||
        /// <summary>
 | 
						||
        /// 数据插入
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="dtSource"></param>
 | 
						||
        /// <param name="orgId"></param>
 | 
						||
        /// <param name="Msg"></param>
 | 
						||
        /// <param name="rowIndex"></param>
 | 
						||
        /// <returns></returns>
 | 
						||
        /// <exception cref="Exception"></exception>
 | 
						||
        public bool InsertModel(DataTable dtSource, Guid? orgId, ref string Msg, int rowIndex = 1)
 | 
						||
        {
 | 
						||
            var userId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
 | 
						||
            if (dtSource == null || dtSource.Rows.Count < rowIndex)
 | 
						||
            {
 | 
						||
                Msg = "未获取到导入数据";
 | 
						||
                throw new Exception(Msg);
 | 
						||
            }
 | 
						||
            int rowAll = dtSource.Rows.Count;
 | 
						||
            if (!string.IsNullOrEmpty(Msg))
 | 
						||
            {
 | 
						||
                throw new Exception(Msg);
 | 
						||
            }
 | 
						||
            var newFilter = new BaseFilter(orgId);
 | 
						||
            newFilter.SelectField = new List<string> { "NAME" };
 | 
						||
            var standLaws = this.GetEntities<T_SK_CHECK_SET>(t => !t.IS_DELETED, newFilter);
 | 
						||
            List<T_SK_CHECK_SET> laws = new List<T_SK_CHECK_SET>();
 | 
						||
            var checkType = this.GetEntity<T_SK_CHECK_TYPE>(t => t.NAME == "岗位排查");
 | 
						||
            var checkContents = this.GetEntities<T_SK_CHECK_CONTENTS>(t => t.IS_DELETED == false, new BaseFilter(orgId));
 | 
						||
            var checkQuestions = this.GetEntities<T_SK_CHECK_QUESTION>(t => t.IS_DELETED == false, new BaseFilter(orgId));
 | 
						||
            var departments = GetEntities<T_FM_DEPARTMENT>(t => t.IS_DELETED == false, new BaseFilter(orgId));
 | 
						||
            var librarys = GetEntities<T_SK_ENTERPRISE_LIBRARY>(t => t.IS_DELETED == false, new BaseFilter(orgId));
 | 
						||
            var areaLists = GetEntities<T_SK_RISK_AREA>(t => t.IS_DELETED == false, new BaseFilter(orgId));
 | 
						||
            var posts = GetEntities<T_FM_USER_POST>(t => t.IS_DELETED == false, new BaseFilter(orgId));
 | 
						||
            var riskNames = GetEntities<T_SK_RISK_NAME>(t => t.IS_DELETED == false, new BaseFilter(orgId));
 | 
						||
            var users = GetEntities<T_FM_USER>(i => i.Nav_Person != null, new BaseFilter(orgId), "Nav_Person").ToList();
 | 
						||
            DateTime dtNow = DateTime.Now;
 | 
						||
            KeywordFilter filter = new KeywordFilter();
 | 
						||
            filter.OrgId = orgId;
 | 
						||
            filter.Keyword = "0";
 | 
						||
            //if (dtSource.Rows.Count == 1)
 | 
						||
            //{
 | 
						||
            //    throw new Exception("导入必须两条以上,一条请直接新增");
 | 
						||
            //}
 | 
						||
            int j = 1;
 | 
						||
            for (int i = 0; i < rowAll; i++)
 | 
						||
            {
 | 
						||
                var mintype = SKProductionUnit.All;
 | 
						||
                if (!string.IsNullOrEmpty(dtSource.Rows[i][0].ToString().Trim()))
 | 
						||
                {
 | 
						||
                    if (dtSource.Rows[i][0].ToString().Trim() != "全公司" && dtSource.Rows[i][0].ToString().Trim() != "选矿厂" && dtSource.Rows[i][0].ToString().Trim() != "尾矿库" && dtSource.Rows[i][0].ToString().Trim() != "露天矿" && dtSource.Rows[i][0].ToString().Trim() != "非金属" && dtSource.Rows[i][0].ToString().Trim() != "职能口")
 | 
						||
                    {
 | 
						||
                        if (string.IsNullOrEmpty(Msg))
 | 
						||
                            Msg = "第" + i + "行第2列:生产单元未按规定填写(全公司,露天矿,选矿厂,尾矿库,非金属,职能口)";
 | 
						||
                        else
 | 
						||
                            Msg = Msg + "\n" + "第" + i + "行第2列:生产单元未按规定填写(全公司,露天矿,选矿厂,尾矿库,非金属,职能口)";
 | 
						||
                        //throw new Exception("生产单元未按规定填写(全公司,露天矿,选矿厂,尾矿库)");
 | 
						||
                    }
 | 
						||
                    else
 | 
						||
                    {
 | 
						||
                        switch (dtSource.Rows[i][0].ToString().Trim())
 | 
						||
                        {
 | 
						||
                            case "全公司":
 | 
						||
                                mintype = 0;
 | 
						||
                                break;
 | 
						||
                            case "露天矿":
 | 
						||
                                mintype = SKProductionUnit.Mine;
 | 
						||
                                break;
 | 
						||
                            case "选矿厂":
 | 
						||
                                mintype = SKProductionUnit.MineChoose;
 | 
						||
                                break;
 | 
						||
                            case "尾矿库":
 | 
						||
                                mintype = SKProductionUnit.Minelast;
 | 
						||
                                break;
 | 
						||
                            case "非金属":
 | 
						||
                                mintype = SKProductionUnit.Nonmetallic;
 | 
						||
                                break;
 | 
						||
                            case "职能口":
 | 
						||
                                mintype = SKProductionUnit.Department;
 | 
						||
                                break;
 | 
						||
                            default:
 | 
						||
                                mintype = 0;
 | 
						||
                                break;
 | 
						||
                        }
 | 
						||
                        //law.MineType = (FMProductionUnit)int.Parse(dtSource.Rows[i][1].ToString().Trim());
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                else
 | 
						||
                {
 | 
						||
                    if (string.IsNullOrEmpty(Msg))
 | 
						||
                        Msg = "第" + i + "行第1列:生产单元不能为空";
 | 
						||
                    else
 | 
						||
                        Msg = Msg + "\n" + "第" + i + "行第1列:生产单元不能为空";
 | 
						||
                }
 | 
						||
                var depart = dtSource.Rows[i][1].ToString().Trim();
 | 
						||
                if (string.IsNullOrEmpty(depart))
 | 
						||
                {
 | 
						||
                    if (string.IsNullOrEmpty(Msg))
 | 
						||
                        Msg = "第" + i + "行第2列:班组不能为空";
 | 
						||
                    else
 | 
						||
                        Msg = Msg + "\n" + "第" + i + "行第2列:班组不能为空";
 | 
						||
                }
 | 
						||
                var post = dtSource.Rows[i][2].ToString().Trim();
 | 
						||
                if (string.IsNullOrEmpty(post))
 | 
						||
                {
 | 
						||
                    if (string.IsNullOrEmpty(Msg))
 | 
						||
                        Msg = "第" + i + "行第3列:岗位不能为空";
 | 
						||
                    else
 | 
						||
                        Msg = Msg + "\n" + "第" + i + "行第3列:岗位不能为空";
 | 
						||
                }
 | 
						||
                var content = dtSource.Rows[i][3].ToString().Trim();
 | 
						||
                if (string.IsNullOrEmpty(content))
 | 
						||
                {
 | 
						||
                    if (string.IsNullOrEmpty(Msg))
 | 
						||
                        Msg = "第" + i + "行第4列:管控措施/检查内容不能为空";
 | 
						||
                    else
 | 
						||
                        Msg = Msg + "\n" + "第" + i + "行第4列:管控措施/检查内容不能为空";
 | 
						||
                }
 | 
						||
                var hidden = dtSource.Rows[i][4].ToString().Trim();
 | 
						||
                var measure = dtSource.Rows[i][5].ToString().Trim();
 | 
						||
                var areaName = dtSource.Rows[i][6].ToString().Trim();
 | 
						||
                if (string.IsNullOrEmpty(areaName))
 | 
						||
                {
 | 
						||
                    if (string.IsNullOrEmpty(Msg))
 | 
						||
                        Msg = "第" + i + "行第7列:对应区域不能为空";
 | 
						||
                    else
 | 
						||
                        Msg = Msg + "\n" + "第" + i + "行第7列:对应区域不能为空";
 | 
						||
                }
 | 
						||
                var riskName = dtSource.Rows[i][7].ToString().Trim();
 | 
						||
                if (string.IsNullOrEmpty(riskName))
 | 
						||
                {
 | 
						||
                    if (string.IsNullOrEmpty(Msg))
 | 
						||
                        Msg = "第" + i + "行第8列:对应风险不能为空";
 | 
						||
                    else
 | 
						||
                        Msg = Msg + "\n" + "第" + i + "行第8列:对应风险不能为空";
 | 
						||
                }
 | 
						||
                List<T_SK_CHECK_SET> sets = new List<T_SK_CHECK_SET>();
 | 
						||
                if (depart.Contains("、"))
 | 
						||
                {
 | 
						||
                    var temps = depart.Split("、").ToList();
 | 
						||
                    var departTemps = departments.Where(t => temps.Contains(t.NAME)).ToList();
 | 
						||
                    if (departTemps.Any())
 | 
						||
                    {
 | 
						||
                        foreach (var de in departTemps)
 | 
						||
                        {
 | 
						||
                            if (post == "所有岗位")
 | 
						||
                            {
 | 
						||
                                var postIds = users.Where(t => t.DEPARTMENT_ID == de.ID).Select(m => m.Nav_Person.POST_ID).Distinct().ToList();
 | 
						||
                                if (postIds.Any())
 | 
						||
                                {
 | 
						||
                                    foreach (var po in postIds)
 | 
						||
                                    {
 | 
						||
                                        T_SK_CHECK_SET set = new T_SK_CHECK_SET();
 | 
						||
                                        set.ORG_ID = orgId;
 | 
						||
                                        set.ID = Guid.NewGuid();
 | 
						||
                                        set.MineType = mintype;
 | 
						||
                                        set.CHECK_CYCLE = SKPLANCHECKFREQUENCYEnum.Date;
 | 
						||
                                        set.CHECK_TYPE = SKDepartmentTypeEnum.班组级;
 | 
						||
                                        set.CHECK_TYPE_ID = checkType?.ID;
 | 
						||
                                        set.DEPARTMENT_ID = de.ID;
 | 
						||
                                        set.POST_ID = po;
 | 
						||
                                        set.CHECK_CONTENT = content;
 | 
						||
                                        set.HIDDEN_DESCRIPTION = hidden;
 | 
						||
                                        set.RECTIFICATION_MEASURES = measure;
 | 
						||
                                        set.AREA_NAME = areaName;
 | 
						||
                                        set.RISK_NAME = riskName;
 | 
						||
                                        sets.Add(set);
 | 
						||
                                    }
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                            else if (post.Contains(","))
 | 
						||
                            {
 | 
						||
                                var temp = post.Split(",").ToList();
 | 
						||
                                var postIdTemps = posts.Where(t => temp.Contains(t.NAME)).Select(m => m.ID).ToList();
 | 
						||
                                var postIds = users.Where(t => t.DEPARTMENT_ID == de.ID && postIdTemps.Contains((Guid)t.Nav_Person.POST_ID)).Select(m => m.Nav_Person.POST_ID).Distinct().ToList();
 | 
						||
                                if (postIds.Any())
 | 
						||
                                {
 | 
						||
                                    foreach (var po in postIds)
 | 
						||
                                    {
 | 
						||
                                        T_SK_CHECK_SET set = new T_SK_CHECK_SET();
 | 
						||
                                        set.ORG_ID = orgId;
 | 
						||
                                        set.ID = Guid.NewGuid();
 | 
						||
                                        set.MineType = mintype;
 | 
						||
                                        set.CHECK_CYCLE = SKPLANCHECKFREQUENCYEnum.Date;
 | 
						||
                                        set.CHECK_TYPE = SKDepartmentTypeEnum.班组级;
 | 
						||
                                        set.CHECK_TYPE_ID = checkType?.ID;
 | 
						||
                                        set.DEPARTMENT_ID = de.ID;
 | 
						||
                                        set.POST_ID = po;
 | 
						||
                                        set.CHECK_CONTENT = content;
 | 
						||
                                        set.HIDDEN_DESCRIPTION = hidden;
 | 
						||
                                        set.RECTIFICATION_MEASURES = measure;
 | 
						||
                                        set.AREA_NAME = areaName;
 | 
						||
                                        set.RISK_NAME = riskName;
 | 
						||
                                        sets.Add(set);
 | 
						||
                                    }
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                            else
 | 
						||
                            {
 | 
						||
                                var postIdTemp = posts.FirstOrDefault(t => t.NAME == post);
 | 
						||
                                if (postIdTemp != null)
 | 
						||
                                {
 | 
						||
                                    var postId = users.FirstOrDefault(t => t.DEPARTMENT_ID == de.ID && t.Nav_Person.POST_ID == postIdTemp.ID);
 | 
						||
                                    if (postId != null)
 | 
						||
                                    {
 | 
						||
                                        T_SK_CHECK_SET set = new T_SK_CHECK_SET();
 | 
						||
                                        set.ORG_ID = orgId;
 | 
						||
                                        set.ID = Guid.NewGuid();
 | 
						||
                                        set.MineType = mintype;
 | 
						||
                                        set.CHECK_CYCLE = SKPLANCHECKFREQUENCYEnum.Date;
 | 
						||
                                        set.CHECK_TYPE = SKDepartmentTypeEnum.班组级;
 | 
						||
                                        set.CHECK_TYPE_ID = checkType?.ID;
 | 
						||
                                        set.DEPARTMENT_ID = de.ID;
 | 
						||
                                        set.POST_ID = postId.Nav_Person.POST_ID;
 | 
						||
                                        set.CHECK_CONTENT = content;
 | 
						||
                                        set.HIDDEN_DESCRIPTION = hidden;
 | 
						||
                                        set.RECTIFICATION_MEASURES = measure;
 | 
						||
                                        set.AREA_NAME = areaName;
 | 
						||
                                        set.RISK_NAME = riskName;
 | 
						||
                                        sets.Add(set);
 | 
						||
                                    }
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                else
 | 
						||
                {
 | 
						||
                    var departTemp = departments.FirstOrDefault(t => depart == t.NAME);
 | 
						||
                    if (departTemp != null)
 | 
						||
                    {
 | 
						||
                        if (post == "所有岗位")
 | 
						||
                        {
 | 
						||
                            var postIds = users.Where(t => t.DEPARTMENT_ID == departTemp.ID).Select(m => m.Nav_Person.POST_ID).Distinct().ToList();
 | 
						||
                            if (postIds.Any())
 | 
						||
                            {
 | 
						||
                                foreach (var po in postIds)
 | 
						||
                                {
 | 
						||
                                    T_SK_CHECK_SET set = new T_SK_CHECK_SET();
 | 
						||
                                    set.ORG_ID = orgId;
 | 
						||
                                    set.ID = Guid.NewGuid();
 | 
						||
                                    set.MineType = mintype;
 | 
						||
                                    set.CHECK_CYCLE = SKPLANCHECKFREQUENCYEnum.Date;
 | 
						||
                                    set.CHECK_TYPE = SKDepartmentTypeEnum.班组级;
 | 
						||
                                    set.CHECK_TYPE_ID = checkType?.ID;
 | 
						||
                                    set.DEPARTMENT_ID = departTemp.ID;
 | 
						||
                                    set.POST_ID = po;
 | 
						||
                                    set.CHECK_CONTENT = content;
 | 
						||
                                    set.HIDDEN_DESCRIPTION = hidden;
 | 
						||
                                    set.RECTIFICATION_MEASURES = measure;
 | 
						||
                                    set.AREA_NAME = areaName;
 | 
						||
                                    set.RISK_NAME = riskName;
 | 
						||
                                    sets.Add(set);
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                        else if (post.Contains(","))
 | 
						||
                        {
 | 
						||
                            var temp = post.Split(",").ToList();
 | 
						||
                            var postIdTemps = posts.Where(t => temp.Contains(t.NAME)).Select(m => m.ID).ToList();
 | 
						||
                            var postIds = users.Where(t => t.DEPARTMENT_ID == departTemp.ID && postIdTemps.Contains((Guid)t.Nav_Person.POST_ID)).Select(m => m.Nav_Person.POST_ID).Distinct().ToList();
 | 
						||
                            if (postIds.Any())
 | 
						||
                            {
 | 
						||
                                foreach (var po in postIds)
 | 
						||
                                {
 | 
						||
                                    T_SK_CHECK_SET set = new T_SK_CHECK_SET();
 | 
						||
                                    set.ORG_ID = orgId;
 | 
						||
                                    set.ID = Guid.NewGuid();
 | 
						||
                                    set.MineType = mintype;
 | 
						||
                                    set.CHECK_CYCLE = SKPLANCHECKFREQUENCYEnum.Date;
 | 
						||
                                    set.CHECK_TYPE = SKDepartmentTypeEnum.班组级;
 | 
						||
                                    set.CHECK_TYPE_ID = checkType?.ID;
 | 
						||
                                    set.DEPARTMENT_ID = departTemp.ID;
 | 
						||
                                    set.POST_ID = po;
 | 
						||
                                    set.CHECK_CONTENT = content;
 | 
						||
                                    set.HIDDEN_DESCRIPTION = hidden;
 | 
						||
                                    set.RECTIFICATION_MEASURES = measure;
 | 
						||
                                    set.AREA_NAME = areaName;
 | 
						||
                                    set.RISK_NAME = riskName;
 | 
						||
                                    sets.Add(set);
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                        else
 | 
						||
                        {
 | 
						||
                            var postIdTemp = posts.FirstOrDefault(t => t.NAME == post);
 | 
						||
                            if (postIdTemp != null)
 | 
						||
                            {
 | 
						||
                                var postId = users.FirstOrDefault(t => t.DEPARTMENT_ID == departTemp.ID && t.Nav_Person.POST_ID == postIdTemp.ID);
 | 
						||
                                if (postId != null)
 | 
						||
                                {
 | 
						||
                                    T_SK_CHECK_SET set = new T_SK_CHECK_SET();
 | 
						||
                                    set.ORG_ID = orgId;
 | 
						||
                                    set.ID = Guid.NewGuid();
 | 
						||
                                    set.MineType = mintype;
 | 
						||
                                    set.CHECK_CYCLE = SKPLANCHECKFREQUENCYEnum.Date;
 | 
						||
                                    set.CHECK_TYPE = SKDepartmentTypeEnum.班组级;
 | 
						||
                                    set.CHECK_TYPE_ID = checkType?.ID;
 | 
						||
                                    set.DEPARTMENT_ID = departTemp.ID;
 | 
						||
                                    set.POST_ID = postId.Nav_Person.POST_ID;
 | 
						||
                                    set.CHECK_CONTENT = content;
 | 
						||
                                    set.HIDDEN_DESCRIPTION = hidden;
 | 
						||
                                    set.RECTIFICATION_MEASURES = measure;
 | 
						||
                                    set.AREA_NAME = areaName;
 | 
						||
                                    set.RISK_NAME = riskName;
 | 
						||
                                    sets.Add(set);
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                laws.AddRange(sets);
 | 
						||
            }
 | 
						||
            List<T_SK_CHECK_SET> addSets = new List<T_SK_CHECK_SET>();
 | 
						||
            List<T_SK_CHECK_SET_CONTENTS> addSetContents = new List<T_SK_CHECK_SET_CONTENTS>();
 | 
						||
            List<T_SK_CHECK_SET_CONTENTS_HIDDEN> addSetHiddens = new List<T_SK_CHECK_SET_CONTENTS_HIDDEN>();
 | 
						||
            List<T_SK_CHECK_SET_CONTENTS_AREA> addSetAreas = new List<T_SK_CHECK_SET_CONTENTS_AREA>();
 | 
						||
            List<T_SK_CHECK_SET_CONTENTS_AREA_RISK> addSetAreaRisks = new List<T_SK_CHECK_SET_CONTENTS_AREA_RISK>();
 | 
						||
            if (laws.Any())
 | 
						||
            {
 | 
						||
                var list = laws.GroupBy(t => new { t.MineType, t.DEPARTMENT_ID, t.POST_ID, t.CHECK_CYCLE, t.CHECK_TYPE_ID, t.CHECK_TYPE }).ToList();
 | 
						||
                if (list.Any())
 | 
						||
                {
 | 
						||
                    foreach (var item in list)
 | 
						||
                    {
 | 
						||
                        var exsist = standLaws.FirstOrDefault(t => t.MineType == item.Key.MineType && t.DEPARTMENT_ID == item.Key.DEPARTMENT_ID && t.POST_ID == item.Key.POST_ID && t.CHECK_CYCLE == item.Key.CHECK_CYCLE && t.CHECK_TYPE_ID == item.Key.CHECK_TYPE_ID && t.CHECK_TYPE == item.Key.CHECK_TYPE);
 | 
						||
                        if (exsist == null)
 | 
						||
                        {
 | 
						||
                            T_SK_CHECK_SET set = new T_SK_CHECK_SET();
 | 
						||
                            set.ORG_ID = orgId;
 | 
						||
                            set.ID = Guid.NewGuid();
 | 
						||
                            set.MineType = item.Key.MineType;
 | 
						||
                            set.CHECK_CYCLE = item.Key.CHECK_CYCLE;
 | 
						||
                            set.CHECK_TYPE = item.Key.CHECK_TYPE;
 | 
						||
                            set.CHECK_TYPE_ID = item.Key.CHECK_TYPE_ID;
 | 
						||
                            set.DEPARTMENT_ID = item.Key.DEPARTMENT_ID;
 | 
						||
                            set.POST_ID = item.Key.POST_ID;
 | 
						||
                            addSets.Add(set);
 | 
						||
                            var contentsTemps = laws.Where(t => t.MineType == item.Key.MineType && t.DEPARTMENT_ID == item.Key.DEPARTMENT_ID && t.POST_ID == item.Key.POST_ID && t.CHECK_CYCLE == item.Key.CHECK_CYCLE && t.CHECK_TYPE_ID == item.Key.CHECK_TYPE_ID && t.CHECK_TYPE == item.Key.CHECK_TYPE).ToList();
 | 
						||
                            if (contentsTemps.Any())
 | 
						||
                            {
 | 
						||
                                var distinctContents = contentsTemps.Select(t => t.CHECK_CONTENT).Distinct().ToList();
 | 
						||
                                if (distinctContents.Any())
 | 
						||
                                {
 | 
						||
                                    foreach (var item2 in distinctContents)
 | 
						||
                                    {
 | 
						||
                                        var content = checkContents.FirstOrDefault(t => t.CHECKCONTENT == item2);
 | 
						||
                                        T_SK_CHECK_SET_CONTENTS con = new T_SK_CHECK_SET_CONTENTS();
 | 
						||
                                        con.ORG_ID = orgId;
 | 
						||
                                        con.ID = Guid.NewGuid();
 | 
						||
                                        con.CHECK_SET_ID = set.ID;
 | 
						||
                                        con.CHECK_CONTENT = item2;
 | 
						||
                                        con.CHECK_CONTENTS_ID = content?.ID;
 | 
						||
                                        addSetContents.Add(con);
 | 
						||
                                        var hiddenTemps = contentsTemps.Where(t => t.CHECK_CONTENT == item2).ToList();
 | 
						||
                                        if (hiddenTemps.Any())
 | 
						||
                                        {
 | 
						||
                                            foreach (var item3 in hiddenTemps)
 | 
						||
                                            {
 | 
						||
                                                if (item3 != null && !string.IsNullOrEmpty(item3.HIDDEN_DESCRIPTION))
 | 
						||
                                                {
 | 
						||
                                                    var ques = checkQuestions.FirstOrDefault(t => t.DESCREPTION == item3.HIDDEN_DESCRIPTION);
 | 
						||
                                                    T_SK_CHECK_SET_CONTENTS_HIDDEN hid = new T_SK_CHECK_SET_CONTENTS_HIDDEN();
 | 
						||
                                                    hid.ORG_ID = orgId;
 | 
						||
                                                    hid.ID = Guid.NewGuid();
 | 
						||
                                                    hid.CHECK_CONTENTS_SET_ID = con.ID;
 | 
						||
                                                    hid.CHECK_QUESTION_ID = ques?.ID;
 | 
						||
                                                    hid.HIDDEN_DESCRIPTION = item3.HIDDEN_DESCRIPTION;
 | 
						||
                                                    hid.RECTIFICATION_MEASURES = item3.RECTIFICATION_MEASURES;
 | 
						||
                                                    addSetHiddens.Add(hid);
 | 
						||
                                                }
 | 
						||
                                            }
 | 
						||
                                            var distinctAreas = hiddenTemps.Select(t => t.AREA_NAME).Distinct().ToList();
 | 
						||
                                            if (distinctAreas.Any())
 | 
						||
                                            {
 | 
						||
                                                foreach (var item3 in distinctAreas)
 | 
						||
                                                {
 | 
						||
                                                    var area = areaLists.FirstOrDefault(t => t.NAME == item3);
 | 
						||
                                                    if (area != null)
 | 
						||
                                                    {
 | 
						||
                                                        T_SK_CHECK_SET_CONTENTS_AREA are = new T_SK_CHECK_SET_CONTENTS_AREA();
 | 
						||
                                                        are.ORG_ID = orgId;
 | 
						||
                                                        are.ID = Guid.NewGuid();
 | 
						||
                                                        are.CHECK_SET_CONTENTS_ID = con.ID;
 | 
						||
                                                        are.AREA_ID = area.ID;
 | 
						||
                                                        addSetAreas.Add(are);
 | 
						||
                                                        var riskNameTemps = hiddenTemps.Where(t => t.AREA_NAME == item3).Select(m => m.RISK_NAME).Distinct().ToList();
 | 
						||
                                                        if (riskNameTemps.Any())
 | 
						||
                                                        {
 | 
						||
                                                            foreach (var item4 in riskNameTemps)
 | 
						||
                                                            {
 | 
						||
                                                                if (item4 == "所有风险")
 | 
						||
                                                                {
 | 
						||
                                                                    var libraryTempIds = librarys.Where(t => t.MineType == item.Key.MineType && t.AREA_ID == area.ID).Select(t => t.RISK_NAME_ID).Distinct().ToList();
 | 
						||
                                                                    if (libraryTempIds.Any())
 | 
						||
                                                                    {
 | 
						||
                                                                        foreach (var item5 in libraryTempIds)
 | 
						||
                                                                        {
 | 
						||
                                                                            var exsistRisk = addSetAreaRisks.FirstOrDefault(t => t.CHECK_SET_CONTENTS_AREA_ID == are.ID && t.RISK_NAME_ID == item5);
 | 
						||
                                                                            if (exsistRisk == null)
 | 
						||
                                                                            {
 | 
						||
                                                                                T_SK_CHECK_SET_CONTENTS_AREA_RISK risk = new T_SK_CHECK_SET_CONTENTS_AREA_RISK();
 | 
						||
                                                                                risk.ORG_ID = orgId;
 | 
						||
                                                                                risk.ID = Guid.NewGuid();
 | 
						||
                                                                                risk.CHECK_SET_CONTENTS_AREA_ID = are.ID;
 | 
						||
                                                                                risk.RISK_NAME_ID = item5;
 | 
						||
                                                                                addSetAreaRisks.Add(risk);
 | 
						||
                                                                            }
 | 
						||
                                                                        }
 | 
						||
                                                                    }
 | 
						||
                                                                }
 | 
						||
                                                                else if (item4.Contains("、"))
 | 
						||
                                                                {
 | 
						||
                                                                    var temp = item4.Split("、").ToList();
 | 
						||
                                                                    var riskTemps = riskNames.Where(t => temp.Contains(t.NAME)).ToList();
 | 
						||
                                                                    if (riskTemps.Any())
 | 
						||
                                                                    {
 | 
						||
                                                                        foreach (var item5 in riskTemps)
 | 
						||
                                                                        {
 | 
						||
                                                                            var exsistRisk = addSetAreaRisks.FirstOrDefault(t => t.CHECK_SET_CONTENTS_AREA_ID == are.ID && t.RISK_NAME_ID == item5.ID);
 | 
						||
                                                                            if (exsistRisk == null)
 | 
						||
                                                                            {
 | 
						||
                                                                                T_SK_CHECK_SET_CONTENTS_AREA_RISK risk = new T_SK_CHECK_SET_CONTENTS_AREA_RISK();
 | 
						||
                                                                                risk.ORG_ID = orgId;
 | 
						||
                                                                                risk.ID = Guid.NewGuid();
 | 
						||
                                                                                risk.CHECK_SET_CONTENTS_AREA_ID = are.ID;
 | 
						||
                                                                                risk.RISK_NAME_ID = item5.ID;
 | 
						||
                                                                                addSetAreaRisks.Add(risk);
 | 
						||
                                                                            }
 | 
						||
                                                                        }
 | 
						||
                                                                    }
 | 
						||
                                                                }
 | 
						||
                                                                else
 | 
						||
                                                                {
 | 
						||
                                                                    var riskTemp = riskNames.FirstOrDefault(t => item4 == t.NAME);
 | 
						||
                                                                    if (riskTemp != null)
 | 
						||
                                                                    {
 | 
						||
                                                                        var exsistRisk = addSetAreaRisks.FirstOrDefault(t => t.CHECK_SET_CONTENTS_AREA_ID == are.ID && t.RISK_NAME_ID == riskTemp.ID);
 | 
						||
                                                                        if (exsistRisk == null)
 | 
						||
                                                                        {
 | 
						||
                                                                            T_SK_CHECK_SET_CONTENTS_AREA_RISK risk = new T_SK_CHECK_SET_CONTENTS_AREA_RISK();
 | 
						||
                                                                            risk.ORG_ID = orgId;
 | 
						||
                                                                            risk.ID = Guid.NewGuid();
 | 
						||
                                                                            risk.CHECK_SET_CONTENTS_AREA_ID = are.ID;
 | 
						||
                                                                            risk.RISK_NAME_ID = riskTemp.ID;
 | 
						||
                                                                            addSetAreaRisks.Add(risk);
 | 
						||
                                                                        }
 | 
						||
                                                                    }
 | 
						||
                                                                }
 | 
						||
                                                            }
 | 
						||
                                                        }
 | 
						||
                                                    }
 | 
						||
                                                }
 | 
						||
                                            }
 | 
						||
                                        }
 | 
						||
                                    }
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                }
 | 
						||
            }
 | 
						||
            if (!string.IsNullOrEmpty(Msg))
 | 
						||
            {
 | 
						||
                throw new Exception(Msg);
 | 
						||
            }
 | 
						||
            else
 | 
						||
            {
 | 
						||
                UnifiedCommit(() =>
 | 
						||
                {
 | 
						||
                    if (addSets != null && addSets.Any())
 | 
						||
                        BantchAddEntityNoCommit(addSets);
 | 
						||
                    if (addSetContents != null && addSetContents.Any())
 | 
						||
                        BantchAddEntityNoCommit(addSetContents);
 | 
						||
                    if (addSetHiddens != null && addSetHiddens.Any())
 | 
						||
                        BantchAddEntityNoCommit(addSetHiddens);
 | 
						||
                    if (addSetAreas != null && addSetAreas.Any())
 | 
						||
                        BantchAddEntityNoCommit(addSetAreas);
 | 
						||
                    if (addSetAreaRisks != null && addSetAreaRisks.Any())
 | 
						||
                        BantchAddEntityNoCommit(addSetAreaRisks);
 | 
						||
                });
 | 
						||
                Msg = "导入成功!";
 | 
						||
            }
 | 
						||
            return true;
 | 
						||
        }
 | 
						||
 | 
						||
        public bool InsertModel2(DataTable dtSource, Guid? orgId, ref string Msg, int rowIndex = 1)
 | 
						||
        {
 | 
						||
            var userId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
 | 
						||
            if (dtSource == null || dtSource.Rows.Count < rowIndex)
 | 
						||
            {
 | 
						||
                Msg = "未获取到导入数据";
 | 
						||
                throw new Exception(Msg);
 | 
						||
            }
 | 
						||
            int rowAll = dtSource.Rows.Count;
 | 
						||
            if (!string.IsNullOrEmpty(Msg))
 | 
						||
            {
 | 
						||
                throw new Exception(Msg);
 | 
						||
            }
 | 
						||
            var librarys = GetEntities<T_SK_ENTERPRISE_LIBRARY>(t => t.IS_DELETED == false, new BaseFilter(orgId));
 | 
						||
            var checkTypes = this.GetEntities<T_SK_CHECK_TYPE>(t => !t.IS_DELETED, new BaseFilter(orgId));
 | 
						||
            var checkContents = this.GetEntities<T_SK_CHECK_CONTENTS>(t => t.IS_DELETED == false, new BaseFilter(orgId));
 | 
						||
            var checkQuestions = this.GetEntities<T_SK_CHECK_QUESTION>(t => t.IS_DELETED == false, new BaseFilter(orgId));
 | 
						||
            var departments = GetEntities<T_FM_DEPARTMENT>(t => t.IS_DELETED == false, new BaseFilter(orgId));
 | 
						||
            var areaLists = GetEntities<T_SK_RISK_AREA>(t => t.IS_DELETED == false, new BaseFilter(orgId));
 | 
						||
            var posts = GetEntities<T_FM_USER_POST>(t => t.IS_DELETED == false, new BaseFilter(orgId));
 | 
						||
            var riskNames = GetEntities<T_SK_RISK_NAME>(t => t.IS_DELETED == false, new BaseFilter(orgId));
 | 
						||
            var users = GetEntities<T_FM_USER>(i => i.Nav_Person != null, new BaseFilter(orgId), "Nav_Person", "Nav_ApproveRole").ToList();
 | 
						||
            DateTime dtNow = DateTime.Now;
 | 
						||
            KeywordFilter filter = new KeywordFilter();
 | 
						||
            filter.OrgId = orgId;
 | 
						||
            filter.Keyword = "0";
 | 
						||
            if (dtSource.Rows.Count == 1)
 | 
						||
            {
 | 
						||
                throw new Exception("导入必须两条以上,一条请直接新增");
 | 
						||
            }
 | 
						||
            List<ImportDetails> imports = new List<ImportDetails>();
 | 
						||
            int j = 1;
 | 
						||
            for (int i = 0; i < rowAll; i++)
 | 
						||
            {
 | 
						||
                ImportDetails set = new ImportDetails();
 | 
						||
                var minetype = dtSource.Rows[i][0].ToString().Trim();
 | 
						||
                if (!string.IsNullOrEmpty(minetype))
 | 
						||
                {
 | 
						||
                    switch (minetype)
 | 
						||
                    {
 | 
						||
                        case "全公司":
 | 
						||
                            set.MineType = SKProductionUnit.All;
 | 
						||
                            break;
 | 
						||
                        case "露天矿":
 | 
						||
                            set.MineType = SKProductionUnit.Mine;
 | 
						||
                            break;
 | 
						||
                        case "选矿厂":
 | 
						||
                            set.MineType = SKProductionUnit.MineChoose;
 | 
						||
                            break;
 | 
						||
                        case "尾矿库":
 | 
						||
                            set.MineType = SKProductionUnit.Minelast;
 | 
						||
                            break;
 | 
						||
                        case "职能口":
 | 
						||
                            set.MineType = SKProductionUnit.Department;
 | 
						||
                            break;
 | 
						||
                        case "非金属":
 | 
						||
                            set.MineType = SKProductionUnit.Nonmetallic;
 | 
						||
                            break;
 | 
						||
                        case "地下矿":
 | 
						||
                            set.MineType = SKProductionUnit.MineUnderGround;
 | 
						||
                            break;
 | 
						||
                        default:
 | 
						||
                            set.MineType = SKProductionUnit.All;
 | 
						||
                            break;
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                var departType = dtSource.Rows[i][1].ToString().Trim();
 | 
						||
                if (!string.IsNullOrEmpty(departType))
 | 
						||
                {
 | 
						||
                    switch (departType)
 | 
						||
                    {
 | 
						||
                        case "部门级":
 | 
						||
                            set.DepartType = SKDepartmentTypeEnum.部门级;
 | 
						||
                            break;
 | 
						||
                        case "车间级":
 | 
						||
                            set.DepartType = SKDepartmentTypeEnum.车间级;
 | 
						||
                            break;
 | 
						||
                        case "班组级":
 | 
						||
                            set.DepartType = SKDepartmentTypeEnum.班组级;
 | 
						||
                            break;
 | 
						||
                        case "公司级":
 | 
						||
                            set.DepartType = SKDepartmentTypeEnum.公司级;
 | 
						||
                            break;
 | 
						||
                        case "岗位级":
 | 
						||
                            set.DepartType = SKDepartmentTypeEnum.班组级;
 | 
						||
                            break;
 | 
						||
                        default:
 | 
						||
                            set.DepartType = SKDepartmentTypeEnum.公司级;
 | 
						||
                            break;
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                var checkType = dtSource.Rows[i][2].ToString().Trim();
 | 
						||
                if (!string.IsNullOrEmpty(checkType))
 | 
						||
                {
 | 
						||
                    var type = checkTypes.FirstOrDefault(t => t.NAME == checkType);
 | 
						||
                    if (type != null)
 | 
						||
                    {
 | 
						||
                        set.CheckTypeId = type.ID;
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                var checkCycle = dtSource.Rows[i][3].ToString().Trim();
 | 
						||
                if (!string.IsNullOrEmpty(checkCycle))
 | 
						||
                {
 | 
						||
                    switch (checkCycle)
 | 
						||
                    {
 | 
						||
                        case "每班":
 | 
						||
                            set.CheckCycle = SKPLANCHECKFREQUENCYEnum.Date;
 | 
						||
                            break;
 | 
						||
                        case "每天":
 | 
						||
                            set.CheckCycle = SKPLANCHECKFREQUENCYEnum.Date;
 | 
						||
                            break;
 | 
						||
                        case "每周":
 | 
						||
                            set.CheckCycle = SKPLANCHECKFREQUENCYEnum.Week;
 | 
						||
                            break;
 | 
						||
                        case "每月":
 | 
						||
                            set.CheckCycle = SKPLANCHECKFREQUENCYEnum.Month;
 | 
						||
                            break;
 | 
						||
                        case "每年":
 | 
						||
                            set.CheckCycle = SKPLANCHECKFREQUENCYEnum.Year;
 | 
						||
                            break;
 | 
						||
                        default:
 | 
						||
                            set.CheckCycle = SKPLANCHECKFREQUENCYEnum.Date;
 | 
						||
                            break;
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                set.CheckContent = dtSource.Rows[i][4].ToString().Trim();
 | 
						||
                set.HiddenScript = dtSource.Rows[i][5].ToString().Trim();
 | 
						||
                set.Measure = dtSource.Rows[i][6].ToString().Trim();
 | 
						||
                set.Areas = dtSource.Rows[i][7].ToString().Trim();
 | 
						||
                set.Risks = dtSource.Rows[i][8].ToString().Trim();
 | 
						||
                imports.Add(set);
 | 
						||
            }
 | 
						||
            List<T_SK_CHECK_SET> addSets = new List<T_SK_CHECK_SET>();
 | 
						||
            List<T_SK_CHECK_SET_CONTENTS> addSetContents = new List<T_SK_CHECK_SET_CONTENTS>();
 | 
						||
            List<T_SK_CHECK_SET_CONTENTS_HIDDEN> addSetHiddens = new List<T_SK_CHECK_SET_CONTENTS_HIDDEN>();
 | 
						||
            List<T_SK_CHECK_SET_CONTENTS_AREA> addSetAreas = new List<T_SK_CHECK_SET_CONTENTS_AREA>();
 | 
						||
            List<T_SK_CHECK_SET_CONTENTS_AREA_RISK> addSetAreaRisks = new List<T_SK_CHECK_SET_CONTENTS_AREA_RISK>();
 | 
						||
            if (imports.Any())
 | 
						||
            {
 | 
						||
                var departLevelGroups = imports.GroupBy(t => new { t.MineType, t.DepartType, t.CheckTypeId, t.CheckCycle }).ToList();
 | 
						||
                if (departLevelGroups.Any())
 | 
						||
                {
 | 
						||
                    foreach (var item in departLevelGroups)
 | 
						||
                    {
 | 
						||
                        T_SK_CHECK_SET set = new T_SK_CHECK_SET();
 | 
						||
                        set.ORG_ID = orgId;
 | 
						||
                        set.ID = Guid.NewGuid();
 | 
						||
                        set.MineType = item.Key.MineType;
 | 
						||
                        set.CHECK_CYCLE = item.Key.CheckCycle;
 | 
						||
                        set.CHECK_TYPE = item.Key.DepartType;
 | 
						||
                        set.CHECK_TYPE_ID = item.Key.CheckTypeId;
 | 
						||
                        addSets.Add(set);
 | 
						||
                        var contents = imports.Where(t => t.MineType == item.Key.MineType && t.DepartType == item.Key.DepartType && t.CheckCycle == item.Key.CheckCycle && t.CheckTypeId == item.Key.CheckTypeId).ToList();
 | 
						||
                        var contentGroups = contents.GroupBy(t => new { t.MineType, t.DepartType, t.CheckTypeId, t.CheckCycle, t.CheckContent }).ToList();
 | 
						||
                        if (contentGroups.Any())
 | 
						||
                        {
 | 
						||
                            foreach (var item2 in contentGroups)
 | 
						||
                            {
 | 
						||
                                var content = checkContents.FirstOrDefault(t => t.CHECKCONTENT == item2.Key.CheckContent);
 | 
						||
                                T_SK_CHECK_SET_CONTENTS con = new T_SK_CHECK_SET_CONTENTS();
 | 
						||
                                con.ORG_ID = orgId;
 | 
						||
                                con.ID = Guid.NewGuid();
 | 
						||
                                con.CHECK_SET_ID = set.ID;
 | 
						||
                                con.CHECK_CONTENT = item2.Key.CheckContent;
 | 
						||
                                con.CHECK_CONTENTS_ID = content?.ID;
 | 
						||
                                addSetContents.Add(con);
 | 
						||
                                var hiddenTemps = contents.Where(t => t.CheckContent == item2.Key.CheckContent).ToList();
 | 
						||
                                if (hiddenTemps.Any())
 | 
						||
                                {
 | 
						||
                                    foreach (var item3 in hiddenTemps)
 | 
						||
                                    {
 | 
						||
                                        var ques = checkQuestions.FirstOrDefault(t => t.DESCREPTION == item3.HiddenScript && t.CHECK_CONTENTS_ID == con.CHECK_CONTENTS_ID);
 | 
						||
                                        T_SK_CHECK_SET_CONTENTS_HIDDEN hid = new T_SK_CHECK_SET_CONTENTS_HIDDEN();
 | 
						||
                                        hid.ORG_ID = orgId;
 | 
						||
                                        hid.ID = Guid.NewGuid();
 | 
						||
                                        hid.CHECK_CONTENTS_SET_ID = con.ID;
 | 
						||
                                        hid.CHECK_QUESTION_ID = ques?.ID;
 | 
						||
                                        hid.HIDDEN_DESCRIPTION = item3.HiddenScript;
 | 
						||
                                        hid.RECTIFICATION_MEASURES = item3.Measure;
 | 
						||
                                        addSetHiddens.Add(hid);
 | 
						||
                                    }
 | 
						||
                                }
 | 
						||
                                var areaList = new List<string>();
 | 
						||
                                var areaTemps = contents.Where(t => t.CheckContent == item2.Key.CheckContent).Select(m => m.Areas).ToList();
 | 
						||
                                if (areaTemps.Any())
 | 
						||
                                {
 | 
						||
                                    foreach (var item3 in areaTemps)
 | 
						||
                                    {
 | 
						||
                                        if (item3.Contains(","))
 | 
						||
                                        {
 | 
						||
                                            var temp = item3.Split(",").ToList();
 | 
						||
                                            areaList.AddRange(temp);
 | 
						||
                                        }
 | 
						||
                                        else
 | 
						||
                                        {
 | 
						||
                                            areaList.Add(item3);
 | 
						||
                                        }
 | 
						||
                                    }
 | 
						||
                                }
 | 
						||
                                areaList = areaList.Distinct().ToList();
 | 
						||
                                if (areaList.Any())
 | 
						||
                                {
 | 
						||
                                    foreach (var item3 in areaList)
 | 
						||
                                    {
 | 
						||
                                        if (!string.IsNullOrEmpty(item3))
 | 
						||
                                        {
 | 
						||
                                            var area = areaLists.FirstOrDefault(t => t.NAME == item3);
 | 
						||
                                            T_SK_CHECK_SET_CONTENTS_AREA are = new T_SK_CHECK_SET_CONTENTS_AREA();
 | 
						||
                                            are.ORG_ID = orgId;
 | 
						||
                                            are.ID = Guid.NewGuid();
 | 
						||
                                            are.CHECK_SET_CONTENTS_ID = con.ID;
 | 
						||
                                            are.AREA_ID = area.ID;
 | 
						||
                                            addSetAreas.Add(are);
 | 
						||
                                            var libraryTempIds = librarys.Where(t => t.MineType == item.Key.MineType && t.AREA_ID == area.ID).Select(t => t.RISK_NAME_ID).Distinct().ToList();
 | 
						||
                                            if (libraryTempIds.Any())
 | 
						||
                                            {
 | 
						||
                                                foreach (var item5 in libraryTempIds)
 | 
						||
                                                {
 | 
						||
                                                    var exsistRisk = addSetAreaRisks.FirstOrDefault(t => t.CHECK_SET_CONTENTS_AREA_ID == are.ID && t.RISK_NAME_ID == item5);
 | 
						||
                                                    if (exsistRisk == null)
 | 
						||
                                                    {
 | 
						||
                                                        T_SK_CHECK_SET_CONTENTS_AREA_RISK risk = new T_SK_CHECK_SET_CONTENTS_AREA_RISK();
 | 
						||
                                                        risk.ORG_ID = orgId;
 | 
						||
                                                        risk.ID = Guid.NewGuid();
 | 
						||
                                                        risk.CHECK_SET_CONTENTS_AREA_ID = are.ID;
 | 
						||
                                                        risk.RISK_NAME_ID = item5;
 | 
						||
                                                        addSetAreaRisks.Add(risk);
 | 
						||
                                                    }
 | 
						||
                                                }
 | 
						||
                                            }
 | 
						||
                                        }
 | 
						||
                                    }
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                }
 | 
						||
            }
 | 
						||
            if (!string.IsNullOrEmpty(Msg))
 | 
						||
            {
 | 
						||
                throw new Exception(Msg);
 | 
						||
            }
 | 
						||
            else
 | 
						||
            {
 | 
						||
                UnifiedCommit(() =>
 | 
						||
                {
 | 
						||
                    if (addSets != null && addSets.Any())
 | 
						||
                        BantchAddEntityNoCommit(addSets);
 | 
						||
                    if (addSetContents != null && addSetContents.Any())
 | 
						||
                        BantchAddEntityNoCommit(addSetContents);
 | 
						||
                    if (addSetHiddens != null && addSetHiddens.Any())
 | 
						||
                    {
 | 
						||
                        addSetHiddens = addSetHiddens.Distinct(t => new { t.CHECK_CONTENTS_SET_ID, t.CHECK_QUESTION_ID, t.HIDDEN_DESCRIPTION, t.HIDDEN_LEVEL, t.RECTIFICATION_MEASURES }).ToList();
 | 
						||
                        BantchAddEntityNoCommit(addSetHiddens);
 | 
						||
                    }
 | 
						||
                    if (addSetAreas != null && addSetAreas.Any())
 | 
						||
                        BantchAddEntityNoCommit(addSetAreas);
 | 
						||
                    if (addSetAreaRisks != null && addSetAreaRisks.Any())
 | 
						||
                        BantchAddEntityNoCommit(addSetAreaRisks);
 | 
						||
                });
 | 
						||
                Msg = "导入成功!";
 | 
						||
            }
 | 
						||
            return true;
 | 
						||
        }
 | 
						||
 | 
						||
        public bool InsertModel3(DataTable dtSource, Guid? orgId, ref string Msg, int rowIndex = 1)
 | 
						||
        {
 | 
						||
            var userId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
 | 
						||
            if (dtSource == null || dtSource.Rows.Count < rowIndex)
 | 
						||
            {
 | 
						||
                Msg = "未获取到导入数据";
 | 
						||
                throw new Exception(Msg);
 | 
						||
            }
 | 
						||
            int rowAll = dtSource.Rows.Count;
 | 
						||
            if (!string.IsNullOrEmpty(Msg))
 | 
						||
            {
 | 
						||
                throw new Exception(Msg);
 | 
						||
            }
 | 
						||
            var checkTypes = this.GetEntities<T_SK_CHECK_TYPE>(t => !t.IS_DELETED, new BaseFilter(orgId));
 | 
						||
            DateTime dtNow = DateTime.Now;
 | 
						||
            if (dtSource.Rows.Count == 1)
 | 
						||
            {
 | 
						||
                throw new Exception("导入必须两条以上,一条请直接新增");
 | 
						||
            }
 | 
						||
            List<ImportDetails> imports = new List<ImportDetails>();
 | 
						||
            int j = 1;
 | 
						||
            for (int i = 0; i < rowAll; i++)
 | 
						||
            {
 | 
						||
                ImportDetails set = new ImportDetails();
 | 
						||
                set.CheckContent = dtSource.Rows[i][2].ToString().Trim();
 | 
						||
                imports.Add(set);
 | 
						||
            }
 | 
						||
            List<T_SK_CHECK_TYPE> addSets = new List<T_SK_CHECK_TYPE>();
 | 
						||
            if (imports.Any())
 | 
						||
            {
 | 
						||
                var departLevelGroups = imports.GroupBy(t => new { t.CheckContent }).ToList();
 | 
						||
                if (departLevelGroups.Any())
 | 
						||
                {
 | 
						||
                    foreach (var item in departLevelGroups)
 | 
						||
                    {
 | 
						||
                        var type = checkTypes.FirstOrDefault(t => t.NAME == item.Key.CheckContent);
 | 
						||
                        if (type == null)
 | 
						||
                        {
 | 
						||
                            T_SK_CHECK_TYPE set = new T_SK_CHECK_TYPE();
 | 
						||
                            set.ORG_ID = orgId;
 | 
						||
                            set.ID = Guid.NewGuid();
 | 
						||
                            set.MineType = SKProductionUnit.Minelast;
 | 
						||
                            set.NAME = item.Key.CheckContent;
 | 
						||
                            addSets.Add(set);
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                }
 | 
						||
            }
 | 
						||
            if (!string.IsNullOrEmpty(Msg))
 | 
						||
            {
 | 
						||
                throw new Exception(Msg);
 | 
						||
            }
 | 
						||
            else
 | 
						||
            {
 | 
						||
                UnifiedCommit(() =>
 | 
						||
                {
 | 
						||
                    if (addSets != null && addSets.Any())
 | 
						||
                        BantchAddEntityNoCommit(addSets);
 | 
						||
                });
 | 
						||
                Msg = "导入成功!";
 | 
						||
            }
 | 
						||
            return true;
 | 
						||
        }
 | 
						||
 | 
						||
        public bool InsertModel4(DataTable dtSource, Guid? orgId, ref string Msg, int rowIndex = 1)
 | 
						||
        {
 | 
						||
            var userId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
 | 
						||
            if (dtSource == null || dtSource.Rows.Count < rowIndex)
 | 
						||
            {
 | 
						||
                Msg = "未获取到导入数据";
 | 
						||
                throw new Exception(Msg);
 | 
						||
            }
 | 
						||
            int rowAll = dtSource.Rows.Count;
 | 
						||
            if (!string.IsNullOrEmpty(Msg))
 | 
						||
            {
 | 
						||
                throw new Exception(Msg);
 | 
						||
            }
 | 
						||
            var checkContents = this.GetEntities<T_SK_CHECK_CONTENTS>(t => t.IS_DELETED == false, new BaseFilter(orgId));
 | 
						||
            var checkQuestions = this.GetEntities<T_SK_CHECK_QUESTION>(t => t.IS_DELETED == false, new BaseFilter(orgId));
 | 
						||
            DateTime dtNow = DateTime.Now;
 | 
						||
            if (dtSource.Rows.Count == 1)
 | 
						||
            {
 | 
						||
                throw new Exception("导入必须两条以上,一条请直接新增");
 | 
						||
            }
 | 
						||
            List<ImportDetails> imports = new List<ImportDetails>();
 | 
						||
            int j = 1;
 | 
						||
            for (int i = 0; i < rowAll; i++)
 | 
						||
            {
 | 
						||
                ImportDetails set = new ImportDetails();
 | 
						||
                set.CheckContent = dtSource.Rows[i][4].ToString().Trim();
 | 
						||
                set.HiddenScript = dtSource.Rows[i][5].ToString().Trim();
 | 
						||
                set.Measure = dtSource.Rows[i][6].ToString().Trim();
 | 
						||
                imports.Add(set);
 | 
						||
            }
 | 
						||
            List<T_SK_CHECK_CONTENTS> addSets = new List<T_SK_CHECK_CONTENTS>();
 | 
						||
            List<T_SK_CHECK_QUESTION> addQues = new List<T_SK_CHECK_QUESTION>();
 | 
						||
            if (imports.Any())
 | 
						||
            {
 | 
						||
                var departLevelGroups = imports.GroupBy(t => new { t.CheckContent }).ToList();
 | 
						||
                if (departLevelGroups.Any())
 | 
						||
                {
 | 
						||
                    foreach (var item in departLevelGroups)
 | 
						||
                    {
 | 
						||
                        var type = checkContents.FirstOrDefault(t => t.CHECKCONTENT == item.Key.CheckContent);
 | 
						||
                        if (type == null)
 | 
						||
                        {
 | 
						||
                            T_SK_CHECK_CONTENTS set = new T_SK_CHECK_CONTENTS();
 | 
						||
                            set.ORG_ID = orgId;
 | 
						||
                            set.ID = Guid.NewGuid();
 | 
						||
                            set.MineType = SKProductionUnit.Minelast;
 | 
						||
                            set.CHECKCONTENT = item.Key.CheckContent;
 | 
						||
                            addSets.Add(set);
 | 
						||
                            var contents = imports.Where(t => t.CheckContent == item.Key.CheckContent).ToList();
 | 
						||
                            if (contents.Any())
 | 
						||
                            {
 | 
						||
                                foreach (var item2 in contents)
 | 
						||
                                {
 | 
						||
                                    T_SK_CHECK_QUESTION qu = new T_SK_CHECK_QUESTION();
 | 
						||
                                    qu.ORG_ID = orgId;
 | 
						||
                                    qu.ID = Guid.NewGuid();
 | 
						||
                                    qu.CHECK_CONTENTS_ID = set.ID;
 | 
						||
                                    qu.DESCREPTION = item2.HiddenScript;
 | 
						||
                                    qu.QUESTION_LEVEL = SKHiddenLevel.General;
 | 
						||
                                    qu.DEMAND = item2.Measure;
 | 
						||
                                    addQues.Add(qu);
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                        else
 | 
						||
                        {
 | 
						||
                            var contents = imports.Where(t => t.CheckContent == item.Key.CheckContent).ToList();
 | 
						||
                            if (contents.Any())
 | 
						||
                            {
 | 
						||
                                foreach (var item2 in contents)
 | 
						||
                                {
 | 
						||
                                    var que = checkQuestions.FirstOrDefault(t => t.CHECK_CONTENTS_ID == type.ID && t.DESCREPTION == item2.HiddenScript);
 | 
						||
                                    if (que == null)
 | 
						||
                                    {
 | 
						||
                                        T_SK_CHECK_QUESTION qu = new T_SK_CHECK_QUESTION();
 | 
						||
                                        qu.ORG_ID = orgId;
 | 
						||
                                        qu.ID = Guid.NewGuid();
 | 
						||
                                        qu.CHECK_CONTENTS_ID = type.ID;
 | 
						||
                                        qu.DESCREPTION = item2.HiddenScript;
 | 
						||
                                        qu.QUESTION_LEVEL = SKHiddenLevel.General;
 | 
						||
                                        qu.DEMAND = item2.Measure;
 | 
						||
                                        addQues.Add(qu);
 | 
						||
                                    }
 | 
						||
                                }
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                }
 | 
						||
            }
 | 
						||
            if (!string.IsNullOrEmpty(Msg))
 | 
						||
            {
 | 
						||
                throw new Exception(Msg);
 | 
						||
            }
 | 
						||
            else
 | 
						||
            {
 | 
						||
                UnifiedCommit(() =>
 | 
						||
                {
 | 
						||
                    if (addSets != null && addSets.Any())
 | 
						||
                        BantchAddEntityNoCommit(addSets);
 | 
						||
                    if (addQues != null && addQues.Any())
 | 
						||
                        BantchAddEntityNoCommit(addQues);
 | 
						||
                });
 | 
						||
                Msg = "导入成功!";
 | 
						||
            }
 | 
						||
            return true;
 | 
						||
        }
 | 
						||
    }
 | 
						||
}
 |