This commit is contained in:
wyw 2026-03-23 08:55:58 +08:00
commit 5c7d2a5a0b
3 changed files with 524 additions and 10 deletions

View File

@ -195,7 +195,7 @@ namespace APT.HM.WebApi.Controllers.Api
{ {
foreach (var safe in t.Nav_SafeConfirms.OrderBy(m=>m.NUM)) 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 + ""; var safeTemp = safe.NUM + "、" + safe.NAME + "";
t.SafeConfirmsStr = t.SafeConfirmsStr + safeTemp; 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)) 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 + ""; var safeTemp = safe.NUM + "、" + safe.NAME + "";
t.SafeMeasuresStr = t.SafeMeasuresStr + safeTemp; 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)) 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 + ""; var safeTemp = safe.NUM + "、" + safe.NAME + "";
t.DealMeasuresStr = t.DealMeasuresStr + safeTemp; t.DealMeasuresStr = t.DealMeasuresStr + safeTemp;
@ -316,10 +316,6 @@ namespace APT.HM.WebApi.Controllers.Api
var posts = this.GetEntities<T_FM_USER_POST>(t => !t.IS_DELETED, new BaseFilter(orgId)); var posts = this.GetEntities<T_FM_USER_POST>(t => !t.IS_DELETED, new BaseFilter(orgId));
//先做一次非空判断 //先做一次非空判断
if (!string.IsNullOrEmpty(Msg))
{
throw new Exception(Msg);
}
for (int i = 0; i < rowAll; i++) for (int i = 0; i < rowAll; i++)
{ {
if (string.IsNullOrEmpty(dtSource.Rows[i][0].ToString().Trim()) || string.IsNullOrEmpty(dtSource.Rows[i][1].ToString().Trim()) 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) + "行生产单元,作业环节,任务类型,是否关键作业,作业周期,作业许可审批层级,作业许可类别,作业等级存在空数据,请先检查所有字段内容;"; Msg = Msg + "第" + (i + 3) + "行生产单元,作业环节,任务类型,是否关键作业,作业周期,作业许可审批层级,作业许可类别,作业等级存在空数据,请先检查所有字段内容;";
} }
} }
if (!string.IsNullOrEmpty(Msg))
{
throw new Exception(Msg);
}
//基础数据判断 //基础数据判断
for (int i = 0; i < rowAll; i++) for (int i = 0; i < rowAll; i++)
{ {

View File

@ -10,12 +10,14 @@ using APT.BaseData.Services.Services.OP;
using APT.Infrastructure.Api; using APT.Infrastructure.Api;
using APT.Infrastructure.Core; using APT.Infrastructure.Core;
using APT.MS.Domain.Entities.FO; using APT.MS.Domain.Entities.FO;
using APT.MS.Domain.Entities.HM;
using APT.MS.Domain.Entities.LR; using APT.MS.Domain.Entities.LR;
using APT.MS.Domain.Entities.SK; using APT.MS.Domain.Entities.SK;
using APT.MS.Domain.Enums; using APT.MS.Domain.Enums;
using APT.MS.Domain.Enums.SK; using APT.MS.Domain.Enums.SK;
using APT.SK.WebApi.Controllers.Api; using APT.SK.WebApi.Controllers.Api;
using APT.Utility; using APT.Utility;
using Castle.Core.Internal;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Data.SqlClient; using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
@ -28,6 +30,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data; using System.Data;
using System.DirectoryServices.ActiveDirectory; using System.DirectoryServices.ActiveDirectory;
using System.IO;
using System.Linq; using System.Linq;
using System.Security.Policy; using System.Security.Policy;
@ -966,7 +969,8 @@ namespace APT.SK.WebApi.Controllers
pageFilter.Include.Add("Nav_Type"); pageFilter.Include.Add("Nav_Type");
pageFilter.Include.Add("Nav_ProductionUnit"); pageFilter.Include.Add("Nav_ProductionUnit");
pageFilter.SelectField.Add("Nav_Details.NUM"); 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); var result = WitOrderPaged(null, pageFilter);
if (result != null && result.Data != null && result.Data.Any()) 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)) 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.MINE_NAME = item.MINE_NAME + temp;
item.MEASURE = item.MEASURE + 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; return true;
}); });
}
/// <summary>
/// 获取导入数据
/// 参考 [Route("api/PF/Import")]
/// </summary>
/// <returns></returns>
[HttpPost, Route("GetImportData")]
public JsonActionResult<ImportDataModel> GetImportData()
{
return SafeExecute<ImportDataModel>(() =>
{
var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId;
var httpRequest = this.HttpContext.Request;
string orgIdStr = httpRequest.Form["OrgId"];// 获取 组织
ImportDataModel result = new ImportDataModel();
var dic = Path.Combine(System.AppContext.BaseDirectory, "tempImportFiles");
if (!Directory.Exists(dic))
Directory.CreateDirectory(dic);
foreach (var key in httpRequest.Form.Files) // 文件键
{
var postedFile = key; // 获取文件键对应的文件对象
string filePath = Path.Combine(dic, DateTime.Now.ToString("yyyy_MM_dd_hh_mm_ss") + "_" + postedFile.FileName);
Byte[] fileData = new Byte[postedFile.Length];
Stream sr = postedFile.OpenReadStream();//创建数据流对象
sr.Read(fileData, 0, (int)postedFile.Length);
using (FileStream fs = new FileStream(filePath, FileMode.CreateNew))
{
fs.Write(fileData, 0, fileData.Length);
fs.Flush();
fs.Close();
}
//获取数据
Dictionary<int, int> startRowIndexs = new Dictionary<int, int>();
startRowIndexs.Add(0, 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<string> { Msg };
}
return result;
});
}
/// <summary>
/// 数据插入
/// </summary>
/// <param name="dtSource"></param>
/// <param name="OrgID"></param>
/// <param name="Msg"></param>
/// <param name="rowIndex"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
public bool InsertModel(DataTable dtSource, Guid? orgId, ref string Msg, int rowIndex = 1)
{
var userId = APT.Infrastructure.Api.AppContext.CurrentSession.UserID;
if (dtSource == null || dtSource.Rows.Count < rowIndex)
{
Msg = "未获取到导入数据";
throw new Exception(Msg);
}
int rowAll = dtSource.Rows.Count;
//基础库
var libs = this.GetEntities<T_SK_BASIC_LIBRARY>(t => !t.IS_DELETED, new BaseFilter(orgId));
//风险类别
var riskTypes = this.GetEntities<T_SK_RISK_TYPE>(t => !t.IS_DELETED, new BaseFilter(orgId));
//LEC
var libLs = this.GetEntities<T_SK_SCOREL>(t => !t.IS_DELETED, new BaseFilter(orgId));
var libEs = this.GetEntities<T_SK_SCOREE>(t => !t.IS_DELETED, new BaseFilter(orgId));
var libCs = this.GetEntities<T_SK_SCOREC>(t => !t.IS_DELETED, new BaseFilter(orgId));
//生产单元
var proUnits = this.GetEntities<T_FM_USER_PRODUCTION_UNIT_SET>(t => !t.IS_DELETED, new BaseFilter(orgId));
//检查内容
var checkCons = this.GetEntities<T_SK_CHECK_CONTENTS>(t => !t.IS_DELETED, new BaseFilter(orgId));
//检查依据
var checkBas = this.GetEntities<T_SK_CHECK_CONTENTS_BASIC>(t => !t.IS_DELETED, new BaseFilter(orgId));
//隐患描述
var checkHids = this.GetEntities<T_SK_CHECK_QUESTION>(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<T_SK_BASIC_LIBRARY> libList = new List<T_SK_BASIC_LIBRARY>();
List<T_SK_BASIC_LIBRARY_DETAIL> libDetList = new List<T_SK_BASIC_LIBRARY_DETAIL>();
List<T_SK_BASIC_LIBRARY_DETAIL_CONTENT> libConList = new List<T_SK_BASIC_LIBRARY_DETAIL_CONTENT>();
List<T_SK_BASIC_LIBRARY_DETAIL_CONTENT_BASIC> libBasicList = new List<T_SK_BASIC_LIBRARY_DETAIL_CONTENT_BASIC>();
List<T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN> libHidList = new List<T_SK_BASIC_LIBRARY_DETAIL_CONTENT_HIDDEN>();
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;
} }
} }
} }

