From 26a9c2ed37d0c081908c47e6999e23bcb2275564 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: Fri, 20 Mar 2026 17:36:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E5=BA=93=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Api/OperationLinkController.cs | 14 +- .../Controllers/Api/BasicLibraryController.cs | 401 +++++++++++++++++- .../Api/CheckContentsController.cs | 119 +++++- 3 files changed, 524 insertions(+), 10 deletions(-) diff --git a/APT.MicroApi/APT.HM.WebApi/Controllers/Api/OperationLinkController.cs b/APT.MicroApi/APT.HM.WebApi/Controllers/Api/OperationLinkController.cs index 46e08bf..45cddcc 100644 --- a/APT.MicroApi/APT.HM.WebApi/Controllers/Api/OperationLinkController.cs +++ b/APT.MicroApi/APT.HM.WebApi/Controllers/Api/OperationLinkController.cs @@ -195,7 +195,7 @@ namespace APT.HM.WebApi.Controllers.Api { foreach (var safe in t.Nav_SafeConfirms.OrderBy(m=>m.NUM)) { - if (safe!=null) + if (safe!=null && !string.IsNullOrEmpty(safe.NAME)) { var safeTemp = safe.NUM + "、" + safe.NAME + ";"; t.SafeConfirmsStr = t.SafeConfirmsStr + safeTemp; @@ -206,7 +206,7 @@ namespace APT.HM.WebApi.Controllers.Api { foreach (var safe in t.Nav_SafeMeasures.OrderBy(m => m.NUM)) { - if (safe != null) + if (safe != null && !string.IsNullOrEmpty(safe.NAME)) { var safeTemp = safe.NUM + "、" + safe.NAME + ";"; t.SafeMeasuresStr = t.SafeMeasuresStr + safeTemp; @@ -217,7 +217,7 @@ namespace APT.HM.WebApi.Controllers.Api { foreach (var safe in t.Nav_DealMeasures.OrderBy(m => m.NUM)) { - if (safe != null) + if (safe != null && !string.IsNullOrEmpty(safe.NAME)) { var safeTemp = safe.NUM + "、" + safe.NAME + ";"; t.DealMeasuresStr = t.DealMeasuresStr + safeTemp; @@ -316,10 +316,6 @@ namespace APT.HM.WebApi.Controllers.Api var posts = this.GetEntities(t => !t.IS_DELETED, new BaseFilter(orgId)); //先做一次非空判断 - if (!string.IsNullOrEmpty(Msg)) - { - throw new Exception(Msg); - } for (int i = 0; i < rowAll; i++) { if (string.IsNullOrEmpty(dtSource.Rows[i][0].ToString().Trim()) || string.IsNullOrEmpty(dtSource.Rows[i][1].ToString().Trim()) @@ -330,6 +326,10 @@ namespace APT.HM.WebApi.Controllers.Api Msg = Msg + "第" + (i + 3) + "行生产单元,作业环节,任务类型,是否关键作业,作业周期,作业许可审批层级,作业许可类别,作业等级存在空数据,请先检查所有字段内容;"; } } + if (!string.IsNullOrEmpty(Msg)) + { + throw new Exception(Msg); + } //基础数据判断 for (int i = 0; i < rowAll; i++) { diff --git a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/BasicLibraryController.cs b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/BasicLibraryController.cs index c4a02e7..def046f 100644 --- a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/BasicLibraryController.cs +++ b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/BasicLibraryController.cs @@ -10,12 +10,14 @@ using APT.BaseData.Services.Services.OP; using APT.Infrastructure.Api; using APT.Infrastructure.Core; using APT.MS.Domain.Entities.FO; +using APT.MS.Domain.Entities.HM; using APT.MS.Domain.Entities.LR; 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; @@ -28,6 +30,7 @@ using System; using System.Collections.Generic; using System.Data; using System.DirectoryServices.ActiveDirectory; +using System.IO; using System.Linq; using System.Security.Policy; @@ -966,7 +969,8 @@ namespace APT.SK.WebApi.Controllers 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.MEASURES_NAME"); + pageFilter.SelectField.Add("Nav_Details.Nav_DetailContents.Nav_Contents.CHECKCONTENT"); var result = WitOrderPaged(null, pageFilter); if (result != null && result.Data != null && result.Data.Any()) { @@ -980,9 +984,22 @@ namespace APT.SK.WebApi.Controllers { if (item2 != null && !string.IsNullOrEmpty(item2.MEASURES_NAME)) { - var temp = item2.NUM + "、" + item2.MEASURES_NAME + Environment.NewLine; + 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; } } } @@ -2073,6 +2090,386 @@ namespace APT.SK.WebApi.Controllers }); 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][7].ToString().Trim()) || string.IsNullOrEmpty(dtSource.Rows[i][8].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][7].ToString().Trim(); + if (riskLevel != "重大风险" && riskLevel != "较大风险" && riskLevel != "一般风险" && riskLevel != "低风险") + { + Msg = Msg + "第" + (i + 3) + "行风险等级只能填写重大风险、较大风险、一般风险、低风险,请修改" + riskLevel + ";"; + } + var controlLevel = dtSource.Rows[i][8].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)) + { + 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 + { + var conFirst = checkCons.FirstOrDefault(t => t.CHECKCONTENT == con); + if (conFirst == null) + { + 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][7].ToString().Trim(); + var controlLevel = dtSource.Rows[i][8].ToString().Trim(); + var emerg = dtSource.Rows[i][9].ToString().Trim(); + var mesList = dtSource.Rows[i][10].ToString().Trim(); + var conList = dtSource.Rows[i][11].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.DEPARTMENT_TYPE = controlLevel; + lib.CODE = DateTime.Now.ToString("yyyyMMddHH") + i.ToString().PadLeft(4, '0'); + lib.EMERGENCY = emerg; + lib.ENABLE_STATUS = FMEnableStatusEnum.启用; + 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); + 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]; + 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.MEASURES_NAME = name; + libDetList.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]; + if (num.Contains(".")) + { + var numTemp = int.Parse(num.Split(".")[0]); + var detFirst = libDetList.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 = numTemp; + 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; + 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; } } } diff --git a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/CheckContentsController.cs b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/CheckContentsController.cs index 32e9fe9..4161863 100644 --- a/APT.MicroApi/APT.SK.WebApi/Controllers/Api/CheckContentsController.cs +++ b/APT.MicroApi/APT.SK.WebApi/Controllers/Api/CheckContentsController.cs @@ -195,7 +195,7 @@ namespace APT.SK.WebApi.Controllers.Api startRowIndexs.Add(0, 1);//根据Excel格式数据赋值 var dataTables = FileUtils.ReadExcelByOledb(filePath, startRowIndexs); string Msg = string.Empty; - isOK = InsertModel2(dataTables.Tables[0], orgId, ref Msg); + isOK = InsertModel3(dataTables.Tables[0], orgId, ref Msg); try { @@ -565,6 +565,123 @@ namespace APT.SK.WebApi.Controllers.Api Msg = "导入成功!"; } return true; + } + /// + /// 导入 + /// + /// + /// + /// + /// + /// + /// + public bool InsertModel3(DataTable dtSource, Guid? orgId, ref string Msg, int rowIndex = 1) + { + var userId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID; + if (dtSource == null || dtSource.Rows.Count < rowIndex) + { + Msg = "未获取到导入数据"; + throw new Exception(Msg); + } + int rowAll = dtSource.Rows.Count; + if (rowAll == 1) + { + throw new Exception("导入必须两条以上,一条请直接新增"); + } + List contents = new List(); + List qustions = new List(); + List qustionTemps = new List(); + var baseFilter = new BaseFilter(orgId); + var productionUnits = this.GetEntities(i => i.IS_DELETED == false, baseFilter); + var oldContents = this.GetEntities(i => i.IS_DELETED == false, baseFilter); + var oldHiddens = this.GetEntities(i => i.IS_DELETED == false, baseFilter); + + for (int i = 0; i < rowAll; i++) + { + if (!string.IsNullOrEmpty(dtSource.Rows[i][0].ToString().Trim())) + { + var unit = productionUnits.FirstOrDefault(t => t.NAME == dtSource.Rows[i][0].ToString().Trim()); + if (unit == null)//旧表已存在数据 + { + Msg = Msg + "生产单元:" + dtSource.Rows[i][0].ToString().Trim() + "不存在,请先到系统管理添加;"; + + } + else + { + T_SK_CHECK_QUESTION content = new T_SK_CHECK_QUESTION(); + content.ORG_ID = orgId; + content.CHECKCONTENT = dtSource.Rows[i][1].ToString().Replace("\n","").Trim(); + content.CHECK_BASICS = dtSource.Rows[i][2].ToString().Replace("\n", "").Trim(); + content.CHECK_STANDARD = dtSource.Rows[i][3].ToString().Replace("\n", "").Trim(); + content.DESCREPTION = dtSource.Rows[i][4].ToString().Replace("\n", "").Trim(); + content.QUESTION_LEVEL = SKHiddenLevel.General; + content.DEMAND = dtSource.Rows[i][6].ToString().Replace("\n", "").Trim(); + content.PRODUCTION_UNIT_ID = unit?.ID; + qustionTemps.Add(content); + } + } + } + if (qustionTemps != null && qustionTemps.Any()) + { + foreach (var item in qustionTemps) + { + var conFirsts = item.CHECKCONTENT.Split("?").ToList(); + var queFirsts = item.DESCREPTION.Split("。").ToList(); + var mesFirsts = item.DEMAND.Split("。").ToList(); + if (conFirsts != null && conFirsts.Any()) + { + foreach (var first in conFirsts) + { + if (!string.IsNullOrEmpty(first)) + { + var num = first.Split("*")[0]; + var con = first.Split("*")[1]; + T_SK_CHECK_CONTENTS content = new T_SK_CHECK_CONTENTS(); + content.ORG_ID = orgId; + content.PRODUCTION_UNIT_ID = item.PRODUCTION_UNIT_ID; + content.CHECKCONTENT = con; + contents.Add(content); + var ques = queFirsts.Where(t => t.StartsWith(num)).ToList(); + if (ques != null && ques.Any()) + { + var j = 0; + foreach (var que in ques) + { + var quNum = que.Split("*")[0]; + var mes = mesFirsts.FirstOrDefault(t => t.StartsWith(quNum)); + 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 = item.QUESTION_LEVEL; + qu.NUM = j; + qustions.Add(qu); + j++; + } + } + } + } + } + } + + } + if (!string.IsNullOrEmpty(Msg)) + { + throw new Exception(Msg); + } + else + { + UnifiedCommit(() => + { + if (contents != null && contents.Any()) + BantchSaveEntityNoCommit(contents); + if (qustions != null && qustions.Any()) + BantchSaveEntityNoCommit(qustions); + }); + Msg = "导入成功!"; + } + return true; } } }