mh_jy_safe/APT.MicroApi/APT.SK.WebApi/Controllers/Api/CheckSetController.cs
2025-09-20 13:03:07 +08:00

1105 lines
61 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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>();
List<T_SK_CHECK_SET_CONTENTS_AREA> areas = new List<T_SK_CHECK_SET_CONTENTS_AREA>();
List<T_SK_CHECK_SET_CONTENTS_AREA_RISK> risks = new List<T_SK_CHECK_SET_CONTENTS_AREA_RISK>();
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;
if (item.Nav_ContentsAreas != null && item.Nav_ContentsAreas.Any())
{
foreach (var item2 in item.Nav_ContentsAreas)
{
item2.ORG_ID = entity.ORG_ID;
item2.CHECK_SET_CONTENTS_ID = item.ID;
areas.Add(item2);
if (item2.Nav_ContentsAreaRisks != null && item2.Nav_ContentsAreaRisks.Any())
{
foreach (var item3 in item2.Nav_ContentsAreaRisks)
{
item3.ORG_ID = entity.ORG_ID;
item3.CHECK_SET_CONTENTS_AREA_ID = item2.ID;
risks.Add(item3);
}
}
item2.Nav_ContentsAreaRisks = null;
}
}
item.Nav_ContentsAreas = 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);
if (areas != null && areas.Any())
BantchSaveEntityNoCommit(areas);
if (risks != null && risks.Any())
BantchSaveEntityNoCommit(risks);
});
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.Date;
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.Date;
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.Date;
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.Date;
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.Date;
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.Date;
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.Date;
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;
}
}
}