mh_jy_safe/APT.MicroApi/APT.SK.WebApi/Controllers/Api/CheckSetController.cs

1079 lines
59 KiB
C#
Raw Normal View History

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