View File

@ -195,7 +195,7 @@ namespace APT.SK.WebApi.Controllers.Api
startRowIndexs.Add(0, 1);//根据Excel格式数据赋值 startRowIndexs.Add(0, 1);//根据Excel格式数据赋值
var dataTables = FileUtils.ReadExcelByOledb(filePath, startRowIndexs); var dataTables = FileUtils.ReadExcelByOledb(filePath, startRowIndexs);
string Msg = string.Empty; string Msg = string.Empty;
isOK = InsertModel2(dataTables.Tables[0], orgId, ref Msg); isOK = InsertModel3(dataTables.Tables[0], orgId, ref Msg);
try try
{ {
@ -565,6 +565,123 @@ namespace APT.SK.WebApi.Controllers.Api
Msg = "导入成功!"; Msg = "导入成功!";
} }
return true; return true;
}
/// <summary>
/// 导入
/// </summary>
/// <param name="dtSource"></param>
/// <param name="orgId"></param>
/// <param name="Msg"></param>
/// <param name="rowIndex"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
public bool 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<T_SK_CHECK_CONTENTS> contents = new List<T_SK_CHECK_CONTENTS>();
List<T_SK_CHECK_QUESTION> qustions = new List<T_SK_CHECK_QUESTION>();
List<T_SK_CHECK_QUESTION> qustionTemps = new List<T_SK_CHECK_QUESTION>();
var baseFilter = new BaseFilter(orgId);
var productionUnits = this.GetEntities<T_FM_USER_PRODUCTION_UNIT_SET>(i => i.IS_DELETED == false, baseFilter);
var oldContents = this.GetEntities<T_SK_CHECK_CONTENTS>(i => i.IS_DELETED == false, baseFilter);
var oldHiddens = this.GetEntities<T_SK_CHECK_QUESTION>(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;
} }
} }
} }