From 91c3c2efa2f9d05171bbdeadee045acdc2b21959 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E7=BE=8E=E8=8D=A3?= <10755671+mei-rong-he@user.noreply.gitee.com> Date: Wed, 1 Apr 2026 15:41:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E5=BA=93=E4=BB=8E=E9=9B=86?= =?UTF-8?q?=E5=9B=A2=E5=AF=BC=E5=85=A5=E6=8A=A5=E9=94=99=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Api/BasicLibraryController.cs | 865 +++++++++++++++++- .../Api/CheckContentsController.cs | 23 +- 2 files changed, 867 insertions(+), 21 deletions(-) diff --git a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/BasicLibraryController.cs b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/BasicLibraryController.cs index 0037b52..2b1a389 100644 --- a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/BasicLibraryController.cs +++ b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/BasicLibraryController.cs @@ -9,9 +9,11 @@ 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; @@ -32,6 +34,7 @@ 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 @@ -1270,13 +1273,13 @@ namespace APT.SK.WebApi.Controllers } /// - /// 获取集团基础库 + /// 获取集团基础库(旧) /// /// 过滤实体 /// - [HttpPost, Route("JTOrderEntities")] - public JsonActionResult> JTOrderEntities([FromBody] KeywordFilter filter) + [HttpPost, Route("JTOrderEntitiesOld")] + public JsonActionResult> JTOrderEntitiesOld([FromBody] KeywordFilter filter) { var result = new JsonActionResult>(); string strConn = OPTenantDBConnService.GetConnByORGID(Guid.Parse("00300000-0000-0000-0000-000000000000")); @@ -1483,12 +1486,209 @@ namespace APT.SK.WebApi.Controllers 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("ImportFormJT")] - public JsonActionResult ImportFormJT([FromBody] KeywordFilter filter) + [HttpPost, Route("ImportFormJTOld")] + public JsonActionResult ImportFormJTOld([FromBody] KeywordFilter filter) { return SafeExecute(() => { @@ -2092,6 +2292,645 @@ namespace APT.SK.WebApi.Controllers 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")] @@ -2296,7 +3135,7 @@ namespace APT.SK.WebApi.Controllers { if (con.Contains("*")) { - var temp = con.Split("*")[1]; + var temp = con.Split("*")[1] + "?"; var conFirst = checkCons.FirstOrDefault(t => t.CHECKCONTENT == temp); if (conFirst == null) { @@ -2305,7 +3144,7 @@ namespace APT.SK.WebApi.Controllers } else { - Msg = Msg + "第" + (i + 3) + "行检查内容" + con + "格式不正确,请检查修改;"; + Msg = Msg + "第" + (i + 3) + "行检查内容" + con + "?格式不正确,请检查修改;"; } } } @@ -2408,11 +3247,11 @@ namespace APT.SK.WebApi.Controllers if (item.Contains("*")) { var num = item.Split("*")[0]; - var name = item.Split("*")[1]; + 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) ? null : int.Parse(num); + con.NUM = string.IsNullOrEmpty(num.ToString()) ? null : int.Parse(num.ToString()); con.MEASURES_NAME = name +"。"; libDetList.Add(con); libDetTemp.Add(con); @@ -2441,10 +3280,10 @@ namespace APT.SK.WebApi.Controllers if (item.Contains("*")) { var num = item.Split("*")[0]; - var name = item.Split("*")[1]; + var name = item.Split("*")[1].ToString() + "?"; if (num.Contains(".")) { - var numTemp = int.Parse(num.Split(".")[0]); + 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) @@ -2453,7 +3292,7 @@ namespace APT.SK.WebApi.Controllers con.ORG_ID = orgId; con.BASIC_LIBRARY_DETAIL_ID = detFirst.ID; con.NUM = int.Parse(num.Split(".")[1]); - con.CHECK_CONTENT = name +"?"; + con.CHECK_CONTENT = name; con.CHECK_CONTENTS_ID = conFirst.ID; con.CHECK_STANDARD = conFirst.CHECK_STANDARD; libConList.Add(con); diff --git a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/CheckContentsController.cs b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/CheckContentsController.cs index f36d5de..ddddd8b 100644 --- a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/CheckContentsController.cs +++ b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/CheckContentsController.cs @@ -649,10 +649,17 @@ namespace APT.SK.WebApi.Controllers.Api } if (!string.IsNullOrEmpty(dtSource.Rows[i][1].ToString().Trim())) { - var conFirst = oldContents.FirstOrDefault(t => t.CHECKCONTENT == dtSource.Rows[i][1].ToString().Trim()); - if (conFirst != null) + if (!dtSource.Rows[i][1].ToString().Trim().EndsWith("?")) { - Msg = Msg + "第" + (i + 3) + "行检查内容" + dtSource.Rows[i][1].ToString().Trim() + "已存在,请勿重复导入;"; + Msg = Msg + "第" + (i + 3) + "行检查内容" + dtSource.Rows[i][1].ToString().Trim() + "格式不正确,必须以中文问号结尾 ;"; + } + else + { + var conFirst = oldContents.FirstOrDefault(t => t.CHECKCONTENT == dtSource.Rows[i][1].ToString().Trim()); + if (conFirst != null) + { + Msg = Msg + "第" + (i + 3) + "行检查内容" + dtSource.Rows[i][1].ToString().Trim() + "已存在,请勿重复导入;"; + } } } else @@ -727,7 +734,7 @@ namespace APT.SK.WebApi.Controllers.Api } else { - if (item.Split('*')[1] != "一般" && item.Split('*')[1] != "重大") + if (item.Split('*')[1].ToString() != "一般" && item.Split('*')[1].ToString() != "重大") { Msg = Msg + "第" + (i + 3) + "行隐患等级只能填写一般或重大"; } @@ -808,10 +815,10 @@ namespace APT.SK.WebApi.Controllers.Api T_SK_CHECK_QUESTION qu = new T_SK_CHECK_QUESTION(); qu.CHECK_CONTENTS_ID = content.ID; qu.ORG_ID = orgId; - qu.DESCREPTION = que.Split('*')[1]+"。"; - qu.DEMAND = mes.Split("*")[1] + "。"; - qu.QUESTION_LEVEL = level != null && level.Split("*")[1] == "重大" ? SKHiddenLevel.Major : SKHiddenLevel.General; - qu.NUM = int.Parse(que.Split('*')[0]); + qu.DESCREPTION = que.Split('*')[1].ToString()+"。"; + qu.DEMAND = mes.Split("*")[1].ToString() + "。"; + qu.QUESTION_LEVEL = level != null && level.Split("*")[1].ToString() == "重大" ? SKHiddenLevel.Major : SKHiddenLevel.General; + qu.NUM = int.Parse(que.Split('*')[0].ToString()); qustions.Add(qu); } }