using APT.BaseData.Domain.ApiModel; using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.Enums; using APT.BaseData.Domain.Enums.PF; using APT.BaseData.Domain.IServices.OP; using APT.BaseData.Services.DomainServices; using APT.BaseData.Services.Services.FM; using APT.BaseData.Services.Services.OP; using APT.Infrastructure.Api; using APT.Infrastructure.Core; using APT.Migrations; using APT.MS.Domain.Entities.FO; using APT.MS.Domain.Entities.HM; using APT.MS.Domain.Entities.LR; using APT.MS.Domain.Entities.SE; using APT.MS.Domain.Entities.SK; using APT.MS.Domain.Enums; using APT.MS.Domain.Enums.SK; using APT.SK.WebApi.Controllers.Api; using APT.Utility; using Castle.Core.Internal; using Microsoft.AspNetCore.Mvc; using Microsoft.Data.SqlClient; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Internal; using MySqlX.XDevAPI.Common; using NPOI.SS.Formula.Functions; using NPOI.SS.Formula.PTG; using Org.BouncyCastle.Crypto; using System; using System.Collections.Generic; using System.Data; using System.DirectoryServices.ActiveDirectory; using System.IO; using System.Linq; using System.Linq.Expressions; using System.Security.Policy; namespace APT.SK.WebApi.Controllers { /// /// 基础库 /// [Route("api/SK/SKBasicLibrary")] public partial class BasicLibraryController : AuthorizeApiController { IOPTenantDBConnService OPTenantDBConnService { get; set; } public BasicLibraryController(IOPTenantDBConnService opTenantDBConnService) { OPTenantDBConnService = opTenantDBConnService; } /// /// 保存 /// /// /// [HttpPost, Route("FullUpdate")] public JsonActionResult FullUpdate([FromBody] T_SK_BASIC_LIBRARY entity) { return SafeExecute(() => { var details = entity.Nav_Details; entity.Nav_Details = null; if (details != null && details.Any()) { details = details.Where(t => !t.IS_DELETED).ToList(); } var deleteBasDetailIds = this.GetEntities(t =>t.BASIC_LIBRARY_ID == entity.ID, new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); var deleteBasConttentIds = this.GetEntities(t => deleteBasDetailIds.Contains(t.BASIC_LIBRARY_DETAIL_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); var deleteBasBasicIds = this.GetEntities(t => deleteBasConttentIds.Contains(t.BASIC_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); var deleteBasHiddenIds=this.GetEntities< T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN >(t=> deleteBasConttentIds.Contains(t.BASIC_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); List contentList = new List(); List hiddenList = new List(); List basicList = new List(); var numIsNull = details.FirstOrDefault(t => t.NUM == null || t.NUM == 0); if (numIsNull != null) { throw new Exception("管控措施的顺序必须填写"); } if (details != null && details.Any()) { foreach (var item in details) { if (item.Nav_DetailContents != null && item.Nav_DetailContents.Any()) { foreach (var item2 in item.Nav_DetailContents) { if (item2.Nav_DetailHiddens != null && item2.Nav_DetailHiddens.Any()) { foreach (var item3 in item2.Nav_DetailHiddens) { item3.ORG_ID = entity.ORG_ID; item3.BASIC_LIBRARY_DETAIL_CONTENT_ID = item2.ID; item3.NUM = (item3.NUM == 0 || item3.NUM == null) ? item3.ROW_NO : item3.NUM; hiddenList.Add(item3); } } if (item2.Nav_DetailBasics != null && item2.Nav_DetailBasics.Any()) { foreach (var item3 in item2.Nav_DetailBasics) { item3.ORG_ID = entity.ORG_ID; item3.BASIC_LIBRARY_DETAIL_CONTENT_ID = item2.ID; basicList.Add(item3); } } item2.ORG_ID = entity.ORG_ID; item2.BASIC_LIBRARY_DETAIL_ID = item.ID; item2.Nav_DetailHiddens = null; item2.Nav_DetailBasics = null; item2.NUM = (item2.NUM == 0 || item2.NUM == null) ? item2.ROW_NO : item2.NUM; contentList.Add(item2); } } item.ORG_ID = entity.ORG_ID; item.BASIC_LIBRARY_ID = entity.ID; item.Nav_DetailContents = null; item.NUM = (item.NUM == 0 || item.NUM == null) ? item.ROW_NO : item.NUM; } } List libraryIds = new List(); List libraryDepartIds = new List(); List libraryPostIds = new List(); List libraryPostDetailIds = new List(); List detailIds = new List(); List contentIds = new List(); List departIds = new List(); List postIds = new List(); List hiddenIds = new List(); List basicIds = new List(); T_SK_ENTERPRISE_LIBRARY enterpriseLib = null; List libraryDetailList = new List(); List libraryContentList = new List(); List libraryHiddenList = new List(); List libraryBasicList = new List(); //同步企业库 if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify")) { var library = this.GetEntity(t => t.MineType == entity.MineType && t.AREA_ID == entity.AREA_ID && t.TYPE_ID == entity.TYPE_ID && t.RISK_NAME == entity.RISK_NAME && t.RISK_DESCRIPTION == entity.RISK_DESCRIPTION); if (library != null) { libraryIds.Add(library.ID); libraryPostIds = this.GetEntities(t => t.ENTERPRISE_LIBRARY_ID == library.ID, new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); libraryPostDetailIds = this.GetEntities(t => libraryPostIds.Contains(t.ENTERPRISE_LIBRARY_POST_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); libraryDepartIds = this.GetEntities(t => t.ENTERPRISE_LIBRARY_ID == library.ID, new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); detailIds = this.GetEntities(t => t.ENTERPRISE_LIBRARY_ID == library.ID, new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); contentIds = this.GetEntities(t => detailIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); hiddenIds = this.GetEntities(t => contentIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); basicIds = this.GetEntities(t => contentIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); departIds = this.GetEntities(t => contentIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); postIds = this.GetEntities(t => departIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); } enterpriseLib = new T_SK_ENTERPRISE_LIBRARY(); enterpriseLib.ID = entity.ID; enterpriseLib.ORG_ID = entity.ORG_ID; enterpriseLib.ENABLE_STATUS = entity.ENABLE_STATUS; enterpriseLib.MineType = entity.MineType; enterpriseLib.MINE_NAME = entity.MINE_NAME; enterpriseLib.AREA_ID = entity.AREA_ID; enterpriseLib.AREA_NAME = entity.AREA_NAME; enterpriseLib.RISK_NAME = entity.RISK_NAME; enterpriseLib.RISK_DESCRIPTION = entity.RISK_DESCRIPTION; enterpriseLib.TYPE_ID = entity.TYPE_ID; enterpriseLib.TYPE_NAME = entity.TYPE_NAME; enterpriseLib.EVALUATE_L = entity.EVALUATE_L; enterpriseLib.EVALUATE_E = entity.EVALUATE_E; enterpriseLib.EVALUATE_C = entity.EVALUATE_C; enterpriseLib.SCOREL_ID = entity.SCOREL_ID; enterpriseLib.SCOREE_ID = entity.SCOREE_ID; enterpriseLib.SCOREC_ID = entity.SCOREC_ID; enterpriseLib.EVALUATE_SCORE = entity.EVALUATE_SCORE; enterpriseLib.EVALUATE_LEVEL = entity.EVALUATE_LEVEL; enterpriseLib.DEPARTMENT_TYPE = entity.DEPARTMENT_TYPE; enterpriseLib.NUM = entity.NUM; if (details != null && details.Any()) { foreach (var item in details) { T_SK_ENTERPRISE_LIBRARY_DETAIL enterDetail = new T_SK_ENTERPRISE_LIBRARY_DETAIL(); enterDetail.ORG_ID = item.ORG_ID; enterDetail.ID = item.ID; enterDetail.ENTERPRISE_LIBRARY_ID = item.BASIC_LIBRARY_ID; enterDetail.MEASURES_NAME = item.MEASURES_NAME; enterDetail.NUM = item.NUM; enterDetail.EMERGENCY = item.EMERGENCY; libraryDetailList.Add(enterDetail); } } if (contentList != null && contentList.Any()) { foreach (var item in contentList) { T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT enterDetail = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT(); enterDetail.ORG_ID = item.ORG_ID; enterDetail.ID = item.ID; enterDetail.ENTERPRISE_LIBRARY_DETAIL_ID = item.BASIC_LIBRARY_DETAIL_ID; enterDetail.CHECK_CONTENT = item.CHECK_CONTENT; enterDetail.NUM = item.NUM; enterDetail.CHECK_CONTENTS_ID = item.CHECK_CONTENTS_ID; enterDetail.CHECK_BASIC = item.CHECK_BASIC; enterDetail.CHECK_STANDARD = item.CHECK_STANDARD; enterDetail.CHECK_CONTENTS_ID = item.CHECK_CONTENTS_ID; enterDetail.CHECK_BASIC = item.CHECK_BASIC; libraryContentList.Add(enterDetail); } } if (basicList != null && basicList.Any()) { foreach (var item in basicList) { T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_BASIC enterDetail = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_BASIC(); enterDetail.ORG_ID = item.ORG_ID; enterDetail.ID = item.ID; enterDetail.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = item.BASIC_LIBRARY_DETAIL_CONTENT_ID; enterDetail.LAW_ID = item.LAW_ID; libraryBasicList.Add(enterDetail); } } if (hiddenList != null && hiddenList.Any()) { foreach (var item in hiddenList) { T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN enterDetail = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN(); enterDetail.ORG_ID = item.ORG_ID; enterDetail.ID = item.ID; enterDetail.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = item.BASIC_LIBRARY_DETAIL_CONTENT_ID; enterDetail.RECTIFICATION_MEASURES = item.RECTIFICATION_MEASURES; enterDetail.NUM = item.NUM; enterDetail.CHECK_QUESTION_ID = item.CHECK_QUESTION_ID; enterDetail.HIDDEN_DESCRIPTION = item.HIDDEN_DESCRIPTION; enterDetail.HIDDEN_LEVEL = item.HIDDEN_LEVEL; libraryHiddenList.Add(enterDetail); } } } this.UnifiedCommit(() => { if (deleteBasBasicIds != null && deleteBasBasicIds.Any()) this.BantchDeleteEntityNoCommit(deleteBasBasicIds); if (deleteBasHiddenIds != null && deleteBasHiddenIds.Any()) this.BantchDeleteEntityNoCommit(deleteBasHiddenIds); if (deleteBasConttentIds != null && deleteBasConttentIds.Any()) this.BantchDeleteEntityNoCommit(deleteBasConttentIds); if (deleteBasDetailIds != null && deleteBasDetailIds.Any()) this.BantchDeleteEntityNoCommit(deleteBasDetailIds); if (entity != null) UpdateEntityNoCommit(entity); if (details != null && details.Any()) BantchSaveEntityNoCommit(details); if (contentList != null && contentList.Any()) BantchSaveEntityNoCommit(contentList); if (hiddenList != null && hiddenList.Any()) BantchSaveEntityNoCommit(hiddenList); if (basicList != null && basicList.Any()) BantchSaveEntityNoCommit(basicList); if (hiddenIds != null && hiddenIds.Any()) this.BantchDeleteEntityNoCommit(hiddenIds); if (postIds != null && postIds.Any()) this.BantchDeleteEntityNoCommit(postIds); if (departIds != null && departIds.Any()) this.BantchDeleteEntityNoCommit(departIds); if (basicIds != null && basicIds.Any()) this.BantchDeleteEntityNoCommit(basicIds); if (contentIds != null && contentIds.Any()) this.BantchDeleteEntityNoCommit(contentIds); if (detailIds != null && detailIds.Any()) this.BantchDeleteEntityNoCommit(detailIds); if (libraryPostDetailIds != null && libraryPostDetailIds.Any()) this.BantchDeleteEntityNoCommit(libraryPostDetailIds); if (libraryPostIds != null && libraryPostIds.Any()) this.BantchDeleteEntityNoCommit(libraryPostIds); if (libraryDepartIds != null && libraryDepartIds.Any()) this.BantchDeleteEntityNoCommit(libraryDepartIds); if (libraryIds != null && libraryIds.Any()) this.BantchDeleteEntityNoCommit(libraryIds); if (enterpriseLib != null) UpdateEntityNoCommit(enterpriseLib); if (libraryDetailList != null && libraryDetailList.Any()) BantchSaveEntityNoCommit(libraryDetailList); if (libraryContentList != null && libraryContentList.Any()) BantchSaveEntityNoCommit(libraryContentList); if (libraryHiddenList != null && libraryHiddenList.Any()) BantchSaveEntityNoCommit(libraryHiddenList); if (libraryBasicList != null && libraryBasicList.Any()) BantchSaveEntityNoCommit(libraryBasicList); }); return true; }); } /// /// 保存 /// /// /// [HttpPost, Route("FullUpdateNew")] public JsonActionResult FullUpdateNew([FromBody] T_SK_BASIC_LIBRARY entity) { return SafeExecute(() => { string strConn = OPTenantDBConnService.GetConnByORGID(Guid.Parse("00300000-0000-0000-0000-000000000000")); string dbName = "mh_jy_head"; // 2. 传入构造函数 using var db = new CrossDbContext(strConn); var details = entity.Nav_Details; entity.Nav_Details = null; if (details != null && details.Any()) { details = details.Where(t => !t.IS_DELETED).ToList(); } var deleteBasDetailIds = this.GetEntities(t => t.BASIC_LIBRARY_ID == entity.ID, new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); var deleteBasConttentIds = this.GetEntities(t => deleteBasDetailIds.Contains(t.BASIC_LIBRARY_DETAIL_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); var deleteBasBasicIds = this.GetEntities(t => deleteBasConttentIds.Contains(t.BASIC_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); var deleteBasHiddenIds = this.GetEntities(t => deleteBasConttentIds.Contains(t.BASIC_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); List contentList = new List(); List hiddenList = new List(); List basicList = new List(); var numIsNull = details.FirstOrDefault(t => t.NUM == null || t.NUM == 0); if (numIsNull != null) { throw new Exception("管控措施的顺序必须填写"); } T_FM_USER_PRODUCTION_UNIT_SET proUnitNew = null; //查生产单元表 var proUnit = this.GetEntity(t =>t.ID == entity.PRODUCTION_UNIT_ID && t.JT_SYNC); var jtProUnit = db.GetJTProUnits(dbName).FirstOrDefault(t => t.ID == entity.PRODUCTION_UNIT_ID); if (proUnit == null) { if (jtProUnit != null) { //写入 proUnitNew = new T_FM_USER_PRODUCTION_UNIT_SET(); proUnitNew.ORG_ID = entity.ORG_ID; proUnitNew.ID = entity.PRODUCTION_UNIT_ID.Value; proUnitNew.NAME = jtProUnit?.NAME; proUnitNew.CODE = jtProUnit?.CODE; proUnitNew.JT_SYNC = true; } } else { //更新 proUnitNew = proUnit; proUnitNew.NAME = jtProUnit?.NAME; proUnitNew.CODE = jtProUnit?.CODE; } T_SK_RISK_TYPE riskTypeNew = null; //查风险类别 var riskType = this.GetEntity(t => t.ID == entity.TYPE_ID && t.JT_SYNC); var jtRiskType = db.GetJTRiskTypes(dbName).FirstOrDefault(t => t.ID == entity.TYPE_ID); if (riskType == null) { if (jtRiskType != null) { riskTypeNew = new T_SK_RISK_TYPE(); riskTypeNew.ORG_ID = entity.ORG_ID; riskTypeNew.ID = entity.TYPE_ID.Value; riskTypeNew.NAME = jtRiskType?.NAME; riskTypeNew.JT_SYNC = true; riskTypeNew.PRODUCTION_UNIT_ID = entity.PRODUCTION_UNIT_ID; } } else { //更新 riskTypeNew = riskType; riskTypeNew.NAME = jtRiskType?.NAME; riskTypeNew.PRODUCTION_UNIT_ID = entity.PRODUCTION_UNIT_ID; } T_SK_SCOREL libLNew = null; //查LEC var libL = this.GetEntity(t => t.ID == entity.SCOREL_ID && t.JT_SYNC); var jtlibL = db.GetJTLibLs(dbName).FirstOrDefault(t => t.ID == entity.SCOREL_ID); if (libL == null) { if (jtlibL != null) { //写入 libLNew = new T_SK_SCOREL(); libLNew.ORG_ID = entity.ORG_ID; libLNew.ID = entity.SCOREL_ID.Value; libLNew.NAME = jtlibL?.NAME; libLNew.CODE = jtlibL?.CODE; libLNew.JT_SYNC = true; libLNew.SCORE = jtlibL == null ? 0 : jtlibL.SCORE; } } else { //更新 libLNew = libL; libLNew.NAME = jtlibL?.NAME; libLNew.CODE = jtlibL?.CODE; libLNew.SCORE = jtlibL == null ? 0 : jtlibL.SCORE; } T_SK_SCOREE libENew = null; //查生产单元表 var libE = this.GetEntity(t => t.ID == entity.SCOREE_ID && t.JT_SYNC); var jtlibE = db.GetJTLibEs(dbName).FirstOrDefault(t => t.ID == entity.SCOREE_ID); if (libE == null) { if (libE != null) { //写入 libENew = new T_SK_SCOREE(); libENew.ORG_ID = entity.ORG_ID; libENew.ID = entity.SCOREE_ID.Value; libENew.NAME = jtlibE?.NAME; libENew.CODE = jtlibE?.CODE; libENew.SCORE = jtlibE == null ? 0 : jtlibE.SCORE; libENew.JT_SYNC = true; } } else { //更新 libENew = libE; libENew.NAME = jtlibE?.NAME; libENew.CODE = jtlibE?.CODE; libENew.SCORE = jtlibE == null ? 0 : jtlibE.SCORE; } T_SK_SCOREC libCNew = null; //查生产单元表 var libC = this.GetEntity(t => t.ID == entity.SCOREC_ID && t.JT_SYNC); var jtlibC = db.GetJTLibCs(dbName).FirstOrDefault(t => t.ID == entity.SCOREC_ID); if (libC == null) { if (jtlibC != null) { //写入 libCNew = new T_SK_SCOREC(); libCNew.ORG_ID = entity.ORG_ID; libCNew.ID = entity.SCOREC_ID.Value; libCNew.NAME = jtlibC?.NAME; libCNew.CODE = jtlibC?.CODE; libCNew.JT_SYNC = true; libCNew.SCORE = jtlibC == null ? 0 : jtlibC.SCORE; } } else { //更新 libCNew = libC; libCNew.NAME = jtlibC?.NAME; libCNew.CODE = jtlibC?.CODE; libCNew.SCORE = jtlibC == null ? 0 : jtlibC.SCORE; } if (details != null && details.Any()) { foreach (var item in details) { if (item.Nav_DetailContents != null && item.Nav_DetailContents.Any()) { foreach (var item2 in item.Nav_DetailContents) { if (item2.Nav_DetailHiddens != null && item2.Nav_DetailHiddens.Any()) { foreach (var item3 in item2.Nav_DetailHiddens) { item3.ORG_ID = entity.ORG_ID; item3.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID; item3.BASIC_LIBRARY_DETAIL_CONTENT_ID = item2.ID; //item3.Nav_Question = null; item3.NUM = (item3.NUM == 0 || item3.NUM == null) ? item3.ROW_NO : item3.NUM; hiddenList.Add(item3); } } if (item2.Nav_DetailBasics != null && item2.Nav_DetailBasics.Any()) { foreach (var item3 in item2.Nav_DetailBasics) { item3.ORG_ID = entity.ORG_ID; item3.BASIC_LIBRARY_DETAIL_CONTENT_ID = item2.ID; item3.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID; //item3.Nav_Law = null; basicList.Add(item3); } } item2.ORG_ID = entity.ORG_ID; item2.BASIC_LIBRARY_DETAIL_ID = item.ID; //item2.Nav_Contents = null; item2.Nav_DetailHiddens = null; item2.Nav_DetailBasics = null; item2.NUM = (item2.NUM == 0 || item2.NUM == null) ? item2.ROW_NO : item2.NUM; contentList.Add(item2); } } item.ORG_ID = entity.ORG_ID; item.BASIC_LIBRARY_ID = entity.ID; item.Nav_DetailContents = null; item.NUM = (item.NUM == 0 || item.NUM == null) ? item.ROW_NO : item.NUM; } } //查检查内容 List updateCheckConts = new List(); var checkConts = this.GetEntities(t => true, new BaseFilter(entity.ORG_ID)); var jtCheckConts = db.GetJTCons(dbName).ToList(); if (contentList != null && contentList.Any()) { var conIds = contentList.Where(m=>m.CHECK_CONTENTS_ID!=null).Select(t => t.CHECK_CONTENTS_ID).ToList(); //存在,更新 var conExsists = checkConts.Where(t=> conIds.Contains(t.ID) && t.JT_SYNC).ToList(); if (conExsists != null && conExsists.Any()) { foreach (var conExsist in conExsists) { //检查内容 var first = jtCheckConts.FirstOrDefault(t => t.ID == conExsist.ID); if (first != null) { conExsist.ID = first.ID; conExsist.ORG_ID = entity.ORG_ID; conExsist.PRODUCTION_UNIT_ID = entity.PRODUCTION_UNIT_ID; conExsist.Nav_ListCheckQuestion = null; conExsist.Nav_ContentsBasics = null; conExsist.CHECKCONTENT = first.CHECKCONTENT; conExsist.CHECK_STANDARD = first.CHECK_STANDARD; conExsist.JT_SYNC = true; updateCheckConts.Add(conExsist); } } } //不存在,写入 var conIdNews = conExsists.Select(t => t.ID).ToList(); var conExsistNews = conIds.Where(t =>t!=null && !conIdNews.Contains(t.Value)).ToList(); if (conExsistNews != null && conExsistNews.Any()) { foreach (var id in conExsistNews) { //检查内容 var first = jtCheckConts.FirstOrDefault(t => t.ID == id); if (first != null) { T_SK_CHECK_CONTENTS conExsist = new T_SK_CHECK_CONTENTS(); conExsist.ID = id.Value; conExsist.ORG_ID = entity.ORG_ID; conExsist.PRODUCTION_UNIT_ID = entity.PRODUCTION_UNIT_ID; conExsist.Nav_ListCheckQuestion = null; conExsist.Nav_ContentsBasics = null; conExsist.CHECKCONTENT = first?.CHECKCONTENT; conExsist.CHECK_STANDARD = first?.CHECK_STANDARD; conExsist.JT_SYNC = true; updateCheckConts.Add(conExsist); } } } } //查检查依据(法律法规) List updateCheckLaws = new List(); List updateCheckLawTypes = new List(); List updateCheckBas = new List(); var jtcheckContLawTypes = db.GetJTLawTypes(dbName).ToList(); var checkContLawTypes = this.GetEntities(t => true, new BaseFilter(entity.ORG_ID)); var checkContLaws = this.GetEntities(t => true, new BaseFilter(entity.ORG_ID)); var jtcheckContLaws = db.GetJTLaws(dbName).ToList(); var checkContBas = this.GetEntities(t => true, new BaseFilter(entity.ORG_ID)); var jtcheckContBas = db.GetJTBas(dbName).ToList(); if (basicList != null && basicList.Any()) { var conIds = basicList.Select(t => t.LAW_ID).Distinct().ToList(); //存在,更新 var conExsists = checkContLaws.Where(t => conIds.Contains(t.ID) && t.JT_SYNC).ToList(); if (conExsists != null && conExsists.Any()) { foreach (var conExsist in conExsists) { //法律法规 var first = jtcheckContLaws.FirstOrDefault(t => t.ID == conExsist.ID); if (first != null) { var firstType = checkContLawTypes.FirstOrDefault(t => t.ID == first.TYPE_ID && t.JT_SYNC); if (firstType == null) { var jtFirstType = jtcheckContLawTypes.FirstOrDefault(t => t.ID == first.TYPE_ID); if (jtFirstType != null) { T_LR_LAW_TYPE lawType = new T_LR_LAW_TYPE(); lawType.ORG_ID = entity.ORG_ID; lawType.ID = jtFirstType.ID; lawType.NAME = jtFirstType.NAME; lawType.JT_SYNC = true; updateCheckLawTypes.Add(lawType); conExsist.ID = first.ID; conExsist.ORG_ID = entity.ORG_ID; conExsist.CODE = first?.CODE; conExsist.NAME = first?.NAME; conExsist.VERSION_NUM = first?.VERSION_NUM; conExsist.LAW_STATUS = first == null ? BSLawStatusEnum.现行 : first.LAW_STATUS; conExsist.UPDATE_TIME = first == null ? DateTime.Now : first.UPDATE_TIME; conExsist.EXECUTE_TIME = first == null ? DateTime.Now : first.EXECUTE_TIME; conExsist.USER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value; conExsist.TYPE_ID = first.TYPE_ID; conExsist.JT_SYNC = true; updateCheckLaws.Add(conExsist); } } else { conExsist.ID = first.ID; conExsist.ORG_ID = entity.ORG_ID; conExsist.CODE = first?.CODE; conExsist.NAME = first?.NAME; conExsist.VERSION_NUM = first?.VERSION_NUM; conExsist.LAW_STATUS = first == null ? BSLawStatusEnum.现行 : first.LAW_STATUS; conExsist.UPDATE_TIME = first == null ? DateTime.Now : first.UPDATE_TIME; conExsist.EXECUTE_TIME = first == null ? DateTime.Now : first.EXECUTE_TIME; conExsist.USER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value; conExsist.TYPE_ID = first.TYPE_ID; conExsist.JT_SYNC = true; updateCheckLaws.Add(conExsist); } } } } //不存在,写入 var conIdNews = conExsists.Select(t => t.ID).ToList(); var conExsistNews = conIds.Where(t => t != null && !conIdNews.Contains(t.Value)).ToList(); if (conExsistNews != null && conExsistNews.Any()) { foreach (var id in conExsistNews) { //检查依据(法律法规) var first = jtcheckContLaws.FirstOrDefault(t => t.ID == id); if (first != null) { var firstType = checkContLawTypes.FirstOrDefault(t => t.ID == first.TYPE_ID); if (firstType == null) { var jtFirstType = jtcheckContLawTypes.FirstOrDefault(t => t.ID == first.TYPE_ID); if (jtFirstType != null) { T_LR_LAW_TYPE lawType = new T_LR_LAW_TYPE(); lawType.ORG_ID = entity.ORG_ID; lawType.ID = jtFirstType.ID; lawType.NAME = jtFirstType.NAME; lawType.JT_SYNC = true; updateCheckLawTypes.Add(lawType); T_LR_LAW conExsist = new T_LR_LAW(); conExsist.ID = id.Value; conExsist.ORG_ID = entity.ORG_ID; conExsist.CODE = first?.CODE; conExsist.NAME = first?.NAME; conExsist.VERSION_NUM = first?.VERSION_NUM; conExsist.LAW_STATUS = first == null ? BSLawStatusEnum.现行 : first.LAW_STATUS; conExsist.UPDATE_TIME = first == null ? DateTime.Now : first.UPDATE_TIME; conExsist.EXECUTE_TIME = first == null ? DateTime.Now : first.EXECUTE_TIME; conExsist.USER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value; conExsist.TYPE_ID = jtFirstType.ID; conExsist.JT_SYNC = true; updateCheckLaws.Add(conExsist); } } else { T_LR_LAW conExsist = new T_LR_LAW(); conExsist.ID = id.Value; conExsist.ORG_ID = entity.ORG_ID; conExsist.CODE = first?.CODE; conExsist.NAME = first?.NAME; conExsist.VERSION_NUM = first?.VERSION_NUM; conExsist.LAW_STATUS = first == null ? BSLawStatusEnum.现行 : first.LAW_STATUS; conExsist.UPDATE_TIME = first == null ? DateTime.Now : first.UPDATE_TIME; conExsist.EXECUTE_TIME = first == null ? DateTime.Now : first.EXECUTE_TIME; conExsist.USER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value; conExsist.TYPE_ID = first.TYPE_ID; conExsist.JT_SYNC = true; updateCheckLaws.Add(conExsist); } } } } //检查内容子表保存 var conBasics = basicList.GroupBy(t => new { t.CHECK_CONTENTS_ID, t.LAW_ID }).ToList(); if (conBasics != null && conBasics.Any()) { foreach (var item in conBasics) { var first = checkContBas.FirstOrDefault(t => t.CHECK_CONTENTS_ID == item.Key.CHECK_CONTENTS_ID && t.LAW_ID == item.Key.LAW_ID && t.JT_SYNC); if (first == null) { //写入 var jtFirstType = jtcheckContBas.FirstOrDefault(t => t.CHECK_CONTENTS_ID == item.Key.CHECK_CONTENTS_ID && t.LAW_ID == item.Key.LAW_ID); if (jtFirstType != null) { T_SK_CHECK_CONTENTS_BASIC conBasic = new T_SK_CHECK_CONTENTS_BASIC(); conBasic.CHECK_CONTENTS_ID = item.Key.CHECK_CONTENTS_ID; conBasic.LAW_ID = item.Key.LAW_ID; conBasic.ORG_ID = entity.ORG_ID; conBasic.ID = jtFirstType.ID; conBasic.JT_SYNC = true; updateCheckBas.Add(conBasic); } } else { //更新 T_SK_CHECK_CONTENTS_BASIC conBasic = new T_SK_CHECK_CONTENTS_BASIC(); conBasic.CHECK_CONTENTS_ID = item.Key.CHECK_CONTENTS_ID; conBasic.LAW_ID = item.Key.LAW_ID; conBasic.ORG_ID = entity.ORG_ID; conBasic.ID = first.ID; conBasic.JT_SYNC = true; updateCheckBas.Add(conBasic); } } } } //查隐患描述 List updateCheckQues = new List(); var checkContHids = this.GetEntities(t => true, new BaseFilter(entity.ORG_ID)); var jtCheckContHids = db.GetJTQues(dbName).ToList(); if (hiddenList != null && hiddenList.Any()) { var conIds = hiddenList.Where(m => m.CHECK_QUESTION_ID != null).Select(t => t.CHECK_QUESTION_ID).Distinct().ToList(); //存在,更新 var conExsists = checkContHids.Where(t => conIds.Contains(t.ID) && t.JT_SYNC).ToList(); if (conExsists != null && conExsists.Any()) { foreach (var conExsist in conExsists) { //隐患描述 var first = jtCheckContHids.FirstOrDefault(t => t.ID == conExsist.ID); if (first != null) { conExsist.ID = first.ID; conExsist.ORG_ID = entity.ORG_ID; conExsist.QUESTION_LEVEL = first?.QUESTION_LEVEL; conExsist.DEMAND = first?.DEMAND; conExsist.DESCREPTION = first?.DESCREPTION; conExsist.CHECK_CONTENTS_ID = first?.CHECK_CONTENTS_ID; conExsist.JT_SYNC = true; updateCheckQues.Add(conExsist); } } } //不存在,写入 var conIdNews = conExsists.Select(t => t.ID).ToList(); var conExsistNews = conIds.Where(t =>t!=null&& !conIdNews.Contains(t.Value)).ToList(); if (conExsistNews != null && conExsistNews.Any()) { foreach (var id in conExsistNews) { //隐患描述 var first = jtCheckContHids.FirstOrDefault(t => t.ID == id); if (first != null) { T_SK_CHECK_QUESTION conExsist = new T_SK_CHECK_QUESTION(); conExsist.ID = id.Value; conExsist.ORG_ID = entity.ORG_ID; conExsist.QUESTION_LEVEL = first?.QUESTION_LEVEL; conExsist.DEMAND = first?.DEMAND; conExsist.DESCREPTION = first?.DESCREPTION; conExsist.CHECK_CONTENTS_ID = first?.CHECK_CONTENTS_ID; conExsist.JT_SYNC = true; updateCheckQues.Add(conExsist); } } } } List libraryIds = new List(); List libraryDepartIds = new List(); List libraryPostIds = new List(); List libraryPostDetailIds = new List(); List detailIds = new List(); List contentIds = new List(); List departIds = new List(); List postIds = new List(); List hiddenIds = new List(); List basicIds = new List(); T_SK_ENTERPRISE_LIBRARY enterpriseLib = null; List libraryDetailList = new List(); List libraryContentList = new List(); List libraryHiddenList = new List(); List libraryBasicList = new List(); //同步企业库 if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify")) { //&& t.PRODUCTION_UNIT_ID == entity.PRODUCTION_UNIT_ID && t.TYPE_ID == entity.TYPE_ID && t.RISK_NAME == entity.RISK_NAME && t.RISK_DESCRIPTION == entity.RISK_DESCRIPTION var library = this.GetEntity(t => t.ID == entity.ID); if (library != null) { //throw new Exception("企业库已经有重复数据"); libraryIds.Add(library.ID); libraryPostIds = this.GetEntities(t => t.ENTERPRISE_LIBRARY_ID == library.ID, new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); libraryPostDetailIds = this.GetEntities(t => libraryPostIds.Contains(t.ENTERPRISE_LIBRARY_POST_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); libraryDepartIds = this.GetEntities(t => t.ENTERPRISE_LIBRARY_ID == library.ID, new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); detailIds = this.GetEntities(t => t.ENTERPRISE_LIBRARY_ID == library.ID, new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); contentIds = this.GetEntities(t => detailIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); hiddenIds = this.GetEntities(t => contentIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); basicIds = this.GetEntities(t => contentIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); departIds = this.GetEntities(t => contentIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); postIds = this.GetEntities(t => departIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList(); } enterpriseLib = new T_SK_ENTERPRISE_LIBRARY(); enterpriseLib.ID = entity.ID; enterpriseLib.ORG_ID = entity.ORG_ID; enterpriseLib.ENABLE_STATUS = entity.ENABLE_STATUS; enterpriseLib.PRODUCTION_UNIT_ID = entity.PRODUCTION_UNIT_ID; enterpriseLib.MINE_NAME = entity.MINE_NAME; enterpriseLib.AREA_ID = entity.AREA_ID; enterpriseLib.AREA_NAME = entity.AREA_NAME; enterpriseLib.RISK_NAME = entity.RISK_NAME; enterpriseLib.RISK_DESCRIPTION = entity.RISK_DESCRIPTION; enterpriseLib.TYPE_ID = entity.TYPE_ID; enterpriseLib.TYPE_NAME = entity.TYPE_NAME; enterpriseLib.EVALUATE_L = entity.EVALUATE_L; enterpriseLib.EVALUATE_E = entity.EVALUATE_E; enterpriseLib.EVALUATE_C = entity.EVALUATE_C; enterpriseLib.SCOREL_ID = entity.SCOREL_ID; enterpriseLib.SCOREE_ID = entity.SCOREE_ID; enterpriseLib.SCOREC_ID = entity.SCOREC_ID; enterpriseLib.EVALUATE_SCORE = entity.EVALUATE_SCORE; enterpriseLib.EVALUATE_LEVEL = entity.EVALUATE_LEVEL; enterpriseLib.DEPARTMENT_TYPE = entity.DEPARTMENT_TYPE; enterpriseLib.NUM = entity.NUM; if (details != null && details.Any()) { foreach (var item in details) { T_SK_ENTERPRISE_LIBRARY_DETAIL enterDetail = new T_SK_ENTERPRISE_LIBRARY_DETAIL(); enterDetail.ORG_ID = item.ORG_ID; enterDetail.ID = item.ID; enterDetail.ENTERPRISE_LIBRARY_ID = item.BASIC_LIBRARY_ID; enterDetail.MEASURES_NAME = item.MEASURES_NAME; enterDetail.NUM = item.NUM; enterDetail.EMERGENCY = item.EMERGENCY; libraryDetailList.Add(enterDetail); } } if (contentList != null && contentList.Any()) { foreach (var item in contentList) { T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT enterDetail = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT(); enterDetail.ORG_ID = item.ORG_ID; enterDetail.ID = item.ID; enterDetail.ENTERPRISE_LIBRARY_DETAIL_ID = item.BASIC_LIBRARY_DETAIL_ID; enterDetail.CHECK_CONTENT = item.CHECK_CONTENT; enterDetail.NUM = item.NUM; enterDetail.CHECK_CONTENTS_ID = item.CHECK_CONTENTS_ID; enterDetail.CHECK_BASIC = item.CHECK_BASIC; enterDetail.CHECK_STANDARD = item.CHECK_STANDARD; enterDetail.CHECK_CONTENTS_ID = item.CHECK_CONTENTS_ID; enterDetail.CHECK_BASIC = item.CHECK_BASIC; libraryContentList.Add(enterDetail); } } if (basicList != null && basicList.Any()) { foreach (var item in basicList) { T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_BASIC enterDetail = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_BASIC(); enterDetail.ORG_ID = item.ORG_ID; enterDetail.ID = item.ID; enterDetail.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = item.BASIC_LIBRARY_DETAIL_CONTENT_ID; enterDetail.LAW_ID = item.LAW_ID; libraryBasicList.Add(enterDetail); } } if (hiddenList != null && hiddenList.Any()) { foreach (var item in hiddenList) { T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN enterDetail = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN(); enterDetail.ORG_ID = item.ORG_ID; enterDetail.ID = item.ID; enterDetail.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = item.BASIC_LIBRARY_DETAIL_CONTENT_ID; enterDetail.RECTIFICATION_MEASURES = item.RECTIFICATION_MEASURES; enterDetail.NUM = item.NUM; enterDetail.CHECK_QUESTION_ID = item.CHECK_QUESTION_ID; enterDetail.HIDDEN_DESCRIPTION = item.HIDDEN_DESCRIPTION; enterDetail.HIDDEN_LEVEL = item.HIDDEN_LEVEL; libraryHiddenList.Add(enterDetail); } } } this.UnifiedCommit(() => { if (proUnitNew != null) UpdateEntityNoCommit(proUnitNew); if (riskTypeNew != null) UpdateEntityNoCommit(riskTypeNew); if (libLNew != null) UpdateEntityNoCommit(libLNew); if (libENew != null) UpdateEntityNoCommit(libENew); if (libCNew != null) UpdateEntityNoCommit(libCNew); if (updateCheckLawTypes != null && updateCheckLawTypes.Any()) BantchSaveEntityNoCommit(updateCheckLawTypes); if (updateCheckLaws != null && updateCheckLaws.Any()) BantchSaveEntityNoCommit(updateCheckLaws); if (updateCheckConts != null && updateCheckConts.Any()) BantchSaveEntityNoCommit(updateCheckConts); if (updateCheckQues != null && updateCheckQues.Any()) BantchSaveEntityNoCommit(updateCheckQues); if (updateCheckBas != null && updateCheckBas.Any()) BantchSaveEntityNoCommit(updateCheckBas); if (deleteBasBasicIds != null && deleteBasBasicIds.Any()) this.BantchDeleteEntityNoCommit(deleteBasBasicIds); if (deleteBasHiddenIds != null && deleteBasHiddenIds.Any()) this.BantchDeleteEntityNoCommit(deleteBasHiddenIds); if (deleteBasConttentIds != null && deleteBasConttentIds.Any()) this.BantchDeleteEntityNoCommit(deleteBasConttentIds); if (deleteBasDetailIds != null && deleteBasDetailIds.Any()) this.BantchDeleteEntityNoCommit(deleteBasDetailIds); if (entity != null) UpdateEntityNoCommit(entity); if (details != null && details.Any()) BantchSaveEntityNoCommit(details); if (contentList != null && contentList.Any()) BantchSaveEntityNoCommit(contentList); if (hiddenList != null && hiddenList.Any()) BantchSaveEntityNoCommit(hiddenList); if (basicList != null && basicList.Any()) BantchSaveEntityNoCommit(basicList); if (hiddenIds != null && hiddenIds.Any()) this.BantchDeleteEntityNoCommit(hiddenIds); if (postIds != null && postIds.Any()) this.BantchDeleteEntityNoCommit(postIds); if (departIds != null && departIds.Any()) this.BantchDeleteEntityNoCommit(departIds); if (basicIds != null && basicIds.Any()) this.BantchDeleteEntityNoCommit(basicIds); if (contentIds != null && contentIds.Any()) this.BantchDeleteEntityNoCommit(contentIds); if (detailIds != null && detailIds.Any()) this.BantchDeleteEntityNoCommit(detailIds); if (libraryPostDetailIds != null && libraryPostDetailIds.Any()) this.BantchDeleteEntityNoCommit(libraryPostDetailIds); if (libraryPostIds != null && libraryPostIds.Any()) this.BantchDeleteEntityNoCommit(libraryPostIds); if (libraryDepartIds != null && libraryDepartIds.Any()) this.BantchDeleteEntityNoCommit(libraryDepartIds); if (libraryIds != null && libraryIds.Any()) this.BantchDeleteEntityNoCommit(libraryIds); if (enterpriseLib != null) UpdateEntityNoCommit(enterpriseLib); if (libraryDetailList != null && libraryDetailList.Any()) BantchSaveEntityNoCommit(libraryDetailList); if (libraryContentList != null && libraryContentList.Any()) BantchSaveEntityNoCommit(libraryContentList); if (libraryHiddenList != null && libraryHiddenList.Any()) BantchSaveEntityNoCommit(libraryHiddenList); if (libraryBasicList != null && libraryBasicList.Any()) BantchSaveEntityNoCommit(libraryBasicList); }); return true; }); } /// /// 排序分页查询数据 /// /// 分页过滤实体 /// [HttpPost, Route("SKOrderPaged")] public PagedActionResult SKOrderPaged([FromBody] KeywordPageFilter pageFilter) { var mintype = pageFilter.FilterGroup.Rules.FirstOrDefault(t => t.Field == "MineType"); if (mintype != null && mintype.Value.ToString() == "0") pageFilter.FilterGroup.Rules.Remove(mintype); pageFilter.Include.Add("Nav_Details"); pageFilter.Include.Add("Nav_Details.Nav_DetailContents.Nav_Contents"); pageFilter.Include.Add("Nav_Details.Nav_DetailContents.Nav_DetailHiddens.Nav_Question"); pageFilter.Include.Add("Nav_Details.Nav_DetailContents.Nav_DetailBasics.Nav_Law"); pageFilter.Include.Add("Nav_SCOREL"); pageFilter.Include.Add("Nav_SCOREE"); pageFilter.Include.Add("Nav_SCOREC"); pageFilter.Include.Add("Nav_Type"); pageFilter.Include.Add("Nav_ProductionUnit"); pageFilter.SelectField.Add("Nav_Details.NUM"); pageFilter.SelectField.Add("Nav_Details.MEASURES_NAME"); pageFilter.SelectField.Add("Nav_Details.Nav_DetailContents.NUM"); pageFilter.SelectField.Add("Nav_Details.Nav_DetailContents.Nav_Contents.CHECKCONTENT"); var result = GetOrderPageEntities(null, pageFilter); if (result != null && result.Data != null && result.Data.Any()) { foreach (var item in result.Data) { //管控措施 var detailStr = new List(); if (item.Nav_Details != null && item.Nav_Details.Any()) { foreach (var item2 in item.Nav_Details.OrderBy(t => t.NUM)) { if (item2 != null && !string.IsNullOrEmpty(item2.MEASURES_NAME)) { var temp = item2.NUM + "*" + item2.MEASURES_NAME; item.MINE_NAME = item.MINE_NAME + temp; item.MEASURE = item.MEASURE + temp; var conListTemp = ""; if (item2.Nav_DetailContents != null && item2.Nav_DetailContents.Any()) { foreach (var con in item2.Nav_DetailContents.OrderBy(t => t.NUM)) { if (con != null && con.Nav_Contents != null) { var conTemp = item2.NUM +"."+con.NUM + "*"+con.Nav_Contents?.CHECKCONTENT; conListTemp = conListTemp + conTemp; } } } item.CHECKCONTENTS = item.CHECKCONTENTS+ conListTemp; } } } } result.Data.OrderBy(t => t.PRODUCTION_UNIT_ID).ThenBy(m => m.EVALUATE_LEVEL); } return result; } /// /// 排序查询所有数据 /// /// 过滤实体 /// [HttpPost, Route("SKOrderEntities")] public JsonActionResult> SKOrderEntities([FromBody] KeywordFilter filter) { var result = WitOrderEntities(null, filter); if (result != null && result.Data != null) { if (result.Data != null && result.Data.Any()) { foreach (var item in result.Data) { var detailStr = new List(); var contentStr = new List(); var basicStr = new List(); var standardStr = new List(); var scripStr = new List(); var levelStr = new List(); var measureStr = new List(); if (item.Nav_Details != null && item.Nav_Details.Any()) { foreach (var item2 in item.Nav_Details.OrderBy(t => t.NUM)) { //var i = 1; if (item2 != null && !string.IsNullOrEmpty(item2.MEASURES_NAME)) { detailStr.Add(item2.MEASURES_NAME); var temp = item2.NUM + "、" + item2.MEASURES_NAME + Environment.NewLine; item.MINE_NAME = item.MINE_NAME + temp; item.MEASURE = item.MEASURE + temp; //i++; } if (item2 != null && item2.Nav_DetailContents != null && item2.Nav_DetailContents.Any()) { foreach (var item3 in item2.Nav_DetailContents.OrderBy(t => t.NUM)) { if (item3 != null) { if (item3.Nav_Contents != null && !string.IsNullOrEmpty(item3.Nav_Contents.CHECKCONTENT)) { contentStr.Add(item3.Nav_Contents.CHECKCONTENT); } if (!string.IsNullOrEmpty(item3.CHECK_STANDARD)) { standardStr.Add(item3.CHECK_STANDARD); } if (item3.Nav_DetailBasics != null && item3.Nav_DetailBasics.Any()) { foreach (var item4 in item3.Nav_DetailBasics) { if (item4 != null && item4.Nav_Law != null && !string.IsNullOrEmpty(item4.Nav_Law.NAME)) { basicStr.Add(item4.Nav_Law.NAME); } } } if (item3.Nav_DetailHiddens != null && item3.Nav_DetailHiddens.Any()) { foreach (var item4 in item3.Nav_DetailHiddens.OrderBy(t => t.NUM)) { if (item4 != null) { if (item4.Nav_Question != null && !string.IsNullOrEmpty(item4.Nav_Question.DESCREPTION)) { scripStr.Add(item4.Nav_Question.DESCREPTION); } levelStr.Add(item4.HIDDEN_LEVEL.GetDescription()); if (!string.IsNullOrEmpty(item4.RECTIFICATION_MEASURES)) { measureStr.Add(item4.RECTIFICATION_MEASURES); } } } } } } } } } //if (detailStr.Any()) //{ // detailStr = detailStr.Distinct().ToList(); // var i = 1; // foreach (var item2 in detailStr) // { // if (!string.IsNullOrEmpty(item2)) // { // var temp = i + "、" + item2 + "\r\n"; // item.MEASURE = item.MEASURE + temp; // i++; // } // } //} if (contentStr.Any()) { contentStr = contentStr.Distinct().ToList(); var i = 1; foreach (var item2 in contentStr) { if (!string.IsNullOrEmpty(item2)) { var temp = i + "、" + item2 + "\r\n"; item.CHECKCONTENTS = item.CHECKCONTENTS + temp; i++; } } } if (basicStr.Any()) { basicStr = basicStr.Distinct().ToList(); var i = 1; foreach (var item2 in basicStr) { if (!string.IsNullOrEmpty(item2)) { var temp = i + "、" + item2 + "\r\n"; item.CHECKBASICS = item.CHECKBASICS + temp; i++; } } } if (standardStr.Any()) { standardStr = standardStr.Distinct().ToList(); var i = 1; foreach (var item2 in standardStr) { if (!string.IsNullOrEmpty(item2)) { var temp = i + "、" + item2 + "\r\n"; item.CHECKSTANDARDS = item.CHECKSTANDARDS + temp; i++; } } } if (scripStr.Any()) { scripStr = scripStr.Distinct().ToList(); var i = 1; foreach (var item2 in scripStr) { if (!string.IsNullOrEmpty(item2)) { var temp = i + "、" + item2 + "\r\n"; item.HIDDENSCRIPTION = item.HIDDENSCRIPTION + temp; i++; } } } if (levelStr.Any()) { levelStr = levelStr.Distinct().ToList(); var i = 1; foreach (var item2 in levelStr) { if (!string.IsNullOrEmpty(item2)) { var temp = i + "、" + item2 + "\r\n"; item.HIDDENLEVEL = item.HIDDENLEVEL + temp; i++; } } } if (measureStr.Any()) { measureStr = measureStr.Distinct().ToList(); var i = 1; foreach (var item2 in measureStr) { if (!string.IsNullOrEmpty(item2)) { var temp = i + "、" + item2 + "\r\n"; item.RECIFYMEASURE = item.RECIFYMEASURE + temp; i++; } } } } result.Data.OrderBy(t => t.AREA_ID); } } return result; } /// /// 获得单条实体数据 /// /// 过滤实体 /// [HttpPost, Route("SKGetOld")] public JsonActionResult SKGetOld([FromBody] KeywordFilter filter) { var result = WitEntity(null, filter); if (result != null && result.Data != null) { if (result.Data.Nav_Details != null && result.Data.Nav_Details.Any()) { foreach (var item in result.Data.Nav_Details) { if (item.Nav_DetailContents != null && item.Nav_DetailContents.Any()) { item.Nav_DetailContents.ForEach(t => t.Nav_DetailHiddens.OrderBy(m => m.NUM)); item.Nav_DetailContents.OrderBy(t => t.NUM); } } result.Data.Nav_Details.OrderBy(t => t.NUM); } } return result; } /// /// 获得单条实体数据 /// /// 过滤实体 /// [HttpPost, Route("SKGet")] public JsonActionResult SKGet([FromBody] KeywordFilter filter) { return SafeExecute(() => { var result = new T_SK_BASIC_LIBRARY(); var id = filter.FilterGroup.Rules.FirstOrDefault(t => t.Field == "ID").Value.ToString(); filter.IgnoreDataRule = true; if (!string.IsNullOrEmpty(id)) { result = this.GetEntity(id, new string[] { "Nav_Type", "Nav_Area","Nav_RiskName", "Nav_SCOREL","Nav_SCOREE","Nav_SCOREC","Nav_ProductionUnit"}); } if (result != null) { var details = this.GetEntities(t => t.BASIC_LIBRARY_ID == result.ID, new BaseFilter(filter.OrgId)); if (details.Any()) { var detailIds = details.Select(t => t.ID).ToList(); var contents = this.GetEntities(t => detailIds.Contains(t.BASIC_LIBRARY_DETAIL_ID), new BaseFilter(filter.OrgId), "Nav_Contents"); var contentIds = contents.Select(t => t.ID).ToList(); var contenthiddens = this.GetEntities(t => contentIds.Contains(t.BASIC_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(filter.OrgId), "Nav_Question"); var contentbasics = this.GetEntities(t => contentIds.Contains(t.BASIC_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(filter.OrgId), "Nav_Law"); foreach (var detail in details) { var contentTemps = contents.Where(t => t.BASIC_LIBRARY_DETAIL_ID == detail.ID).ToList(); detail.Nav_DetailContents = contentTemps.OrderBy(t => t.NUM).ToList(); foreach (var content in detail.Nav_DetailContents) { var hiddenTemps = contenthiddens.Where(t => t.BASIC_LIBRARY_DETAIL_CONTENT_ID == content.ID).ToList(); content.Nav_DetailHiddens = hiddenTemps.OrderBy(t => t.NUM).ToList(); var basicTemps = contentbasics.Where(t => t.BASIC_LIBRARY_DETAIL_CONTENT_ID == content.ID).ToList(); content.Nav_DetailBasics = basicTemps.ToList(); } } } result.Nav_Details = details.OrderBy(t => t.NUM).ToList(); } return result; }); } /// /// 获取集团基础库(旧) /// /// 过滤实体 /// [HttpPost, Route("JTOrderEntitiesOld")] public JsonActionResult> JTOrderEntitiesOld([FromBody] KeywordFilter filter) { var result = new JsonActionResult>(); string strConn = OPTenantDBConnService.GetConnByORGID(Guid.Parse("00300000-0000-0000-0000-000000000000")); string dbName = "mh_jy_head"; if (!string.IsNullOrEmpty(strConn)) { // 找左边字符串结束位置 int start = strConn.IndexOf("Database="); if (start != -1) { start += "Database=".Length; } // 找右边字符串开始位置 int end = strConn.IndexOf(";uid", start); if (end != -1) { // 截取中间 dbName = strConn.Substring(start, end - start); } } // 2. 传入构造函数 using var db = new CrossDbContext(strConn); // 3. 要跨哪些库?自己定义,指定总部 //var dbNames = new List(); ////{ //// "mh_jy_head", ////}; //dbNames.Add(dbName); result.Data = db.QueryCrossDatabases(dbName); if (result != null && result.Data != null && result.Data.Any()) { foreach (var item in result.Data) { var detailStr = new List(); var contentStr = new List(); var basicStr = new List(); var standardStr = new List(); var scripStr = new List(); var levelStr = new List(); var measureStr = new List(); if (item.Nav_Details != null && item.Nav_Details.Any()) { foreach (var item2 in item.Nav_Details.OrderBy(t => t.NUM)) { //var i = 1; if (item2 != null && !string.IsNullOrEmpty(item2.MEASURES_NAME)) { detailStr.Add(item2.MEASURES_NAME); var temp = item2.NUM + "、" + item2.MEASURES_NAME + Environment.NewLine; item.MINE_NAME = item.MINE_NAME + temp; item.MEASURE = item.MEASURE + temp; //i++; } if (item2 != null && item2.Nav_DetailContents != null && item2.Nav_DetailContents.Any()) { foreach (var item3 in item2.Nav_DetailContents.OrderBy(t => t.NUM)) { if (item3 != null) { if (item3.Nav_Contents != null && !string.IsNullOrEmpty(item3.Nav_Contents.CHECKCONTENT)) { contentStr.Add(item3.Nav_Contents.CHECKCONTENT); } if (!string.IsNullOrEmpty(item3.CHECK_STANDARD)) { standardStr.Add(item3.CHECK_STANDARD); } if (item3.Nav_DetailBasics != null && item3.Nav_DetailBasics.Any()) { foreach (var item4 in item3.Nav_DetailBasics) { if (item4 != null && item4.Nav_Law != null && !string.IsNullOrEmpty(item4.Nav_Law.NAME)) { basicStr.Add(item4.Nav_Law.NAME); } } } if (item3.Nav_DetailHiddens != null && item3.Nav_DetailHiddens.Any()) { foreach (var item4 in item3.Nav_DetailHiddens.OrderBy(t => t.NUM)) { if (item4 != null) { if (item4.Nav_Question != null && !string.IsNullOrEmpty(item4.Nav_Question.DESCREPTION)) { scripStr.Add(item4.Nav_Question.DESCREPTION); } levelStr.Add(item4.HIDDEN_LEVEL.GetDescription()); if (!string.IsNullOrEmpty(item4.RECTIFICATION_MEASURES)) { measureStr.Add(item4.RECTIFICATION_MEASURES); } } } } } } } } } //if (detailStr.Any()) //{ // detailStr = detailStr.Distinct().ToList(); // var i = 1; // foreach (var item2 in detailStr) // { // if (!string.IsNullOrEmpty(item2)) // { // var temp = i + "、" + item2 + "\r\n"; // item.MEASURE = item.MEASURE + temp; // i++; // } // } //} if (contentStr.Any()) { contentStr = contentStr.Distinct().ToList(); var i = 1; foreach (var item2 in contentStr) { if (!string.IsNullOrEmpty(item2)) { var temp = i + "、" + item2 + "\r\n"; item.CHECKCONTENTS = item.CHECKCONTENTS + temp; i++; } } } if (basicStr.Any()) { basicStr = basicStr.Distinct().ToList(); var i = 1; foreach (var item2 in basicStr) { if (!string.IsNullOrEmpty(item2)) { var temp = i + "、" + item2 + "\r\n"; item.CHECKBASICS = item.CHECKBASICS + temp; i++; } } } if (standardStr.Any()) { standardStr = standardStr.Distinct().ToList(); var i = 1; foreach (var item2 in standardStr) { if (!string.IsNullOrEmpty(item2)) { var temp = i + "、" + item2 + "\r\n"; item.CHECKSTANDARDS = item.CHECKSTANDARDS + temp; i++; } } } if (scripStr.Any()) { scripStr = scripStr.Distinct().ToList(); var i = 1; foreach (var item2 in scripStr) { if (!string.IsNullOrEmpty(item2)) { var temp = i + "、" + item2 + "\r\n"; item.HIDDENSCRIPTION = item.HIDDENSCRIPTION + temp; i++; } } } if (levelStr.Any()) { levelStr = levelStr.Distinct().ToList(); var i = 1; foreach (var item2 in levelStr) { if (!string.IsNullOrEmpty(item2)) { var temp = i + "、" + item2 + "\r\n"; item.HIDDENLEVEL = item.HIDDENLEVEL + temp; i++; } } } if (measureStr.Any()) { measureStr = measureStr.Distinct().ToList(); var i = 1; foreach (var item2 in measureStr) { if (!string.IsNullOrEmpty(item2)) { var temp = i + "、" + item2 + "\r\n"; item.RECIFYMEASURE = item.RECIFYMEASURE + temp; i++; } } } } result.Data.OrderBy(t => t.AREA_ID); } result.TotalCount = result.Data.Count(); return result; } /// /// 获取集团基础库 /// /// 过滤实体 /// [HttpPost, Route("JTOrderEntities")] public JsonActionResult> JTOrderEntities([FromBody] KeywordFilter filter) { var result = new JsonActionResult>(); string strConn = OPTenantDBConnService.GetConnByORGID(new Guid(FilePathHead.JY.GetDescription())); using (var context = new MigrationContext(strConn)) { Expression> expression = e => !e.IS_DELETED; Dictionary orders = new Dictionary(); orders.Add("CREATE_TIME", DbOrder.DESC); var temps = context.GetOrderEntities(expression, orders, null, "Nav_ProductionUnit", "Nav_Type", "Nav_SCOREL", "Nav_SCOREE", "Nav_SCOREC", "Nav_Details.Nav_DetailContents.Nav_Contents", "Nav_Details.Nav_DetailContents.Nav_DetailHiddens.Nav_Question", "Nav_Details.Nav_DetailContents.Nav_DetailBasics.Nav_Law"); if (temps != null && temps.Any()) { result.Data = temps.ToList(); } if (result != null && result.Data != null && result.Data.Any()) { foreach (var item in result.Data) { var detailStr = new List(); var contentStr = new List(); var basicStr = new List(); var standardStr = new List(); var scripStr = new List(); var levelStr = new List(); var measureStr = new List(); if (item.Nav_Details != null && item.Nav_Details.Any()) { foreach (var item2 in item.Nav_Details.OrderBy(t => t.NUM)) { //var i = 1; if (item2 != null && !string.IsNullOrEmpty(item2.MEASURES_NAME)) { detailStr.Add(item2.MEASURES_NAME); var temp = item2.NUM + "、" + item2.MEASURES_NAME + Environment.NewLine; item.MINE_NAME = item.MINE_NAME + temp; item.MEASURE = item.MEASURE + temp; //i++; } if (item2 != null && item2.Nav_DetailContents != null && item2.Nav_DetailContents.Any()) { foreach (var item3 in item2.Nav_DetailContents.OrderBy(t => t.NUM)) { if (item3 != null) { if (item3.Nav_Contents != null && !string.IsNullOrEmpty(item3.Nav_Contents.CHECKCONTENT)) { contentStr.Add(item3.Nav_Contents.CHECKCONTENT); } if (!string.IsNullOrEmpty(item3.CHECK_STANDARD)) { standardStr.Add(item3.CHECK_STANDARD); } if (item3.Nav_DetailBasics != null && item3.Nav_DetailBasics.Any()) { foreach (var item4 in item3.Nav_DetailBasics) { if (item4 != null && item4.Nav_Law != null && !string.IsNullOrEmpty(item4.Nav_Law.NAME)) { basicStr.Add(item4.Nav_Law.NAME); } } } if (item3.Nav_DetailHiddens != null && item3.Nav_DetailHiddens.Any()) { foreach (var item4 in item3.Nav_DetailHiddens.OrderBy(t => t.NUM)) { if (item4 != null) { if (item4.Nav_Question != null && !string.IsNullOrEmpty(item4.Nav_Question.DESCREPTION)) { scripStr.Add(item4.Nav_Question.DESCREPTION); } levelStr.Add(item4.HIDDEN_LEVEL.GetDescription()); if (!string.IsNullOrEmpty(item4.RECTIFICATION_MEASURES)) { measureStr.Add(item4.RECTIFICATION_MEASURES); } } } } } } } } } //if (detailStr.Any()) //{ // detailStr = detailStr.Distinct().ToList(); // var i = 1; // foreach (var item2 in detailStr) // { // if (!string.IsNullOrEmpty(item2)) // { // var temp = i + "、" + item2 + "\r\n"; // item.MEASURE = item.MEASURE + temp; // i++; // } // } //} if (contentStr.Any()) { contentStr = contentStr.Distinct().ToList(); var i = 1; foreach (var item2 in contentStr) { if (!string.IsNullOrEmpty(item2)) { var temp = i + "、" + item2 + "\r\n"; item.CHECKCONTENTS = item.CHECKCONTENTS + temp; i++; } } } if (basicStr.Any()) { basicStr = basicStr.Distinct().ToList(); var i = 1; foreach (var item2 in basicStr) { if (!string.IsNullOrEmpty(item2)) { var temp = i + "、" + item2 + "\r\n"; item.CHECKBASICS = item.CHECKBASICS + temp; i++; } } } if (standardStr.Any()) { standardStr = standardStr.Distinct().ToList(); var i = 1; foreach (var item2 in standardStr) { if (!string.IsNullOrEmpty(item2)) { var temp = i + "、" + item2 + "\r\n"; item.CHECKSTANDARDS = item.CHECKSTANDARDS + temp; i++; } } } if (scripStr.Any()) { scripStr = scripStr.Distinct().ToList(); var i = 1; foreach (var item2 in scripStr) { if (!string.IsNullOrEmpty(item2)) { var temp = i + "、" + item2 + "\r\n"; item.HIDDENSCRIPTION = item.HIDDENSCRIPTION + temp; i++; } } } if (levelStr.Any()) { levelStr = levelStr.Distinct().ToList(); var i = 1; foreach (var item2 in levelStr) { if (!string.IsNullOrEmpty(item2)) { var temp = i + "、" + item2 + "\r\n"; item.HIDDENLEVEL = item.HIDDENLEVEL + temp; i++; } } } if (measureStr.Any()) { measureStr = measureStr.Distinct().ToList(); var i = 1; foreach (var item2 in measureStr) { if (!string.IsNullOrEmpty(item2)) { var temp = i + "、" + item2 + "\r\n"; item.RECIFYMEASURE = item.RECIFYMEASURE + temp; i++; } } } } result.Data.OrderBy(t => t.AREA_ID); } result.TotalCount = result.Data.Count(); } return result; } /// /// 从集团导入(旧) /// /// /// [HttpPost, Route("ImportFormJTOld")] public JsonActionResult ImportFormJTOld([FromBody] KeywordFilter filter) { return SafeExecute(() => { if (string.IsNullOrEmpty(filter.Keyword)) throw new Exception("请先勾选要同步的数据"); var ids = new List(); var idTemps = filter.Keyword.Split(",").ToList(); foreach (var item in idTemps) { if (!string.IsNullOrEmpty(item)) { ids.Add(Guid.Parse(item)); } } string strConn = OPTenantDBConnService.GetConnByORGID(Guid.Parse("00300000-0000-0000-0000-000000000000")); string dbName = "mh_jy_head"; // 2. 传入构造函数 using var db = new CrossDbContext(strConn); var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId.Value; //删除ID相同的历史数据 var libs = this.GetEntities(t => ids.Contains(t.ID), new BaseFilter(orgId)); var deleteBasIds = libs.Select(t => t.ID).ToList(); var deleteBasDetailIds = this.GetEntities(t => deleteBasIds.Contains(t.BASIC_LIBRARY_ID), new BaseFilter(orgId)).Select(t => t.ID).ToList(); var deleteBasConttentIds = this.GetEntities(t => deleteBasDetailIds.Contains(t.BASIC_LIBRARY_DETAIL_ID), new BaseFilter(orgId)).Select(t => t.ID).ToList(); var deleteBasBasicIds = this.GetEntities(t => deleteBasConttentIds.Contains(t.BASIC_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(orgId)).Select(t => t.ID).ToList(); var deleteBasHiddenIds = this.GetEntities(t => deleteBasConttentIds.Contains(t.BASIC_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(orgId)).Select(t => t.ID).ToList(); //集团数据 var jtLibs = db.QueryCrossDatabases(dbName).Where(t=>ids.Contains(t.ID)).ToList(); //查生产单元表 List proUnitList = new List(); var proUnitIds = jtLibs.Where(m=> m.PRODUCTION_UNIT_ID != null).Select(t => t.PRODUCTION_UNIT_ID).Distinct().ToList(); var proUnits = this.GetEntities(t => proUnitIds.Contains(t.ID), new BaseFilter(orgId)); var jtProUnits = db.GetJTProUnits(dbName).ToList(); if (proUnitIds != null && proUnitIds.Any()) { foreach (var id in proUnitIds) { var exsist = proUnits.FirstOrDefault(t => t.ID == id && t.JT_SYNC); var jtExsist = jtProUnits.FirstOrDefault(t => t.ID == id); if (exsist != null) { //存在,更新 T_FM_USER_PRODUCTION_UNIT_SET set = new T_FM_USER_PRODUCTION_UNIT_SET(); set = exsist; set.NAME = jtExsist?.NAME; set.CODE = jtExsist?.CODE; proUnitList.Add(set); } else { //不存在,写入 T_FM_USER_PRODUCTION_UNIT_SET set = new T_FM_USER_PRODUCTION_UNIT_SET(); set.ID = id.Value; set.ORG_ID = orgId; set.NAME = jtExsist?.NAME; set.CODE = jtExsist?.CODE; set.JT_SYNC = true; proUnitList.Add(set); } } } //查风险类别 List riskTypeList = new List(); var riskTypeIds = jtLibs.Where(m => m.TYPE_ID != null).Select(t => t.TYPE_ID).Distinct().ToList(); var riskTypes = this.GetEntities(t => riskTypeIds.Contains(t.ID), new BaseFilter(orgId)); var jtRiskTypes = db.GetJTRiskTypes(dbName).ToList(); if (riskTypeIds != null && riskTypeIds.Any()) { foreach (var id in riskTypeIds) { var exsist = riskTypes.FirstOrDefault(t => t.ID == id && t.JT_SYNC); var jtExsist = jtRiskTypes.FirstOrDefault(t => t.ID == id); if (exsist != null) { //存在,更新 T_SK_RISK_TYPE riskTypeNew = new T_SK_RISK_TYPE(); riskTypeNew = exsist; riskTypeNew.NAME = jtExsist?.NAME; riskTypeNew.PRODUCTION_UNIT_ID = jtExsist?.PRODUCTION_UNIT_ID; riskTypeList.Add(riskTypeNew); } else { //不存在,写入 T_SK_RISK_TYPE riskTypeNew = new T_SK_RISK_TYPE(); riskTypeNew.ORG_ID = orgId; riskTypeNew.ID = id.Value; riskTypeNew.NAME = jtExsist?.NAME; riskTypeNew.PRODUCTION_UNIT_ID = jtExsist?.PRODUCTION_UNIT_ID; riskTypeNew.JT_SYNC = true; riskTypeList.Add(riskTypeNew); } } } //查LEC List libLList = new List(); var libLIds = jtLibs.Where(m => m.SCOREL_ID != null).Select(t => t.SCOREL_ID).Distinct().ToList(); var libLs = this.GetEntities(t => libLIds.Contains(t.ID), new BaseFilter(orgId)); var jtlibLs = db.GetJTLibLs(dbName).ToList(); if (libLIds != null && libLIds.Any()) { foreach (var id in libLIds) { var exsist = libLs.FirstOrDefault(t => t.ID == id && t.JT_SYNC); var jtExsist = jtlibLs.FirstOrDefault(t => t.ID == id); if (exsist != null) { //存在,更新 T_SK_SCOREL libLNew = new T_SK_SCOREL(); libLNew = exsist; libLNew.NAME = jtExsist?.NAME; libLNew.CODE = jtExsist?.CODE; libLNew.SCORE = jtExsist == null ? 0 : jtExsist.SCORE; libLList.Add(libLNew); } else { //不存在,写入 T_SK_SCOREL libLNew = new T_SK_SCOREL(); libLNew.ORG_ID = orgId; libLNew.ID = id.Value; libLNew.NAME = jtExsist?.NAME; libLNew.CODE = jtExsist?.CODE; libLNew.JT_SYNC = true; libLNew.SCORE = jtExsist == null ? 0 : jtExsist.SCORE; libLList.Add(libLNew); } } } //查LEC List libEList = new List(); var libEIds = jtLibs.Where(m => m.SCOREE_ID != null).Select(t => t.SCOREE_ID).Distinct().ToList(); var libEs = this.GetEntities(t => libEIds.Contains(t.ID), new BaseFilter(orgId)); var jtlibEs = db.GetJTLibEs(dbName).ToList(); if (libEIds != null && libEIds.Any()) { foreach (var id in libEIds) { var exsist = libEs.FirstOrDefault(t => t.ID == id && t.JT_SYNC); var jtExsist = jtlibEs.FirstOrDefault(t => t.ID == id); if (exsist != null) { //存在,更新 T_SK_SCOREE libENew = new T_SK_SCOREE(); libENew = exsist; libENew.NAME = jtExsist?.NAME; libENew.CODE = jtExsist?.CODE; libENew.SCORE = jtExsist == null ? 0 : jtExsist.SCORE; libEList.Add(libENew); } else { //不存在,写入 T_SK_SCOREE libENew = new T_SK_SCOREE(); libENew.ORG_ID = orgId; libENew.ID = id.Value; libENew.NAME = jtExsist?.NAME; libENew.CODE = jtExsist?.CODE; libENew.JT_SYNC = true; libENew.SCORE = jtExsist == null ? 0 : jtExsist.SCORE; libEList.Add(libENew); } } } //查LEC List libCList = new List(); var libCIds = jtLibs.Where(m => m.SCOREC_ID != null).Select(t => t.SCOREC_ID).Distinct().ToList(); var libCs = this.GetEntities(t => libCIds.Contains(t.ID), new BaseFilter(orgId)); var jtlibCs = db.GetJTLibCs(dbName).ToList(); if (libCIds == null && libCIds.Any()) { foreach (var id in libCIds) { var exsist = libCs.FirstOrDefault(t => t.ID == id && t.JT_SYNC); var jtExsist = jtlibCs.FirstOrDefault(t => t.ID == id); if (exsist != null) { //存在,更新 T_SK_SCOREC libCNew = new T_SK_SCOREC(); libCNew = exsist; libCNew.NAME = jtExsist?.NAME; libCNew.CODE = jtExsist?.CODE; libCNew.SCORE = jtExsist == null ? 0 : jtExsist.SCORE; libCList.Add(libCNew); } else { //不存在,写入 T_SK_SCOREC libCNew = new T_SK_SCOREC(); libCNew.ORG_ID = orgId; libCNew.ID = id.Value; libCNew.NAME = jtExsist?.NAME; libCNew.CODE = jtExsist?.CODE; libCNew.SCORE = jtExsist == null ? 0 : jtExsist.SCORE; libCNew.JT_SYNC = true; libCList.Add(libCNew); } } } //重新写入选中的集团数据 List libList = new List(); List detailList = new List(); List contentList = new List(); List hiddenList = new List(); List basicList = new List(); if (jtLibs != null && jtLibs.Any()) { foreach (var lib in jtLibs) { T_SK_BASIC_LIBRARY libNew = new T_SK_BASIC_LIBRARY(); libNew.ORG_ID = orgId; libNew.ID = lib.ID; libNew.PRODUCTION_UNIT_ID = lib.PRODUCTION_UNIT_ID; libNew.RISK_NAME = lib.RISK_NAME; libNew.RISK_DESCRIPTION = lib.RISK_DESCRIPTION; libNew.TYPE_ID = lib.TYPE_ID; libNew.SCOREC_ID = lib.SCOREC_ID; libNew.SCOREE_ID = lib.SCOREE_ID; libNew.SCOREL_ID = lib.SCOREL_ID; libNew.EVALUATE_SCORE = lib.EVALUATE_SCORE; libNew.EVALUATE_LEVEL = lib.EVALUATE_LEVEL; libNew.DEPARTMENT_TYPE = lib.DEPARTMENT_TYPE; libNew.EMERGENCY = lib.EMERGENCY; libNew.ENABLE_STATUS = lib.ENABLE_STATUS; libList.Add(libNew); if (lib.Nav_Details != null && lib.Nav_Details.Any()) { foreach (var item in lib.Nav_Details) { T_SK_BASIC_LIBRARY_DETAIL de = new T_SK_BASIC_LIBRARY_DETAIL(); de.ORG_ID = orgId; de.ID = item.ID; de.BASIC_LIBRARY_ID = libNew.ID; de.MEASURES_NAME = item.MEASURES_NAME; de.EMERGENCY = item.EMERGENCY; de.NUM = item.NUM; de.ROW_NO = item.ROW_NO; detailList.Add(de); if (item.Nav_DetailContents != null && item.Nav_DetailContents.Any()) { foreach (var item2 in item.Nav_DetailContents) { T_SK_BASIC_LIBRARY_DETAIL_CONTENT con = new T_SK_BASIC_LIBRARY_DETAIL_CONTENT(); con.ORG_ID = orgId; con.ID = item2.ID; con.BASIC_LIBRARY_DETAIL_ID = de.ID; con.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID; con.CHECK_CONTENT = item2.CHECK_CONTENT; con.CHECK_STANDARD = item2.CHECK_STANDARD; con.NUM = item2.NUM; con.ROW_NO = item2.ROW_NO; contentList.Add(con); if (item2.Nav_DetailHiddens != null && item2.Nav_DetailHiddens.Any()) { foreach (var item3 in item2.Nav_DetailHiddens) { T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN hid = new T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN(); hid.ORG_ID = orgId; hid.ID = item3.ID; hid.BASIC_LIBRARY_DETAIL_CONTENT_ID = con.ID; hid.CHECK_QUESTION_ID = item3.CHECK_QUESTION_ID; hid.HIDDEN_DESCRIPTION = item3.HIDDEN_DESCRIPTION; hid.HIDDEN_LEVEL = item3.HIDDEN_LEVEL; hid.RECTIFICATION_MEASURES = item3.RECTIFICATION_MEASURES; hid.NUM = item3.NUM; hid.ROW_NO = item3.ROW_NO; hid.CHECK_CONTENTS_ID = hid.CHECK_CONTENTS_ID; hiddenList.Add(hid); } } if (item2.Nav_DetailBasics != null && item2.Nav_DetailBasics.Any()) { foreach (var item3 in item2.Nav_DetailBasics) { T_SK_BASIC_LIBRARY_DETAIL_CONTENT_BASIC bas = new T_SK_BASIC_LIBRARY_DETAIL_CONTENT_BASIC(); bas.ORG_ID = orgId; bas.ID = item3.ID; bas.BASIC_LIBRARY_DETAIL_CONTENT_ID = con.ID; bas.LAW_ID = item3.LAW_ID; bas.CHECK_CONTENTS_ID = item3.CHECK_CONTENTS_ID; basicList.Add(bas); } } } } } } } } //查检查内容 List updateCheckConts = new List(); var checkConts = this.GetEntities(t => true, new BaseFilter(orgId)); var jtCheckConts = db.GetJTCons(dbName).ToList(); if (contentList != null && contentList.Any()) { var conIds = contentList.Select(t => t.CHECK_CONTENTS_ID).ToList(); //存在,更新 var conExsists = checkConts.Where(t => conIds.Contains(t.ID) && t.JT_SYNC).ToList(); if (conExsists != null && conExsists.Any()) { foreach (var conExsist in conExsists) { //检查内容 var first = jtCheckConts.FirstOrDefault(t => t.ID == conExsist.ID); if (first != null) { conExsist.ID = first.ID; conExsist.ORG_ID = orgId; conExsist.PRODUCTION_UNIT_ID = first.PRODUCTION_UNIT_ID; conExsist.Nav_ListCheckQuestion = null; conExsist.Nav_ContentsBasics = null; conExsist.CHECKCONTENT = first.CHECKCONTENT; conExsist.CHECK_STANDARD = first.CHECK_STANDARD; conExsist.JT_SYNC = true; updateCheckConts.Add(conExsist); } } } //不存在,写入 var conIdNews = conExsists.Select(t => t.ID).ToList(); var conExsistNews = conIds.Where(t => t != null && !conIdNews.Contains(t.Value)).ToList(); if (conExsistNews != null && conExsistNews.Any()) { foreach (var id in conExsistNews) { //检查内容 var first = jtCheckConts.FirstOrDefault(t => t.ID == id); if (first != null) { T_SK_CHECK_CONTENTS conExsist = new T_SK_CHECK_CONTENTS(); conExsist.ID = id.Value; conExsist.ORG_ID = orgId; conExsist.PRODUCTION_UNIT_ID = first.PRODUCTION_UNIT_ID; conExsist.Nav_ListCheckQuestion = null; conExsist.Nav_ContentsBasics = null; conExsist.CHECKCONTENT = first.CHECKCONTENT; conExsist.CHECK_STANDARD = first.CHECK_STANDARD; conExsist.JT_SYNC = true; updateCheckConts.Add(conExsist); } } } } //查检查依据(法律法规) List updateCheckLaws = new List(); List updateCheckLawTypes = new List(); List updateCheckBas = new List(); var jtcheckContLawTypes = db.GetJTLawTypes(dbName).ToList(); var checkContLawTypes = this.GetEntities(t => true, new BaseFilter(orgId)); var checkContLaws = this.GetEntities(t => true, new BaseFilter(orgId)); var jtcheckContLaws = db.GetJTLaws(dbName).ToList(); var checkContBas = this.GetEntities(t => true, new BaseFilter(orgId)); var jtcheckContBas = db.GetJTBas(dbName).ToList(); if (basicList != null && basicList.Any()) { var conIds = basicList.Select(t => t.LAW_ID).Distinct().ToList(); //存在,更新 var conExsists = checkContLaws.Where(t => conIds.Contains(t.ID) && t.JT_SYNC).ToList(); if (conExsists != null && conExsists.Any()) { foreach (var conExsist in conExsists) { //法律法规 var first = jtcheckContLaws.FirstOrDefault(t => t.ID == conExsist.ID); if (first != null) { var firstType = checkContLawTypes.FirstOrDefault(t => t.ID == first.TYPE_ID && t.JT_SYNC); if (firstType == null) { var jtFirstType = jtcheckContLawTypes.FirstOrDefault(t => t.ID == first.TYPE_ID); if (jtFirstType != null) { T_LR_LAW_TYPE lawType = new T_LR_LAW_TYPE(); lawType.ORG_ID = orgId; lawType.ID = jtFirstType.ID; lawType.NAME = jtFirstType.NAME; lawType.JT_SYNC = true; updateCheckLawTypes.Add(lawType); conExsist.ID = first.ID; conExsist.ORG_ID = orgId; conExsist.CODE = first?.CODE; conExsist.NAME = first?.NAME; conExsist.VERSION_NUM = first?.VERSION_NUM; conExsist.LAW_STATUS = first == null ? BSLawStatusEnum.现行 : first.LAW_STATUS; conExsist.UPDATE_TIME = first == null ? DateTime.Now : first.UPDATE_TIME; conExsist.EXECUTE_TIME = first == null ? DateTime.Now : first.EXECUTE_TIME; conExsist.USER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value; conExsist.TYPE_ID = first.TYPE_ID; conExsist.JT_SYNC = true; updateCheckLaws.Add(conExsist); } } else { conExsist.ID = first.ID; conExsist.ORG_ID = orgId; conExsist.CODE = first?.CODE; conExsist.NAME = first?.NAME; conExsist.VERSION_NUM = first?.VERSION_NUM; conExsist.LAW_STATUS = first == null ? BSLawStatusEnum.现行 : first.LAW_STATUS; conExsist.UPDATE_TIME = first == null ? DateTime.Now : first.UPDATE_TIME; conExsist.EXECUTE_TIME = first == null ? DateTime.Now : first.EXECUTE_TIME; conExsist.USER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value; conExsist.TYPE_ID = first.TYPE_ID; conExsist.JT_SYNC = true; updateCheckLaws.Add(conExsist); } } } } //不存在,写入 var conIdNews = conExsists.Select(t => t.ID).ToList(); var conExsistNews = conIds.Where(t => t != null && !conIdNews.Contains(t.Value)).ToList(); if (conExsistNews != null && conExsistNews.Any()) { foreach (var id in conExsistNews) { //检查依据(法律法规) var first = jtcheckContLaws.FirstOrDefault(t => t.ID == id); if (first != null) { var firstType = checkContLawTypes.FirstOrDefault(t => t.ID == first.TYPE_ID); if (firstType == null) { var jtFirstType = jtcheckContLawTypes.FirstOrDefault(t => t.ID == first.TYPE_ID); if (jtFirstType != null) { T_LR_LAW_TYPE lawType = new T_LR_LAW_TYPE(); lawType.ORG_ID = orgId; lawType.ID = jtFirstType.ID; lawType.NAME = jtFirstType.NAME; lawType.JT_SYNC = true; updateCheckLawTypes.Add(lawType); T_LR_LAW conExsist = new T_LR_LAW(); conExsist.ID = id.Value; conExsist.ORG_ID = orgId; conExsist.CODE = first?.CODE; conExsist.NAME = first?.NAME; conExsist.VERSION_NUM = first?.VERSION_NUM; conExsist.LAW_STATUS = first == null ? BSLawStatusEnum.现行 : first.LAW_STATUS; conExsist.UPDATE_TIME = first == null ? DateTime.Now : first.UPDATE_TIME; conExsist.EXECUTE_TIME = first == null ? DateTime.Now : first.EXECUTE_TIME; conExsist.USER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value; conExsist.TYPE_ID = jtFirstType.ID; conExsist.JT_SYNC = true; updateCheckLaws.Add(conExsist); } } else { T_LR_LAW conExsist = new T_LR_LAW(); conExsist.ID = id.Value; conExsist.ORG_ID = orgId; conExsist.CODE = first?.CODE; conExsist.NAME = first?.NAME; conExsist.VERSION_NUM = first?.VERSION_NUM; conExsist.LAW_STATUS = first == null ? BSLawStatusEnum.现行 : first.LAW_STATUS; conExsist.UPDATE_TIME = first == null ? DateTime.Now : first.UPDATE_TIME; conExsist.EXECUTE_TIME = first == null ? DateTime.Now : first.EXECUTE_TIME; conExsist.USER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value; conExsist.TYPE_ID = first.TYPE_ID; conExsist.JT_SYNC = true; updateCheckLaws.Add(conExsist); } } } } //检查内容子表保存 var conBasics = basicList.GroupBy(t => new { t.CHECK_CONTENTS_ID, t.LAW_ID }).ToList(); if (conBasics != null && conBasics.Any()) { foreach (var item in conBasics) { var first = checkContBas.FirstOrDefault(t => t.CHECK_CONTENTS_ID == item.Key.CHECK_CONTENTS_ID && t.LAW_ID == item.Key.LAW_ID && t.JT_SYNC); if (first == null) { //写入 var jtFirstType = jtcheckContBas.FirstOrDefault(t => t.CHECK_CONTENTS_ID == item.Key.CHECK_CONTENTS_ID && t.LAW_ID == item.Key.LAW_ID); if (jtFirstType != null) { T_SK_CHECK_CONTENTS_BASIC conBasic = new T_SK_CHECK_CONTENTS_BASIC(); conBasic.CHECK_CONTENTS_ID = item.Key.CHECK_CONTENTS_ID; conBasic.LAW_ID = item.Key.LAW_ID; conBasic.ORG_ID = orgId; conBasic.ID = jtFirstType.ID; conBasic.JT_SYNC = true; updateCheckBas.Add(conBasic); } } else { //更新 T_SK_CHECK_CONTENTS_BASIC conBasic = new T_SK_CHECK_CONTENTS_BASIC(); conBasic.CHECK_CONTENTS_ID = item.Key.CHECK_CONTENTS_ID; conBasic.LAW_ID = item.Key.LAW_ID; conBasic.ORG_ID = orgId; conBasic.ID = first.ID; conBasic.JT_SYNC = true; updateCheckBas.Add(conBasic); } } } } //查隐患描述 List updateCheckQues = new List(); var checkContHids = this.GetEntities(t => true, new BaseFilter(orgId)); var jtCheckContHids = db.GetJTQues(dbName).ToList(); if (hiddenList != null && hiddenList.Any()) { var conIds = hiddenList.Select(t => t.CHECK_QUESTION_ID).Distinct().ToList(); //存在,更新 var conExsists = checkContHids.Where(t => conIds.Contains(t.ID) && t.JT_SYNC).ToList(); if (conExsists != null && conExsists.Any()) { foreach (var conExsist in conExsists) { //隐患描述 var first = jtCheckContHids.FirstOrDefault(t => t.ID == conExsist.ID); if (first != null) { conExsist.ID = first.ID; conExsist.ORG_ID = orgId; conExsist.QUESTION_LEVEL = first.QUESTION_LEVEL; conExsist.DEMAND = first.DEMAND; conExsist.DESCREPTION = first.DESCREPTION; conExsist.CHECK_CONTENTS_ID = first.CHECK_CONTENTS_ID; conExsist.JT_SYNC = true; updateCheckQues.Add(conExsist); } } } //不存在,写入 var conIdNews = conExsists.Select(t => t.ID).ToList(); var conExsistNews = conIds.Where(t => t != null && !conIdNews.Contains(t.Value)).ToList(); if (conExsistNews != null && conExsistNews.Any()) { foreach (var id in conExsistNews) { //隐患描述 var first = jtCheckContHids.FirstOrDefault(t => t.ID == id); if (first != null) { T_SK_CHECK_QUESTION conExsist = new T_SK_CHECK_QUESTION(); conExsist.ID = id.Value; conExsist.ORG_ID = orgId; conExsist.QUESTION_LEVEL = first.QUESTION_LEVEL; conExsist.DEMAND = first.DEMAND; conExsist.DESCREPTION = first.DESCREPTION; conExsist.CHECK_CONTENTS_ID = first.CHECK_CONTENTS_ID; conExsist.JT_SYNC = true; updateCheckQues.Add(conExsist); } } } } this.UnifiedCommit(() => { if (proUnitList != null && proUnitList.Any()) BantchSaveEntityNoCommit(proUnitList); if (riskTypeList != null && riskTypeList.Any()) BantchSaveEntityNoCommit(riskTypeList); if (libLList != null && libLList.Any()) BantchSaveEntityNoCommit(libLList); if (libEList != null && libEList.Any()) BantchSaveEntityNoCommit(libEList); if (libCList != null && libCList.Any()) BantchSaveEntityNoCommit(libCList); if (updateCheckLawTypes != null && updateCheckLawTypes.Any()) BantchSaveEntityNoCommit(updateCheckLawTypes); if (updateCheckLaws != null && updateCheckLaws.Any()) BantchSaveEntityNoCommit(updateCheckLaws); if (updateCheckConts != null && updateCheckConts.Any()) BantchSaveEntityNoCommit(updateCheckConts); if (updateCheckQues != null && updateCheckQues.Any()) BantchSaveEntityNoCommit(updateCheckQues); if (updateCheckBas != null && updateCheckBas.Any()) BantchSaveEntityNoCommit(updateCheckBas); if (deleteBasBasicIds != null && deleteBasBasicIds.Any()) this.BantchDeleteEntityNoCommit(deleteBasBasicIds); if (deleteBasHiddenIds != null && deleteBasHiddenIds.Any()) this.BantchDeleteEntityNoCommit(deleteBasHiddenIds); if (deleteBasConttentIds != null && deleteBasConttentIds.Any()) this.BantchDeleteEntityNoCommit(deleteBasConttentIds); if (deleteBasDetailIds != null && deleteBasDetailIds.Any()) this.BantchDeleteEntityNoCommit(deleteBasDetailIds); if (deleteBasIds != null && deleteBasIds.Any()) this.BantchDeleteEntityNoCommit(deleteBasIds); if (libList != null && libList.Any()) BantchSaveEntityNoCommit(libList); if (detailList != null && detailList.Any()) BantchSaveEntityNoCommit(detailList); if (contentList != null && contentList.Any()) BantchSaveEntityNoCommit(contentList); if (hiddenList != null && hiddenList.Any()) BantchSaveEntityNoCommit(hiddenList); if (basicList != null && basicList.Any()) BantchSaveEntityNoCommit(basicList); }); return true; }); } /// /// 从集团导入 /// /// /// [HttpPost, Route("ImportFormJT")] public JsonActionResult ImportFormJT([FromBody] KeywordFilter filter) { return SafeExecute(() => { if (string.IsNullOrEmpty(filter.Keyword)) throw new Exception("请先勾选要同步的数据"); var ids = new List(); var idTemps = filter.Keyword.Split(",").ToList(); foreach (var item in idTemps) { if (!string.IsNullOrEmpty(item)) { ids.Add(Guid.Parse(item)); } } var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId.Value; //删除ID相同的历史数据 var libs = this.GetEntities(t => ids.Contains(t.ID), new BaseFilter(orgId)); var deleteBasIds = libs.Select(t => t.ID).ToList(); var deleteBasDetailIds = this.GetEntities(t => deleteBasIds.Contains(t.BASIC_LIBRARY_ID), new BaseFilter(orgId)).Select(t => t.ID).ToList(); var deleteBasConttentIds = this.GetEntities(t => deleteBasDetailIds.Contains(t.BASIC_LIBRARY_DETAIL_ID), new BaseFilter(orgId)).Select(t => t.ID).ToList(); var deleteBasBasicIds = this.GetEntities(t => deleteBasConttentIds.Contains(t.BASIC_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(orgId)).Select(t => t.ID).ToList(); var deleteBasHiddenIds = this.GetEntities(t => deleteBasConttentIds.Contains(t.BASIC_LIBRARY_DETAIL_CONTENT_ID), new BaseFilter(orgId)).Select(t => t.ID).ToList(); //集团数据 var jtLibs = new List(); var jtProUnits = new List(); var jtRiskTypes = new List(); var jtlibLs = new List(); var jtlibEs = new List(); var jtlibCs = new List(); var jtCheckConts = new List(); var jtcheckContLawTypes = new List(); var jtcheckContLaws = new List(); var jtcheckContBas = new List(); var jtCheckContHids = new List(); string strConn = OPTenantDBConnService.GetConnByORGID(new Guid(FilePathHead.JY.GetDescription())); using (var context = new MigrationContext(strConn)) { Expression> expression = e => !e.IS_DELETED && ids.Contains(e.ID); Dictionary orders = new Dictionary(); orders.Add("CREATE_TIME", DbOrder.DESC); jtLibs = context.GetOrderEntities(expression, orders, null, "Nav_ProductionUnit", "Nav_Type", "Nav_SCOREL", "Nav_SCOREE", "Nav_SCOREC", "Nav_Details.Nav_DetailContents.Nav_Contents", "Nav_Details.Nav_DetailContents.Nav_DetailHiddens.Nav_Question", "Nav_Details.Nav_DetailContents.Nav_DetailBasics.Nav_Law").ToList(); Expression> expressionUnit = e => !e.IS_DELETED ; jtProUnits = context.GetOrderEntities(expressionUnit, orders, null).ToList(); Expression> expressionType = e => !e.IS_DELETED; jtRiskTypes = context.GetOrderEntities(expressionType, orders, null).ToList(); Expression> expressionL = e => !e.IS_DELETED; jtlibLs = context.GetOrderEntities(expressionL, orders, null).ToList(); Expression> expressionE = e => !e.IS_DELETED; jtlibEs = context.GetOrderEntities(expressionE, orders, null).ToList(); Expression> expressionC = e => !e.IS_DELETED; jtlibCs = context.GetOrderEntities(expressionC, orders, null).ToList(); Expression> expressionCon = e => !e.IS_DELETED; jtCheckConts = context.GetOrderEntities(expressionCon, orders, null).ToList(); Expression> expressionLaw = e => !e.IS_DELETED; jtcheckContLaws = context.GetOrderEntities(expressionLaw, orders, null).ToList(); Expression> expressionLawType = e => !e.IS_DELETED; jtcheckContLawTypes = context.GetOrderEntities(expressionLawType, orders, null).ToList(); Expression> expressionBac = e => !e.IS_DELETED; jtcheckContBas = context.GetOrderEntities(expressionBac, orders, null).ToList(); Expression> expressionQue = e => !e.IS_DELETED; jtCheckContHids = context.GetOrderEntities(expressionQue, orders, null).ToList(); } //查生产单元表 List proUnitList = new List(); var proUnitIds = jtLibs.Where(m => m.PRODUCTION_UNIT_ID != null).Select(t => t.PRODUCTION_UNIT_ID).Distinct().ToList(); var proUnits = this.GetEntities(t => proUnitIds.Contains(t.ID), new BaseFilter(orgId)); if (proUnitIds != null && proUnitIds.Any()) { foreach (var id in proUnitIds) { var exsist = proUnits.FirstOrDefault(t => t.ID == id && t.JT_SYNC); var jtExsist = jtProUnits.FirstOrDefault(t => t.ID == id); if (exsist != null) { //存在,更新 T_FM_USER_PRODUCTION_UNIT_SET set = new T_FM_USER_PRODUCTION_UNIT_SET(); set = exsist; set.NAME = jtExsist?.NAME; set.CODE = jtExsist?.CODE; proUnitList.Add(set); } else { //不存在,写入 T_FM_USER_PRODUCTION_UNIT_SET set = new T_FM_USER_PRODUCTION_UNIT_SET(); set.ID = id.Value; set.ORG_ID = orgId; set.NAME = jtExsist?.NAME; set.CODE = jtExsist?.CODE; set.JT_SYNC = true; proUnitList.Add(set); } } } //查风险类别 List riskTypeList = new List(); var riskTypeIds = jtLibs.Where(m => m.TYPE_ID != null).Select(t => t.TYPE_ID).Distinct().ToList(); var riskTypes = this.GetEntities(t => riskTypeIds.Contains(t.ID), new BaseFilter(orgId)); if (riskTypeIds != null && riskTypeIds.Any()) { foreach (var id in riskTypeIds) { var exsist = riskTypes.FirstOrDefault(t => t.ID == id && t.JT_SYNC); var jtExsist = jtRiskTypes.FirstOrDefault(t => t.ID == id); if (exsist != null) { //存在,更新 T_SK_RISK_TYPE riskTypeNew = new T_SK_RISK_TYPE(); riskTypeNew = exsist; riskTypeNew.NAME = jtExsist?.NAME; riskTypeNew.PRODUCTION_UNIT_ID = jtExsist?.PRODUCTION_UNIT_ID; riskTypeList.Add(riskTypeNew); } else { //不存在,写入 T_SK_RISK_TYPE riskTypeNew = new T_SK_RISK_TYPE(); riskTypeNew.ORG_ID = orgId; riskTypeNew.ID = id.Value; riskTypeNew.NAME = jtExsist?.NAME; riskTypeNew.PRODUCTION_UNIT_ID = jtExsist?.PRODUCTION_UNIT_ID; riskTypeNew.JT_SYNC = true; riskTypeList.Add(riskTypeNew); } } } //查LEC List libLList = new List(); var libLIds = jtLibs.Where(m => m.SCOREL_ID != null).Select(t => t.SCOREL_ID).Distinct().ToList(); var libLs = this.GetEntities(t => libLIds.Contains(t.ID), new BaseFilter(orgId)); if (libLIds != null && libLIds.Any()) { foreach (var id in libLIds) { var exsist = libLs.FirstOrDefault(t => t.ID == id && t.JT_SYNC); var jtExsist = jtlibLs.FirstOrDefault(t => t.ID == id); if (exsist != null) { //存在,更新 T_SK_SCOREL libLNew = new T_SK_SCOREL(); libLNew = exsist; libLNew.NAME = jtExsist?.NAME; libLNew.CODE = jtExsist?.CODE; libLNew.SCORE = jtExsist == null ? 0 : jtExsist.SCORE; libLList.Add(libLNew); } else { //不存在,写入 T_SK_SCOREL libLNew = new T_SK_SCOREL(); libLNew.ORG_ID = orgId; libLNew.ID = id.Value; libLNew.NAME = jtExsist?.NAME; libLNew.CODE = jtExsist?.CODE; libLNew.JT_SYNC = true; libLNew.SCORE = jtExsist == null ? 0 : jtExsist.SCORE; libLList.Add(libLNew); } } } //查LEC List libEList = new List(); var libEIds = jtLibs.Where(m => m.SCOREE_ID != null).Select(t => t.SCOREE_ID).Distinct().ToList(); var libEs = this.GetEntities(t => libEIds.Contains(t.ID), new BaseFilter(orgId)); if (libEIds != null && libEIds.Any()) { foreach (var id in libEIds) { var exsist = libEs.FirstOrDefault(t => t.ID == id && t.JT_SYNC); var jtExsist = jtlibEs.FirstOrDefault(t => t.ID == id); if (exsist != null) { //存在,更新 T_SK_SCOREE libENew = new T_SK_SCOREE(); libENew = exsist; libENew.NAME = jtExsist?.NAME; libENew.CODE = jtExsist?.CODE; libENew.SCORE = jtExsist == null ? 0 : jtExsist.SCORE; libEList.Add(libENew); } else { //不存在,写入 T_SK_SCOREE libENew = new T_SK_SCOREE(); libENew.ORG_ID = orgId; libENew.ID = id.Value; libENew.NAME = jtExsist?.NAME; libENew.CODE = jtExsist?.CODE; libENew.JT_SYNC = true; libENew.SCORE = jtExsist == null ? 0 : jtExsist.SCORE; libEList.Add(libENew); } } } //查LEC List libCList = new List(); var libCIds = jtLibs.Where(m => m.SCOREC_ID != null).Select(t => t.SCOREC_ID).Distinct().ToList(); var libCs = this.GetEntities(t => libCIds.Contains(t.ID), new BaseFilter(orgId)); if (libCIds == null && libCIds.Any()) { foreach (var id in libCIds) { var exsist = libCs.FirstOrDefault(t => t.ID == id && t.JT_SYNC); var jtExsist = jtlibCs.FirstOrDefault(t => t.ID == id); if (exsist != null) { //存在,更新 T_SK_SCOREC libCNew = new T_SK_SCOREC(); libCNew = exsist; libCNew.NAME = jtExsist?.NAME; libCNew.CODE = jtExsist?.CODE; libCNew.SCORE = jtExsist == null ? 0 : jtExsist.SCORE; libCList.Add(libCNew); } else { //不存在,写入 T_SK_SCOREC libCNew = new T_SK_SCOREC(); libCNew.ORG_ID = orgId; libCNew.ID = id.Value; libCNew.NAME = jtExsist?.NAME; libCNew.CODE = jtExsist?.CODE; libCNew.SCORE = jtExsist == null ? 0 : jtExsist.SCORE; libCNew.JT_SYNC = true; libCList.Add(libCNew); } } } //重新写入选中的集团数据 List libList = new List(); List detailList = new List(); List contentList = new List(); List hiddenList = new List(); List basicList = new List(); if (jtLibs != null && jtLibs.Any()) { foreach (var lib in jtLibs) { T_SK_BASIC_LIBRARY libNew = new T_SK_BASIC_LIBRARY(); libNew.ORG_ID = orgId; libNew.ID = lib.ID; libNew.PRODUCTION_UNIT_ID = lib.PRODUCTION_UNIT_ID; libNew.RISK_NAME = lib.RISK_NAME; libNew.RISK_DESCRIPTION = lib.RISK_DESCRIPTION; libNew.TYPE_ID = lib.TYPE_ID; libNew.SCOREC_ID = lib.SCOREC_ID; libNew.SCOREE_ID = lib.SCOREE_ID; libNew.SCOREL_ID = lib.SCOREL_ID; libNew.EVALUATE_SCORE = lib.EVALUATE_SCORE; libNew.EVALUATE_LEVEL = lib.EVALUATE_LEVEL; libNew.DEPARTMENT_TYPE = lib.DEPARTMENT_TYPE; libNew.EMERGENCY = lib.EMERGENCY; libNew.ENABLE_STATUS = lib.ENABLE_STATUS; libList.Add(libNew); if (lib.Nav_Details != null && lib.Nav_Details.Any()) { foreach (var item in lib.Nav_Details) { T_SK_BASIC_LIBRARY_DETAIL de = new T_SK_BASIC_LIBRARY_DETAIL(); de.ORG_ID = orgId; de.ID = item.ID; de.BASIC_LIBRARY_ID = libNew.ID; de.MEASURES_NAME = item.MEASURES_NAME; de.EMERGENCY = item.EMERGENCY; de.NUM = item.NUM; de.ROW_NO = item.ROW_NO; detailList.Add(de); if (item.Nav_DetailContents != null && item.Nav_DetailContents.Any()) { foreach (var item2 in item.Nav_DetailContents) { T_SK_BASIC_LIBRARY_DETAIL_CONTENT con = new T_SK_BASIC_LIBRARY_DETAIL_CONTENT(); con.ORG_ID = orgId; con.ID = item2.ID; con.BASIC_LIBRARY_DETAIL_ID = de.ID; con.CHECK_CONTENTS_ID = item2.CHECK_CONTENTS_ID; con.CHECK_CONTENT = item2.CHECK_CONTENT; con.CHECK_STANDARD = item2.CHECK_STANDARD; con.NUM = item2.NUM; con.ROW_NO = item2.ROW_NO; contentList.Add(con); if (item2.Nav_DetailHiddens != null && item2.Nav_DetailHiddens.Any()) { foreach (var item3 in item2.Nav_DetailHiddens) { T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN hid = new T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN(); hid.ORG_ID = orgId; hid.ID = item3.ID; hid.BASIC_LIBRARY_DETAIL_CONTENT_ID = con.ID; hid.CHECK_QUESTION_ID = item3.CHECK_QUESTION_ID; hid.HIDDEN_DESCRIPTION = item3.HIDDEN_DESCRIPTION; hid.HIDDEN_LEVEL = item3.HIDDEN_LEVEL; hid.RECTIFICATION_MEASURES = item3.RECTIFICATION_MEASURES; hid.NUM = item3.NUM; hid.ROW_NO = item3.ROW_NO; hid.CHECK_CONTENTS_ID = hid.CHECK_CONTENTS_ID; hiddenList.Add(hid); } } if (item2.Nav_DetailBasics != null && item2.Nav_DetailBasics.Any()) { foreach (var item3 in item2.Nav_DetailBasics) { T_SK_BASIC_LIBRARY_DETAIL_CONTENT_BASIC bas = new T_SK_BASIC_LIBRARY_DETAIL_CONTENT_BASIC(); bas.ORG_ID = orgId; bas.ID = item3.ID; bas.BASIC_LIBRARY_DETAIL_CONTENT_ID = con.ID; bas.LAW_ID = item3.LAW_ID; bas.CHECK_CONTENTS_ID = item3.CHECK_CONTENTS_ID; basicList.Add(bas); } } } } } } } } //查检查内容 List updateCheckConts = new List(); var checkConts = this.GetEntities(t => true, new BaseFilter(orgId)); if (contentList != null && contentList.Any()) { var conIds = contentList.Select(t => t.CHECK_CONTENTS_ID).Distinct().ToList(); //存在,更新 var conExsists = checkConts.Where(t => conIds.Contains(t.ID) && t.JT_SYNC).ToList(); if (conExsists != null && conExsists.Any()) { foreach (var conExsist in conExsists) { //检查内容 var first = jtCheckConts.FirstOrDefault(t => t.ID == conExsist.ID); if (first != null) { conExsist.ID = first.ID; conExsist.ORG_ID = orgId; conExsist.PRODUCTION_UNIT_ID = first.PRODUCTION_UNIT_ID; conExsist.Nav_ListCheckQuestion = null; conExsist.Nav_ContentsBasics = null; conExsist.CHECKCONTENT = first.CHECKCONTENT; conExsist.CHECK_STANDARD = first.CHECK_STANDARD; conExsist.JT_SYNC = true; updateCheckConts.Add(conExsist); } } } //不存在,写入 var conIdNews = conExsists.Select(t => t.ID).ToList(); var conExsistNews = conIds.Where(t => t != null && !conIdNews.Contains(t.Value)).ToList(); if (conExsistNews != null && conExsistNews.Any()) { foreach (var id in conExsistNews) { //检查内容 var first = jtCheckConts.FirstOrDefault(t => t.ID == id); if (first != null) { T_SK_CHECK_CONTENTS conExsist = new T_SK_CHECK_CONTENTS(); conExsist.ID = id.Value; conExsist.ORG_ID = orgId; conExsist.PRODUCTION_UNIT_ID = first.PRODUCTION_UNIT_ID; conExsist.Nav_ListCheckQuestion = null; conExsist.Nav_ContentsBasics = null; conExsist.CHECKCONTENT = first.CHECKCONTENT; conExsist.CHECK_STANDARD = first.CHECK_STANDARD; conExsist.JT_SYNC = true; updateCheckConts.Add(conExsist); } } } } //查检查依据(法律法规) List updateCheckLaws = new List(); List updateCheckLawTypes = new List(); List updateCheckBas = new List(); var checkContLawTypes = this.GetEntities(t => true, new BaseFilter(orgId)); var checkContLaws = this.GetEntities(t => true, new BaseFilter(orgId)); var checkContBas = this.GetEntities(t => true, new BaseFilter(orgId)); if (basicList != null && basicList.Any()) { var conIds = basicList.Select(t => t.LAW_ID).Distinct().ToList(); //存在,更新 var conExsists = checkContLaws.Where(t => conIds.Contains(t.ID) && t.JT_SYNC).ToList(); if (conExsists != null && conExsists.Any()) { foreach (var conExsist in conExsists) { //法律法规 var first = jtcheckContLaws.FirstOrDefault(t => t.ID == conExsist.ID); if (first != null) { var firstType = checkContLawTypes.FirstOrDefault(t => t.ID == first.TYPE_ID && t.JT_SYNC); if (firstType == null) { var jtFirstType = jtcheckContLawTypes.FirstOrDefault(t => t.ID == first.TYPE_ID); if (jtFirstType != null) { T_LR_LAW_TYPE lawType = new T_LR_LAW_TYPE(); lawType.ORG_ID = orgId; lawType.ID = jtFirstType.ID; lawType.NAME = jtFirstType.NAME; lawType.JT_SYNC = true; updateCheckLawTypes.Add(lawType); conExsist.ID = first.ID; conExsist.ORG_ID = orgId; conExsist.CODE = first?.CODE; conExsist.NAME = first?.NAME; conExsist.VERSION_NUM = first?.VERSION_NUM; conExsist.LAW_STATUS = first == null ? BSLawStatusEnum.现行 : first.LAW_STATUS; conExsist.UPDATE_TIME = first == null ? DateTime.Now : first.UPDATE_TIME; conExsist.EXECUTE_TIME = first == null ? DateTime.Now : first.EXECUTE_TIME; conExsist.USER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value; conExsist.TYPE_ID = first.TYPE_ID; conExsist.JT_SYNC = true; updateCheckLaws.Add(conExsist); } } else { conExsist.ID = first.ID; conExsist.ORG_ID = orgId; conExsist.CODE = first?.CODE; conExsist.NAME = first?.NAME; conExsist.VERSION_NUM = first?.VERSION_NUM; conExsist.LAW_STATUS = first == null ? BSLawStatusEnum.现行 : first.LAW_STATUS; conExsist.UPDATE_TIME = first == null ? DateTime.Now : first.UPDATE_TIME; conExsist.EXECUTE_TIME = first == null ? DateTime.Now : first.EXECUTE_TIME; conExsist.USER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value; conExsist.TYPE_ID = first.TYPE_ID; conExsist.JT_SYNC = true; updateCheckLaws.Add(conExsist); } } } } //不存在,写入 var conIdNews = conExsists.Select(t => t.ID).ToList(); var conExsistNews = conIds.Where(t => t != null && !conIdNews.Contains(t.Value)).ToList(); if (conExsistNews != null && conExsistNews.Any()) { foreach (var id in conExsistNews) { //检查依据(法律法规) var first = jtcheckContLaws.FirstOrDefault(t => t.ID == id); if (first != null) { var firstType = checkContLawTypes.FirstOrDefault(t => t.ID == first.TYPE_ID); if (firstType == null) { var jtFirstType = jtcheckContLawTypes.FirstOrDefault(t => t.ID == first.TYPE_ID); if (jtFirstType != null) { T_LR_LAW_TYPE lawType = new T_LR_LAW_TYPE(); lawType.ORG_ID = orgId; lawType.ID = jtFirstType.ID; lawType.NAME = jtFirstType.NAME; lawType.JT_SYNC = true; updateCheckLawTypes.Add(lawType); T_LR_LAW conExsist = new T_LR_LAW(); conExsist.ID = id.Value; conExsist.ORG_ID = orgId; conExsist.CODE = first?.CODE; conExsist.NAME = first?.NAME; conExsist.VERSION_NUM = first?.VERSION_NUM; conExsist.LAW_STATUS = first == null ? BSLawStatusEnum.现行 : first.LAW_STATUS; conExsist.UPDATE_TIME = first == null ? DateTime.Now : first.UPDATE_TIME; conExsist.EXECUTE_TIME = first == null ? DateTime.Now : first.EXECUTE_TIME; conExsist.USER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value; conExsist.TYPE_ID = jtFirstType.ID; conExsist.JT_SYNC = true; updateCheckLaws.Add(conExsist); } } else { T_LR_LAW conExsist = new T_LR_LAW(); conExsist.ID = id.Value; conExsist.ORG_ID = orgId; conExsist.CODE = first?.CODE; conExsist.NAME = first?.NAME; conExsist.VERSION_NUM = first?.VERSION_NUM; conExsist.LAW_STATUS = first == null ? BSLawStatusEnum.现行 : first.LAW_STATUS; conExsist.UPDATE_TIME = first == null ? DateTime.Now : first.UPDATE_TIME; conExsist.EXECUTE_TIME = first == null ? DateTime.Now : first.EXECUTE_TIME; conExsist.USER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value; conExsist.TYPE_ID = first.TYPE_ID; conExsist.JT_SYNC = true; updateCheckLaws.Add(conExsist); } } } } //检查内容子表保存 var conBasics = basicList.GroupBy(t => new { t.CHECK_CONTENTS_ID, t.LAW_ID }).ToList(); if (conBasics != null && conBasics.Any()) { foreach (var item in conBasics) { var first = checkContBas.FirstOrDefault(t => t.CHECK_CONTENTS_ID == item.Key.CHECK_CONTENTS_ID && t.LAW_ID == item.Key.LAW_ID && t.JT_SYNC); if (first == null) { //写入 var jtFirstType = jtcheckContBas.FirstOrDefault(t => t.CHECK_CONTENTS_ID == item.Key.CHECK_CONTENTS_ID && t.LAW_ID == item.Key.LAW_ID); if (jtFirstType != null) { T_SK_CHECK_CONTENTS_BASIC conBasic = new T_SK_CHECK_CONTENTS_BASIC(); conBasic.CHECK_CONTENTS_ID = item.Key.CHECK_CONTENTS_ID; conBasic.LAW_ID = item.Key.LAW_ID; conBasic.ORG_ID = orgId; conBasic.ID = jtFirstType.ID; conBasic.JT_SYNC = true; updateCheckBas.Add(conBasic); } } else { //更新 T_SK_CHECK_CONTENTS_BASIC conBasic = new T_SK_CHECK_CONTENTS_BASIC(); conBasic.CHECK_CONTENTS_ID = item.Key.CHECK_CONTENTS_ID; conBasic.LAW_ID = item.Key.LAW_ID; conBasic.ORG_ID = orgId; conBasic.ID = first.ID; conBasic.JT_SYNC = true; updateCheckBas.Add(conBasic); } } } } //查隐患描述 List updateCheckQues = new List(); var checkContHids = this.GetEntities(t => true, new BaseFilter(orgId)); if (hiddenList != null && hiddenList.Any()) { var conIds = hiddenList.Select(t => t.CHECK_QUESTION_ID).Distinct().ToList(); //存在,更新 var conExsists = checkContHids.Where(t => conIds.Contains(t.ID) && t.JT_SYNC).ToList(); if (conExsists != null && conExsists.Any()) { foreach (var conExsist in conExsists) { //隐患描述 var first = jtCheckContHids.FirstOrDefault(t => t.ID == conExsist.ID); if (first != null) { conExsist.ID = first.ID; conExsist.ORG_ID = orgId; conExsist.QUESTION_LEVEL = first.QUESTION_LEVEL; conExsist.DEMAND = first.DEMAND; conExsist.DESCREPTION = first.DESCREPTION; conExsist.CHECK_CONTENTS_ID = first.CHECK_CONTENTS_ID; conExsist.JT_SYNC = true; updateCheckQues.Add(conExsist); } } } //不存在,写入 var conIdNews = conExsists.Select(t => t.ID).ToList(); var conExsistNews = conIds.Where(t => t != null && !conIdNews.Contains(t.Value)).ToList(); if (conExsistNews != null && conExsistNews.Any()) { foreach (var id in conExsistNews) { //隐患描述 var first = jtCheckContHids.FirstOrDefault(t => t.ID == id); if (first != null) { T_SK_CHECK_QUESTION conExsist = new T_SK_CHECK_QUESTION(); conExsist.ID = id.Value; conExsist.ORG_ID = orgId; conExsist.QUESTION_LEVEL = first.QUESTION_LEVEL; conExsist.DEMAND = first.DEMAND; conExsist.DESCREPTION = first.DESCREPTION; conExsist.CHECK_CONTENTS_ID = first.CHECK_CONTENTS_ID; conExsist.JT_SYNC = true; updateCheckQues.Add(conExsist); } } } } this.UnifiedCommit(() => { if (proUnitList != null && proUnitList.Any()) BantchSaveEntityNoCommit(proUnitList); if (riskTypeList != null && riskTypeList.Any()) BantchSaveEntityNoCommit(riskTypeList); if (libLList != null && libLList.Any()) BantchSaveEntityNoCommit(libLList); if (libEList != null && libEList.Any()) BantchSaveEntityNoCommit(libEList); if (libCList != null && libCList.Any()) BantchSaveEntityNoCommit(libCList); if (updateCheckLawTypes != null && updateCheckLawTypes.Any()) BantchSaveEntityNoCommit(updateCheckLawTypes); if (updateCheckLaws != null && updateCheckLaws.Any()) BantchSaveEntityNoCommit(updateCheckLaws); if (updateCheckConts != null && updateCheckConts.Any()) BantchSaveEntityNoCommit(updateCheckConts); if (updateCheckQues != null && updateCheckQues.Any()) BantchSaveEntityNoCommit(updateCheckQues); if (updateCheckBas != null && updateCheckBas.Any()) BantchSaveEntityNoCommit(updateCheckBas); if (deleteBasBasicIds != null && deleteBasBasicIds.Any()) this.BantchDeleteEntityNoCommit(deleteBasBasicIds); if (deleteBasHiddenIds != null && deleteBasHiddenIds.Any()) this.BantchDeleteEntityNoCommit(deleteBasHiddenIds); if (deleteBasConttentIds != null && deleteBasConttentIds.Any()) this.BantchDeleteEntityNoCommit(deleteBasConttentIds); if (deleteBasDetailIds != null && deleteBasDetailIds.Any()) this.BantchDeleteEntityNoCommit(deleteBasDetailIds); if (deleteBasIds != null && deleteBasIds.Any()) this.BantchDeleteEntityNoCommit(deleteBasIds); if (libList != null && libList.Any()) BantchSaveEntityNoCommit(libList); if (detailList != null && detailList.Any()) BantchSaveEntityNoCommit(detailList); if (contentList != null && contentList.Any()) BantchSaveEntityNoCommit(contentList); if (hiddenList != null && hiddenList.Any()) BantchSaveEntityNoCommit(hiddenList); if (basicList != null && basicList.Any()) BantchSaveEntityNoCommit(basicList); }); return true; }); } /// /// 获取导入数据 /// 参考 [Route("api/PF/Import")] /// /// [HttpPost, Route("GetImportData")] public JsonActionResult GetImportData() { return SafeExecute(() => { 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 startRowIndexs = new Dictionary(); startRowIndexs.Add(0, 2);//根据Excel格式数据赋值 var dataTables = FileUtils.ReadExcelByOledb(filePath, startRowIndexs); string Msg = string.Empty; bool isOK = InsertModel(dataTables.Tables[0], orgId, ref Msg); try { System.IO.File.Delete(filePath); } catch { } result.Data = Msg; result.MessageList = new List { Msg }; } return result; }); } /// /// 数据插入 /// /// /// /// /// /// /// 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; //基础库 var libs = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(orgId)); //风险类别 var riskTypes = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(orgId)); //LEC var libLs = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(orgId)); var libEs = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(orgId)); var libCs = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(orgId)); //生产单元 var proUnits = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(orgId)); //检查内容 var checkCons = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(orgId)); //检查依据 var checkBas = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(orgId)); //隐患描述 var checkHids = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(orgId)); //先做一次非空判断 for (int i = 0; i < rowAll; i++) { if (string.IsNullOrEmpty(dtSource.Rows[i][0].ToString().Trim()) || string.IsNullOrEmpty(dtSource.Rows[i][1].ToString().Trim()) || string.IsNullOrEmpty(dtSource.Rows[i][2].ToString().Trim()) || string.IsNullOrEmpty(dtSource.Rows[i][3].ToString().Trim()) || string.IsNullOrEmpty(dtSource.Rows[i][4].ToString().Trim()) || string.IsNullOrEmpty(dtSource.Rows[i][5].ToString().Trim()) || string.IsNullOrEmpty(dtSource.Rows[i][6].ToString().Trim()) ) { Msg = Msg + "第" + (i + 3) + "行生产单元,风险名称,风险描述,风险类别,风险评价L,风险评价E,风险评价C不能为空,请先检查所有字段内容;"; } } if (!string.IsNullOrEmpty(Msg)) { throw new Exception(Msg); } //基础数据判断 for (int i = 0; i < rowAll; i++) { var proUnit = dtSource.Rows[i][0].ToString().Trim(); var proUnitFirst = proUnits.FirstOrDefault(t => t.NAME == proUnit); if (proUnitFirst == null) { Msg = Msg + "第" + (i + 3) + "行生产单元" + proUnit + "不存在,请先到系统管理维护;"; } var riskType = dtSource.Rows[i][3].ToString().Trim(); var riskTypeFirst = riskTypes.FirstOrDefault(t => t.NAME == riskType); if (riskTypeFirst == null) { Msg = Msg + "第" + (i + 3) + "行风险类别" + riskType + "不存在,请先到系统管理维护;"; } else { var libFirst = libs.FirstOrDefault(t => t.PRODUCTION_UNIT_ID == proUnitFirst.ID && t.TYPE_ID == riskTypeFirst.ID && t.RISK_NAME == dtSource.Rows[i][1].ToString().Trim() && t.RISK_DESCRIPTION == dtSource.Rows[i][2].ToString().Trim()); if (libFirst != null) { Msg = Msg + "第" + (i + 3) + "行风险名称" + dtSource.Rows[i][1].ToString().Trim() + "已存在库中,请勿重复导入;"; } } var libL = dtSource.Rows[i][4].ToString().Trim(); if (!string.IsNullOrEmpty(libL)) { var libLFirst = libLs.FirstOrDefault(t => t.SCORE == decimal.Parse(libL)); if (libLFirst == null) { Msg = Msg + "第" + (i + 3) + "行风险评价L" + libL + "不存在,请先到系统管理维护;"; } } var libE = dtSource.Rows[i][5].ToString().Trim(); if (!string.IsNullOrEmpty(libE)) { var libEFirst = libEs.FirstOrDefault(t => t.SCORE == decimal.Parse(libE)); if (libEFirst == null) { Msg = Msg + "第" + (i + 3) + "行风险评价E" + libE + "不存在,请先到系统管理维护;"; } } var libC = dtSource.Rows[i][6].ToString().Trim(); if (!string.IsNullOrEmpty(libC)) { var libCFirst = libCs.FirstOrDefault(t => t.SCORE == decimal.Parse(libC)); if (libCFirst == null) { Msg = Msg + "第" + (i + 3) + "行风险评价C" + libC + "不存在,请先到系统管理维护;"; } } //var riskLevel = dtSource.Rows[i][8].ToString().Trim(); //if (riskLevel != "重大风险" && riskLevel != "较大风险" && riskLevel != "一般风险" && riskLevel != "低风险") //{ // Msg = Msg + "第" + (i + 3) + "行风险等级只能填写重大风险、较大风险、一般风险、低风险,请修改" + riskLevel + ";"; //} //var controlLevel = dtSource.Rows[i][9].ToString().Trim(); //if (controlLevel != "_5_" && controlLevel != "_10_" && controlLevel != "_15_" && controlLevel != "_20_" // && controlLevel != "_5_10_" && controlLevel != "_10_15_" && controlLevel != "_15_20_" && controlLevel != "_5_10_15_" // && controlLevel != "_10_15_20_" && controlLevel != "_5_10_15_20_") //{ // Msg = Msg + "第" + (i + 3) + "行管控层级格式不确,请修改" + controlLevel + ";"; //} if (!string.IsNullOrEmpty(dtSource.Rows[i][11].ToString().Trim())) { var lists = dtSource.Rows[i][11].ToString().Trim().Split("。").ToList(); if (lists != null && lists.Any()) { foreach (var item in lists) { if (!string.IsNullOrEmpty(item)) { if (!item.Contains("*")) { Msg = Msg + "第" + (i + 3) + "行管控措施" + item + "格式不正确,请检查修改;"; } } } } } if (!string.IsNullOrEmpty(dtSource.Rows[i][12].ToString().Trim())) { var lists = dtSource.Rows[i][12].ToString().Trim().Split("?").ToList(); if (lists != null && lists.Any()) { foreach (var item in lists) { if (!string.IsNullOrEmpty(item)) { var conTemps = item.Split("?").ToList(); if (conTemps != null && conTemps.Any()) { foreach (var con in conTemps) { if (!string.IsNullOrEmpty(con)) { if (con.Contains("*")) { var temp = con.Split("*")[1] + "?"; var conFirst = checkCons.FirstOrDefault(t => t.CHECKCONTENT == temp); if (conFirst == null) { Msg = Msg + "第" + (i + 3) + "行检查内容" + temp + "不存在,请先到系统管理维护;"; } } else { Msg = Msg + "第" + (i + 3) + "行检查内容" + con + "?格式不正确,请检查修改;"; } } } } } } } } } if (!string.IsNullOrEmpty(Msg)) { throw new Exception(Msg); } //导入 List libList = new List(); List libDetList = new List(); List libConList = new List(); List libBasicList = new List(); List libHidList = new List(); for (int i = 0; i < rowAll; i++) { var proUnit = dtSource.Rows[i][0].ToString().Trim(); var proUnitFirst = proUnits.FirstOrDefault(t => t.NAME == proUnit); var riskName = dtSource.Rows[i][1].ToString().Trim(); var riskDescript = dtSource.Rows[i][2].ToString().Trim(); var riskType = dtSource.Rows[i][3].ToString().Trim(); var riskTypeFirst = riskTypes.FirstOrDefault(t => t.NAME == riskType); var libL = dtSource.Rows[i][4].ToString().Trim(); var libLFirst = string.IsNullOrEmpty(libL)?null: libLs.FirstOrDefault(t => t.SCORE == decimal.Parse(libL)); var libE = dtSource.Rows[i][5].ToString().Trim(); var libEFirst = string.IsNullOrEmpty(libE) ? null:libEs.FirstOrDefault(t => t.SCORE == decimal.Parse(libE)); var libC = dtSource.Rows[i][6].ToString().Trim(); var libCFirst = string.IsNullOrEmpty(libC) ? null : libCs.FirstOrDefault(t => t.SCORE == decimal.Parse(libC)); //var riskLevel = dtSource.Rows[i][8].ToString().Trim(); //var controlLevel = dtSource.Rows[i][9].ToString().Trim(); var emerg = dtSource.Rows[i][10].ToString().Trim(); var mesList = dtSource.Rows[i][11].ToString().Trim(); var conList = dtSource.Rows[i][12].ToString().Trim(); T_SK_BASIC_LIBRARY lib = new T_SK_BASIC_LIBRARY(); lib.ORG_ID = orgId; lib.PRODUCTION_UNIT_ID = proUnitFirst.ID; lib.RISK_NAME = riskName; lib.RISK_DESCRIPTION = riskDescript; lib.TYPE_ID = riskTypeFirst.ID; lib.SCOREL_ID = libLFirst?.ID; lib.SCOREE_ID = libEFirst?.ID; lib.SCOREC_ID = libCFirst?.ID; lib.EVALUATE_SCORE = (lib.SCOREL_ID!=null && lib.SCOREE_ID!=null && lib.SCOREC_ID!=null)? Math.Round(libLFirst.SCORE * libEFirst.SCORE* libCFirst.SCORE,2):0; lib.CODE = DateTime.Now.ToString("yyyyMMddHH") + i.ToString().PadLeft(4, '0'); lib.EMERGENCY = emerg; lib.ENABLE_STATUS = FMEnableStatusEnum.启用; if (lib.EVALUATE_SCORE > 320) { lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.重大风险; lib.DEPARTMENT_TYPE = "_5_10_15_20_"; } else if (lib.EVALUATE_SCORE >= 160 && lib.EVALUATE_SCORE < 320) { lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.较大风险; lib.DEPARTMENT_TYPE = "_10_15_20_"; } else if (lib.EVALUATE_SCORE >= 70 && lib.EVALUATE_SCORE < 160) { lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.一般风险; lib.DEPARTMENT_TYPE = "_15_20_"; } else { lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.低风险; lib.DEPARTMENT_TYPE = "_20_"; } //switch (riskLevel) //{ // case "重大风险": // lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.重大风险; // break; // case "较大风险": // lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.较大风险; // break; // case "一般风险": // lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.一般风险; // break; // case "低风险": // lib.EVALUATE_LEVEL = SKEvaluateLevelEnum.低风险; // break; // default: break; //} libList.Add(lib); List libDetTemp = new List(); if (!string.IsNullOrEmpty(mesList)) { var lists = mesList.Split("。").ToList(); if (lists != null && lists.Any()) { foreach (var item in lists) { if (!string.IsNullOrEmpty(item)) { if (item.Contains("*")) { var num = item.Split("*")[0]; var name = item.Split("*")[1].ToString(); T_SK_BASIC_LIBRARY_DETAIL con = new T_SK_BASIC_LIBRARY_DETAIL(); con.ORG_ID = orgId; con.BASIC_LIBRARY_ID = lib.ID; con.NUM = string.IsNullOrEmpty(num.ToString()) ? null : int.Parse(num.ToString()); con.MEASURES_NAME = name +"。"; libDetList.Add(con); libDetTemp.Add(con); } //else //{ // T_SK_BASIC_LIBRARY_DETAIL con = new T_SK_BASIC_LIBRARY_DETAIL(); // con.ORG_ID = orgId; // con.BASIC_LIBRARY_ID = lib.ID; // con.MEASURES_NAME = item; // libDetList.Add(con); //} } } } } if (!string.IsNullOrEmpty(conList)) { var lists = conList.Split("?").ToList(); if (lists != null && lists.Any()) { foreach (var item in lists) { if (!string.IsNullOrEmpty(item)) { if (item.Contains("*")) { var num = item.Split("*")[0]; var name = item.Split("*")[1].ToString() + "?"; if (num.Contains(".")) { var numTemp = int.Parse(num.Split(".")[0].ToString()); var detFirst = libDetTemp.FirstOrDefault(t => t.NUM != null && t.NUM == numTemp); var conFirst = checkCons.FirstOrDefault(t => t.CHECKCONTENT == name); if (detFirst != null && conFirst != null) { T_SK_BASIC_LIBRARY_DETAIL_CONTENT con = new T_SK_BASIC_LIBRARY_DETAIL_CONTENT(); con.ORG_ID = orgId; con.BASIC_LIBRARY_DETAIL_ID = detFirst.ID; con.NUM = int.Parse(num.Split(".")[1]); con.CHECK_CONTENT = name; con.CHECK_CONTENTS_ID = conFirst.ID; con.CHECK_STANDARD = conFirst.CHECK_STANDARD; libConList.Add(con); var basTemps = checkBas.Where(t => t.CHECK_CONTENTS_ID == conFirst.ID).ToList(); if (basTemps != null && basTemps.Any()) { foreach (var bas in basTemps) { T_SK_BASIC_LIBRARY_DETAIL_CONTENT_BASIC ba = new T_SK_BASIC_LIBRARY_DETAIL_CONTENT_BASIC(); ba.ORG_ID = orgId; ba.BASIC_LIBRARY_DETAIL_CONTENT_ID = con.ID; ba.LAW_ID = bas.LAW_ID; libBasicList.Add(ba); } } var hidTemps = checkHids.Where(t => t.CHECK_CONTENTS_ID == conFirst.ID).ToList(); if (hidTemps != null && hidTemps.Any()) { foreach (var hid in hidTemps) { T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN hi = new T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN(); hi.ORG_ID = orgId; hi.BASIC_LIBRARY_DETAIL_CONTENT_ID = con.ID; hi.HIDDEN_DESCRIPTION = hid.DESCREPTION; hi.CHECK_QUESTION_ID = hid.ID; hi.HIDDEN_LEVEL = hid.QUESTION_LEVEL; hi.RECTIFICATION_MEASURES = hid.DEMAND; hi.NUM = hid.NUM; libHidList.Add(hi); } } } } } } } } } } UnifiedCommit(() => { if (libList != null && libList.Any()) BantchAddEntityNoCommit(libList); if (libDetList != null && libDetList.Any()) BantchAddEntityNoCommit(libDetList); if (libConList != null && libConList.Any()) BantchAddEntityNoCommit(libConList); if (libBasicList != null && libBasicList.Any()) BantchAddEntityNoCommit(libBasicList); if (libHidList != null && libHidList.Any()) BantchAddEntityNoCommit(libHidList); }); Msg = "导入成功!"; return true; } } }