mh_jy_safe/APT.MicroApi/APT.SK.WebApi/Controllers/Api/CheckSetController.cs
2025-11-11 17:48:25 +08:00

1385 lines
83 KiB
C#
Raw 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;
List<Guid> detailIds = new List<Guid>();
//List<Guid> hiddenIds = new List<Guid>();
List<Guid> basicIds = new List<Guid>();
detailIds = this.GetEntities<T_SK_CHECK_SET_CONTENTS>(t => t.CHECK_SET_ID == entity.ID, new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList();
basicIds = this.GetEntities<T_SK_CHECK_SET_CONTENTS_BASIC>(t => detailIds.Contains(t.CHECK_CONTENTS_SET_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList();
//hiddenIds = this.GetEntities<T_SK_CHECK_SET_CONTENTS_HIDDEN>(t => detailIds.Contains(t.CHECK_CONTENTS_SET_ID), new BaseFilter(entity.ORG_ID)).Select(t => t.ID).ToList();
var record = this.GetEntity<T_SK_CHECK_SET>(t => t.ID != entity.ID && t.PRODUCTION_UNIT_ID == entity.PRODUCTION_UNIT_ID && t.CHECK_TYPE == entity.CHECK_TYPE && t.CHECK_TYPE_ID == entity.CHECK_TYPE_ID && t.CHECK_CYCLE == entity.CHECK_CYCLE && t.DEPARTMENT_ID == entity.DEPARTMENT_ID && t.POST_ID == entity.POST_ID);
if (record != null)
{
throw new Exception("相同检查已存在,请修改检查信息或回到列表页检索");
}
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);
// //conHiddenIds.Add(item2.CHECK_QUESTION_ID);
// }
//}
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);
}
}
//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;
}
}
//同步到企业库
var areaIds = details.Select(t => t.AREA_ID).Distinct().ToList();
var riskNames = details.Select(t => t.RISK_NAME).Distinct().ToList();
var measures = details.Select(t => t.MEASURES_NAME).Distinct().ToList();
var contentIds = details.Select(t => t.CHECK_CONTENTS_ID).Distinct().ToList();
//conHiddenIds = conHiddenIds.Distinct().ToList();
var contentHiddens = this.GetEntities<T_SK_CHECK_QUESTION>(t => contentIds.Contains(t.CHECK_CONTENTS_ID), new BaseFilter(entity.ORG_ID));
var conHiddenIds = contentHiddens.Select(m => m.ID).ToList();
var librarys = this.GetEntities<T_SK_ENTERPRISE_LIBRARY>(t => t.PRODUCTION_UNIT_ID == entity.PRODUCTION_UNIT_ID && riskNames.Contains(t.RISK_NAME) && areaIds.Contains(t.AREA_ID) && t.ENABLE_STATUS == 0, new BaseFilter(entity.ORG_ID));
var libraryIds = librarys.Select(m => m.ID).ToList();
var libraryLevels = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DEPART>(t => libraryIds.Contains(t.ENTERPRISE_LIBRARY_ID) && t.DEPARTMENT_ID == entity.DEPARTMENT_ID, new BaseFilter(entity.ORG_ID));
var libraryPosts = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_POST>(t => libraryIds.Contains(t.ENTERPRISE_LIBRARY_ID) && t.DEPARTMENT_ID == entity.DEPARTMENT_ID, new BaseFilter(entity.ORG_ID));
var postIds = libraryPosts.Select(m => m.ID).ToList();
var libraryPostDetails = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_POST_DETAIL>(t => postIds.Contains(t.ENTERPRISE_LIBRARY_POST_ID) && t.POST_ID == entity.POST_ID, new BaseFilter(entity.ORG_ID));
var libraryDetails = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL>(t => libraryIds.Contains(t.ENTERPRISE_LIBRARY_ID) && measures.Contains(t.MEASURES_NAME), new BaseFilter(entity.ORG_ID));
var detIds = libraryDetails.Select(m => m.ID).ToList();
var libraryContents = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT>(t => detIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_ID) && contentIds.Contains(t.CHECK_CONTENTS_ID), new BaseFilter(entity.ORG_ID));
var detailConIds = libraryContents.Select(t => t.ID).ToList();
var libraryHiddens = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN>(t => detailConIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID) && t.CHECK_QUESTION_ID != null && conHiddenIds.Contains((Guid)t.CHECK_QUESTION_ID), new BaseFilter(entity.ORG_ID));
var libraryDeparts = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART>(t => detailConIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID) && t.DEPARTMENT_ID == entity.DEPARTMENT_ID, new BaseFilter(entity.ORG_ID));
//var departIds = libraryDetails.Select(m => m.ID).ToList();
//var libraryDepPots = this.GetEntities<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST>(t => departIds.Contains(t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID) && t.POST_ID == entity.POST_ID, new BaseFilter(entity.ORG_ID));
//List<T_SK_ENTERPRISE_LIBRARY> libraryList = new List<T_SK_ENTERPRISE_LIBRARY>();
List<T_SK_ENTERPRISE_LIBRARY_DEPART> libraryLevelList = new List<T_SK_ENTERPRISE_LIBRARY_DEPART>();
List<T_SK_ENTERPRISE_LIBRARY_POST> libraryPostList = new List<T_SK_ENTERPRISE_LIBRARY_POST>();
List<T_SK_ENTERPRISE_LIBRARY_POST_DETAIL> libraryPostDetList = new List<T_SK_ENTERPRISE_LIBRARY_POST_DETAIL>();
List<T_SK_ENTERPRISE_LIBRARY_DETAIL> libraryDetailList = new List<T_SK_ENTERPRISE_LIBRARY_DETAIL>();
List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT> libraryDetailContList = new List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT>();
List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN> libraryDetailHiddList = new List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN>();
List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART> libraryDetailDepList = new List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART>();
//List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST> libraryDetailPostList = new List<T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST>();
if (entity.PUBLISH != null && entity.PUBLISH.Equals("SaveAndNotify"))
{
var riskName = details.FirstOrDefault(t => t.ENTERPRISE_LIBRARY_ID == null);
if (riskName != null)
{
throw new Exception("风险名称不能为空,请排查确认");
}
var measure = details.FirstOrDefault(t => t.ENTERPRISE_LIBRARY_DETAIL_ID == null);
if (measure != null)
{
throw new Exception("管控措施不能为空,请排查确认");
}
foreach (var item in details)
{
var libFirst = librarys.FirstOrDefault(t => t.RISK_NAME == item.RISK_NAME && t.AREA_ID == item.AREA_ID);
//企业库已有,去更新。未找到,直接添加
if (libFirst != null)
{
var libDetailFirst = libraryDetails.FirstOrDefault(t => t.MEASURES_NAME == item.MEASURES_NAME && t.ENTERPRISE_LIBRARY_ID == libFirst.ID);
//管控措施为空
if (libDetailFirst == null)
{
//全部添加
T_SK_ENTERPRISE_LIBRARY_DETAIL mes = new T_SK_ENTERPRISE_LIBRARY_DETAIL();
mes.ORG_ID = entity.ORG_ID;
mes.ENTERPRISE_LIBRARY_ID = libFirst.ID;
mes.MEASURES_NAME = item.MEASURES_NAME;
mes.NUM = 99;
libraryDetailList.Add(mes);
T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT con = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT();
con.ORG_ID = entity.ORG_ID;
con.ENTERPRISE_LIBRARY_DETAIL_ID = mes.ID;
con.CHECK_CONTENTS_ID = item.CHECK_CONTENTS_ID;
con.NUM = 99;
libraryDetailContList.Add(con);
if (item.Nav_ContentsHiddens != null && item.Nav_ContentsHiddens.Any())
{
foreach (var item2 in item.Nav_ContentsHiddens)
{
T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN hid = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN();
hid.ORG_ID = entity.ORG_ID;
hid.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = con.ID;
hid.CHECK_QUESTION_ID = item2.CHECK_QUESTION_ID;
hid.NUM = item2.NUM;
libraryDetailHiddList.Add(hid);
}
}
T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART dep = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART();
dep.ORG_ID = entity.ORG_ID;
dep.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = con.ID;
dep.DEPARTMENT_ID = entity.DEPARTMENT_ID;
dep.CHECK_TYPE = entity.CHECK_TYPE;
dep.CHECK_TYPE_ID = entity.CHECK_TYPE_ID;
dep.CHECK_CYCLE = entity.CHECK_CYCLE;
dep.NUM = 1;
libraryDetailDepList.Add(dep);
//T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST pos = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST();
//pos.ORG_ID = entity.ORG_ID;
//pos.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID;
//pos.POST_ID = entity.POST_ID;
//libraryDetailPostList.Add(pos);
}
else
{
//检查内容为空
var libConFirst = libraryContents.FirstOrDefault(t => t.ENTERPRISE_LIBRARY_DETAIL_ID == libDetailFirst.ID && t.CHECK_CONTENTS_ID == item.CHECK_CONTENTS_ID);
if (libConFirst == null)
{
T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT con = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT();
con.ORG_ID = entity.ORG_ID;
con.ENTERPRISE_LIBRARY_DETAIL_ID = libDetailFirst.ID;
con.CHECK_CONTENTS_ID = item.CHECK_CONTENTS_ID;
con.NUM = 99;
libraryDetailContList.Add(con);
if (item.Nav_ContentsHiddens != null && item.Nav_ContentsHiddens.Any())
{
foreach (var item2 in item.Nav_ContentsHiddens)
{
T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN hid = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN();
hid.ORG_ID = entity.ORG_ID;
hid.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = con.ID;
hid.CHECK_QUESTION_ID = item2.CHECK_QUESTION_ID;
hid.NUM = item2.NUM;
libraryDetailHiddList.Add(hid);
}
}
T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART dep = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART();
dep.ORG_ID = entity.ORG_ID;
dep.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = con.ID;
dep.DEPARTMENT_ID = entity.DEPARTMENT_ID;
dep.CHECK_TYPE = entity.CHECK_TYPE;
dep.CHECK_TYPE_ID = entity.CHECK_TYPE_ID;
dep.CHECK_CYCLE = entity.CHECK_CYCLE;
dep.NUM = 1;
libraryDetailDepList.Add(dep);
//T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST pos = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST();
//pos.ORG_ID = entity.ORG_ID;
//pos.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID;
//pos.POST_ID = entity.POST_ID;
//libraryDetailPostList.Add(pos);
}
else
{
//检查层级没有就加,有就不处理
var libConDepFirst = libraryDeparts.FirstOrDefault(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID == libConFirst.ID && t.DEPARTMENT_ID == entity.DEPARTMENT_ID && t.CHECK_TYPE_ID == entity.CHECK_TYPE_ID && t.CHECK_CYCLE == entity.CHECK_CYCLE);
if (libConDepFirst == null)
{
T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART dep = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART();
dep.ORG_ID = entity.ORG_ID;
dep.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = libConFirst.ID;
dep.DEPARTMENT_ID = entity.DEPARTMENT_ID;
dep.CHECK_TYPE = entity.CHECK_TYPE;
dep.CHECK_TYPE_ID = entity.CHECK_TYPE_ID;
dep.CHECK_CYCLE = entity.CHECK_CYCLE;
dep.NUM = 1;
libraryDetailDepList.Add(dep);
//T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST pos = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_POST();
//pos.ORG_ID = entity.ORG_ID;
//pos.ENTERPRISE_LIBRARY_DETAIL_CONTENT_DEPART_ID = dep.ID;
//pos.POST_ID = entity.POST_ID;
//libraryDetailPostList.Add(pos);
}
//隐患描述没有就加,有就不处理
var libConHidList = contentHiddens.Where(t => t.CHECK_CONTENTS_ID == item.CHECK_CONTENTS_ID).ToList();
if (libConHidList != null && libConHidList.Any())
{
foreach (var item2 in libConHidList)
{
var libConHidFirst = libraryHiddens.FirstOrDefault(t => t.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID == libConFirst.ID && t.CHECK_QUESTION_ID == item2.ID);
if (libConHidFirst == null)
{
T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN hid = new T_SK_ENTERPRISE_LIBRARY_DETAIL_CONTENT_HIDDEN();
hid.ORG_ID = entity.ORG_ID;
hid.ENTERPRISE_LIBRARY_DETAIL_CONTENT_ID = libConFirst.ID;
hid.CHECK_QUESTION_ID = item2.ID;
hid.NUM = item2.NUM;
hid.HIDDEN_DESCRIPTION = item2.DESCREPTION;
hid.HIDDEN_LEVEL = item2.QUESTION_LEVEL;
hid.RECTIFICATION_MEASURES = item2.DEMAND;
libraryDetailHiddList.Add(hid);
}
}
}
}
}
//管控层级为空就加,有就不处理
var libLevelFirst = libraryLevels.FirstOrDefault(t => t.DEPARTMENT_ID == entity.DEPARTMENT_ID && t.ENTERPRISE_LIBRARY_ID == libFirst.ID);
if (libLevelFirst == null)
{
T_SK_ENTERPRISE_LIBRARY_DEPART lev = new T_SK_ENTERPRISE_LIBRARY_DEPART();
lev.ORG_ID = entity.ORG_ID;
lev.ENTERPRISE_LIBRARY_ID = libFirst.ID;
lev.DEPARTMENT_ID = entity.DEPARTMENT_ID;
libraryLevelList.Add(lev);
}
//辨识岗位
var libPostFirst = libraryPosts.FirstOrDefault(t => t.DEPARTMENT_ID == entity.DEPARTMENT_ID && t.ENTERPRISE_LIBRARY_ID == libFirst.ID);
if (libLevelFirst == null)
{
T_SK_ENTERPRISE_LIBRARY_POST dep = new T_SK_ENTERPRISE_LIBRARY_POST();
dep.ORG_ID = entity.ORG_ID;
dep.ENTERPRISE_LIBRARY_ID = libFirst.ID;
dep.DEPARTMENT_ID = entity.DEPARTMENT_ID;
libraryPostList.Add(dep);
T_SK_ENTERPRISE_LIBRARY_POST_DETAIL pos = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL();
pos.ORG_ID = entity.ORG_ID;
pos.ENTERPRISE_LIBRARY_POST_ID = dep.ID;
pos.POST_ID = entity.POST_ID;
libraryPostDetList.Add(pos);
}
else
{
//辨识岗位为空就加,有就不处理
var libPostDetailFirst = libraryPostDetails.FirstOrDefault(t => t.ENTERPRISE_LIBRARY_POST_ID == libLevelFirst.ID && t.POST_ID == entity.POST_ID);
if (libPostDetailFirst == null)
{
T_SK_ENTERPRISE_LIBRARY_POST_DETAIL pos = new T_SK_ENTERPRISE_LIBRARY_POST_DETAIL();
pos.ORG_ID = entity.ORG_ID;
pos.ENTERPRISE_LIBRARY_POST_ID = libLevelFirst.ID;
pos.POST_ID = entity.POST_ID;
libraryPostDetList.Add(pos);
}
}
}
else
{
//没有先不处理如果直接加的话隐患描述应急处置LEC怎么填
}
}
}
details.ForEach(t => { t.Nav_ContentsHiddens = null; t.Nav_ContentsBasics = null; });
this.UnifiedCommit(() =>
{
if (basicIds != null && basicIds.Any())
this.BantchDeleteEntityNoCommit<T_SK_CHECK_SET_CONTENTS_BASIC>(basicIds);
//if (hiddenIds != null && hiddenIds.Any())
// this.BantchDeleteEntityNoCommit<T_SK_CHECK_SET_CONTENTS_HIDDEN>(hiddenIds);
if (detailIds != null && detailIds.Any())
this.BantchDeleteEntityNoCommit<T_SK_CHECK_SET_CONTENTS>(detailIds);
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);
if (libraryLevelList != null && libraryLevelList.Any())
BantchSaveEntityNoCommit(libraryLevelList);
if (libraryPostList != null && libraryPostList.Any())
BantchSaveEntityNoCommit(libraryPostList);
if (libraryPostDetList != null && libraryPostDetList.Any())
BantchSaveEntityNoCommit(libraryPostDetList);
if (libraryDetailList != null && libraryDetailList.Any())
BantchSaveEntityNoCommit(libraryDetailList);
if (libraryDetailContList != null && libraryDetailContList.Any())
BantchSaveEntityNoCommit(libraryDetailContList);
if (libraryDetailHiddList != null && libraryDetailHiddList.Any())
BantchSaveEntityNoCommit(libraryDetailHiddList);
if (libraryDetailDepList != null && libraryDetailDepList.Any())
BantchSaveEntityNoCommit(libraryDetailDepList);
});
return true;
});
}
/// <summary>
/// 检查是否重复
/// </summary>
/// <param name="entity">对象实体</param>
/// <returns></returns>
[HttpPost, Route("CheckList")]
public JsonActionResult<bool> CheckList([FromBody] T_SK_CHECK_SET entity)
{
return SafeExecute<bool>(() =>
{
if (entity.PRODUCTION_UNIT_ID == null && entity.CHECK_TYPE_ID == null || entity.CHECK_TYPE == null || entity.DEPARTMENT_ID == null || entity.POST_ID == null)
{
throw new Exception("生产单元,检查层级,检查类型,检查周期,检查部门,检查对象都不能为空");
}
var record = this.GetEntity<T_SK_CHECK_SET>(t => t.ID != entity.ID && t.PRODUCTION_UNIT_ID == entity.PRODUCTION_UNIT_ID && t.CHECK_TYPE == entity.CHECK_TYPE && t.CHECK_TYPE_ID == entity.CHECK_TYPE_ID && t.CHECK_CYCLE == entity.CHECK_CYCLE && t.DEPARTMENT_ID == entity.DEPARTMENT_ID && t.POST_ID == entity.POST_ID);
if (record != null)
{
throw new Exception("相同检查已存在,请修改检查信息或回到列表页检索");
}
else
{
throw new Exception("当前检查不存在,请放心填写");
}
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;
}
}
}