480 lines
22 KiB
C#
480 lines
22 KiB
C#
using APT.Infrastructure.Core;
|
||
using APT.MS.Domain.Entities.BS;
|
||
using APT.MS.Domain.Enums;
|
||
using APT.Utility;
|
||
using APT.WebApi.Models;
|
||
using Microsoft.AspNetCore.Mvc;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Linq.Expressions;
|
||
|
||
namespace APT.BS.WebApi.Controllers.Api
|
||
{
|
||
[Route("api/BS/BSCheckQuestion")]
|
||
public partial class BSCheckQuestionController : AuthorizeApiController<T_BS_CHECK_QUESTION>
|
||
{
|
||
|
||
/// <summary>
|
||
/// 安全检查 安检员 问题描述 选择 数据源
|
||
/// </summary>
|
||
/// <param name="pageFilter">分页过滤实体</param>
|
||
/// <returns></returns>
|
||
[HttpPost, Route("GetCheckDetailDESCREPTION")]
|
||
public PagedActionResult<T_BS_CHECK_QUESTION> GetCheckDetailDESCREPTION([FromBody] KeywordPageFilter pageFilter)
|
||
{
|
||
return SafeGetPagedData<T_BS_CHECK_QUESTION>((result) =>
|
||
{
|
||
|
||
//如果没有 检查库 看看 检查内容 做匹配
|
||
|
||
List<Guid> listID = new List<Guid>();
|
||
listID.Add(new Guid("55555555-5555-5555-5555-555555555555"));
|
||
listID.Add(new Guid("66666666-6666-6666-6666-666666666666"));//去除其他
|
||
var listQues2 = GetEntities<T_BS_CHECK_QUESTION>(e => listID.Contains(e.ID), null, null);
|
||
|
||
if (pageFilter.FilterGroup.Groups.Count > 0)
|
||
{
|
||
List<FilterGroup> listGroups = pageFilter.FilterGroup.Groups.ToList();
|
||
var rules = listGroups[0].Rules;
|
||
var rulesSearch = listGroups.Count > 1 ? listGroups[1].Rules : null;
|
||
|
||
Guid RISK_AREA_ID = Guid.Empty;
|
||
Guid CHECK_PROJECT_ID = Guid.Empty;
|
||
Guid CHECK_PROJECT_CATEGORY_ID = Guid.Empty;
|
||
Guid CHECK_TYPE_LEVEL_ID = Guid.Empty;
|
||
Guid SAFE_CHECK_ID = Guid.Empty;
|
||
Guid DEPARTMENT_ID = Guid.Empty;
|
||
string CHECKCONTENT = string.Empty;
|
||
string CHECKCONTENTSearch = string.Empty;
|
||
BSMineTypeEnum? CHECKOBJECT = null;
|
||
try
|
||
{
|
||
foreach (var rule in rules)
|
||
{
|
||
switch (rule.Field)
|
||
{
|
||
case "RISK_AREA_ID":
|
||
RISK_AREA_ID = new Guid(rule.Value.ToString());
|
||
break;
|
||
case "CHECK_PROJECT_ID":
|
||
CHECK_PROJECT_ID = new Guid(rule.Value.ToString());
|
||
break;
|
||
case "CHECK_PROJECT_CATEGORY_ID":
|
||
CHECK_PROJECT_CATEGORY_ID = new Guid(rule.Value.ToString());
|
||
break;
|
||
case "CHECKCONTENT":
|
||
CHECKCONTENT = rule.Value.ToString();
|
||
break;
|
||
case "CHECK_TYPE_LEVEL_ID":
|
||
CHECK_TYPE_LEVEL_ID = new Guid(rule.Value.ToString());
|
||
break;
|
||
case "SAFE_CHECK_ID":
|
||
SAFE_CHECK_ID = new Guid(rule.Value.ToString());
|
||
break;
|
||
case "DEPARTMENT_ID":
|
||
DEPARTMENT_ID = new Guid(rule.Value.ToString());
|
||
break;
|
||
case "CHECKOBJECT":
|
||
CHECKOBJECT = (BSMineTypeEnum)int.Parse(rule.Value.ToString());
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
catch { }
|
||
|
||
if (CHECK_TYPE_LEVEL_ID == Guid.Empty && SAFE_CHECK_ID != Guid.Empty)
|
||
{
|
||
CHECK_TYPE_LEVEL_ID = GetEntity<T_BS_SAFE_CHECK>(SAFE_CHECK_ID).CHECK_TYPE_LEVEL_ID.Value;
|
||
}
|
||
|
||
if (rulesSearch != null && rulesSearch.Any())
|
||
{
|
||
CHECKCONTENTSearch = rulesSearch.ToList()[0].Value.ToString();
|
||
}
|
||
|
||
//wyw1114 expression && e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == DEPARTMENT_ID
|
||
// && e.CHECK_PROJECT_CATEGORY_ID == CHECK_PROJECT_CATEGORY_ID
|
||
Expression<Func<T_BS_CHECK_MAIN, bool>> expression = e => e.RISK_AREA_ID == RISK_AREA_ID && e.CHECK_TYPE_LEVEL_ID == CHECK_TYPE_LEVEL_ID && e.CHECK_PROJECT_ID == CHECK_PROJECT_ID && e.CHECKCONTENT == CHECKCONTENT && !e.IS_DELETED && e.ENABLE_STATUS == 0 && e.CHECK_QUESTION_ID.HasValue;
|
||
|
||
if (!string.IsNullOrEmpty(CHECKCONTENTSearch))
|
||
{
|
||
expression = expression.And(e => e.Nav_CheckQuestion != null && e.Nav_CheckQuestion.DESCREPTION.Contains(CHECKCONTENTSearch));
|
||
}
|
||
|
||
//var listQuesSearch = GetEntities<T_BS_CHECK_MAIN>(expression, null, new string[] { "Nav_CheckQuestion" }).Select(e => e.Nav_CheckQuestion).Distinct();
|
||
var listQuesSearch = GetEntities<T_BS_CHECK_MAIN>(expression, null, new string[] { "Nav_CheckQuestion" }).Select(e => e.Nav_CheckQuestion).Distinct();
|
||
|
||
if (listQuesSearch != null && listQuesSearch.Any())
|
||
{
|
||
//if (!string.IsNullOrEmpty(CHECKCONTENTSearch))
|
||
//{
|
||
// listQuesSearch = listQuesSearch.Where(e => e.DESCREPTION.Contains(CHECKCONTENTSearch));
|
||
//}
|
||
|
||
//检查问题
|
||
var listMainSearch = GetEntities<T_BS_CHECK_MAIN>(expression, null, null).Distinct();
|
||
|
||
List<T_BS_CHECK_QUESTION> listQuesResult = new List<T_BS_CHECK_QUESTION>();
|
||
if (listQues2 != null && listQues2.Any())
|
||
{
|
||
listQuesResult = listQues2.ToList();
|
||
if (!string.IsNullOrEmpty(CHECKCONTENTSearch))
|
||
{
|
||
listQuesResult = listQuesResult.FindAll(e => e.DESCREPTION.Contains(CHECKCONTENTSearch));
|
||
}
|
||
|
||
foreach (var item in listQuesSearch)
|
||
{
|
||
item.Nav_Main = listMainSearch.FirstOrDefault(e => e.CHECK_QUESTION_ID == item.ID);
|
||
}
|
||
|
||
listQuesResult.AddRange(listQuesSearch.ToList());
|
||
}
|
||
else
|
||
{
|
||
listQuesResult = listQuesSearch.ToList();
|
||
}
|
||
result.Data = listQuesResult;
|
||
result.TotalCount = listQuesSearch.Count();
|
||
}
|
||
else
|
||
{
|
||
//if (!string.IsNullOrEmpty(CHECKCONTENTSearch))
|
||
//{
|
||
// listQues2 = listQues2.ToList().FindAll(e => e.DESCREPTION.Contains(CHECKCONTENTSearch));
|
||
//}
|
||
//result.TotalCount = listQues2.Count();
|
||
//result.Data = listQues2;
|
||
|
||
bool isHave = true;
|
||
if (CHECKOBJECT == null && SAFE_CHECK_ID != Guid.Empty)
|
||
{
|
||
var check = GetEntity<T_BS_SAFE_CHECK>(SAFE_CHECK_ID);
|
||
if (check != null && check.CHECKOBJECT.HasValue)
|
||
{
|
||
CHECKOBJECT = (BSMineTypeEnum)check.CHECKOBJECT.Value;
|
||
}
|
||
}
|
||
|
||
if (CHECKOBJECT != null)
|
||
{
|
||
|
||
#region 如果数据库中未查找到 到 T_BS_CHECK_CONTENTS 去查找
|
||
Expression<Func<T_BS_CHECK_CONTENTS, bool>> expressionC = e => e.CHECKCONTENT == CHECKCONTENT;
|
||
if (CHECKOBJECT != null && CHECKOBJECT != BSMineTypeEnum.All)
|
||
expressionC = expressionC.And(e => e.CHECKOBJECT == CHECKOBJECT);
|
||
|
||
var contents = GetEntities<T_BS_CHECK_CONTENTS>(expressionC, null, null);
|
||
|
||
if (contents != null && contents.Any())
|
||
{
|
||
Expression<Func<T_BS_CHECK_QUESTION, bool>> expressionQ = e => !e.IS_DELETED;
|
||
var listContentIDs = contents.Select(e => e.ID).ToList();
|
||
|
||
if (contents.Count() == 1)
|
||
{
|
||
expressionQ = expressionQ.And(e => listContentIDs[0] == e.CHECK_CONTENTS_ID);
|
||
}
|
||
else
|
||
{
|
||
expressionQ = expressionQ.And(e => e.CHECK_CONTENTS_ID.HasValue && listContentIDs.Contains(e.CHECK_CONTENTS_ID.Value));
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(CHECKCONTENTSearch))
|
||
{
|
||
expressionQ = expressionQ.And(e => e.DESCREPTION.Contains(CHECKCONTENTSearch));
|
||
}
|
||
|
||
var questions = GetEntities(expressionQ, null, null).ToList();
|
||
if (questions != null && questions.Any())
|
||
{
|
||
questions.AddRange(listQues2);//加载无
|
||
|
||
result.TotalCount = questions.Count();
|
||
|
||
//foreach (var item in questions)
|
||
//{
|
||
// if (!listID.Contains(item.ID))
|
||
// {
|
||
// item.Nav_Main = new T_BS_CHECK_MAIN();
|
||
// item.Nav_Main.QUESTION_LEVEL = (int)item.QUESTION_LEVEL;
|
||
// }
|
||
//}
|
||
result.Data = questions;
|
||
}
|
||
else
|
||
{
|
||
isHave = false;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
isHave = false;
|
||
}
|
||
|
||
#endregion
|
||
}
|
||
else
|
||
{
|
||
//保持原来的
|
||
isHave = false;
|
||
}
|
||
|
||
if (!isHave)
|
||
{
|
||
if (!string.IsNullOrEmpty(CHECKCONTENTSearch))
|
||
{
|
||
listQues2 = listQues2.ToList().FindAll(e => e.DESCREPTION.Contains(CHECKCONTENTSearch));
|
||
}
|
||
|
||
result.TotalCount = listQues2.Count();
|
||
result.Data = listQues2;
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
result.TotalCount = listQues2.Count();
|
||
result.Data = listQues2;
|
||
}
|
||
|
||
if (result.Data != null && result.Data.Any())
|
||
{
|
||
int RequestType = DataHelper.GetRequestType(Request.Headers);
|
||
if (RequestType == 2)
|
||
{
|
||
result.Data = GetEnumsShow(result.Data);
|
||
}
|
||
}
|
||
|
||
//if (pageFilter.FilterGroup.Rules.Count > 0)
|
||
//{
|
||
|
||
|
||
//Guid DetailID = Guid.Empty;
|
||
//foreach (var item in filter.FilterGroup.Rules)
|
||
//{
|
||
// if (item.Field == "Keyword")
|
||
// {
|
||
// DetailID = new Guid(filter.FilterGroup.Rules.ToList()[0].Value.ToString());
|
||
// filter.FilterGroup.Rules.Remove(item);
|
||
// break;
|
||
// }
|
||
//}
|
||
//if (DetailID != Guid.Empty)
|
||
//{
|
||
// var checkDetail = GetEntity<T_BS_SAFE_CHECK_DETAIL>(DetailID);
|
||
// var listQues = GetEntities<T_BS_CHECK_MAIN>(e => e.RISK_AREA_ID == checkDetail.RISK_AREA_ID && e.CHECK_PROJECT_ID == checkDetail.CHECK_PROJECT_ID && e.CHECK_PROJECT_CATEGORY_ID == checkDetail.CHECK_PROJECT_CATEGORY_ID && e.CHECKCONTENT == checkDetail.CHECKCONTENT, filter, new string[] { "Nav_CheckQuestion" }).Select(e => e.Nav_CheckQuestion).Distinct();
|
||
// result.TotalCount = listQues.Count();
|
||
// result.Data = listQues;
|
||
//}
|
||
//else
|
||
//{
|
||
// result.TotalCount = 0;
|
||
// result.Data = new List<T_BS_CHECK_QUESTION>();
|
||
//}
|
||
//}
|
||
//else
|
||
//{
|
||
// result.TotalCount = 2;
|
||
// result.Data = listQues2;
|
||
//}
|
||
});
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 问题等级(app接口需求)
|
||
/// </summary>
|
||
/// <param name="IListQuestion"></param>
|
||
/// <returns></returns>
|
||
private IEnumerable<T_BS_CHECK_QUESTION> GetEnumsShow(IEnumerable<T_BS_CHECK_QUESTION> IListQuestion)
|
||
{
|
||
if (IListQuestion != null && IListQuestion.Any())
|
||
{
|
||
foreach (var item in IListQuestion)
|
||
{
|
||
if (item.Nav_Main != null && item.Nav_Main.QUESTION_LEVEL > 0)
|
||
{
|
||
item.Nav_Main.QUESTION_LEVE_DESCRIPTION = ((BSQuestionLevelEnum)item.Nav_Main.QUESTION_LEVEL).GetDescription();
|
||
}
|
||
}
|
||
}
|
||
return IListQuestion;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 排序分页查询数据 DEMAND 各不相同 隐患上报 选择整改建议与措施
|
||
/// </summary>
|
||
/// <param name="pageFilter">分页过滤实体</param>
|
||
/// <returns></returns>
|
||
[HttpPost, Route("OrderPagedDisDemand")]
|
||
public PagedActionResult<T_BS_CHECK_QUESTION> OrderPagedDisDemand([FromBody] KeywordPageFilter pageFilter)
|
||
{
|
||
return SafeGetPagedData<T_BS_CHECK_QUESTION>((result) =>
|
||
{
|
||
//Expression<Func<T_BS_CHECK_QUESTION, bool>> expression = null;// GetExpression(pageFilter, "OrderPagedArea", out SAFE_CHECK_ID);
|
||
var info = this.GetEntities<T_BS_CHECK_QUESTION>(null, pageFilter, null).Select(e => new T_BS_CHECK_QUESTION { ID = e.ID, DEMAND = e.DEMAND, DESCREPTION = "" }).Distinct(e => e.DEMAND).ToList();
|
||
result.TotalCount = info.Count;
|
||
result.Data = info.Skip((pageFilter.PageIndex - 1) * pageFilter.Limit).Take(pageFilter.Limit).ToList<T_BS_CHECK_QUESTION>();
|
||
});
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 排序分页查询数据
|
||
/// </summary>
|
||
/// <param name="pageFilter">分页过滤实体</param>
|
||
/// <returns></returns>
|
||
[HttpPost, Route("OrderPagedRisk")]
|
||
public PagedActionResult<T_BS_CHECK_QUESTION> OrderPagedRisk([FromBody] KeywordPageFilter pageFilter)
|
||
{
|
||
return SafeGetPagedData(delegate (PagedActionResult<T_BS_CHECK_QUESTION> result)
|
||
{
|
||
PagedActionResult<T_BS_CHECK_QUESTION> orderPageEntities = GetOrderPageEntities<T_BS_CHECK_QUESTION>(null, pageFilter, null);
|
||
result.Data = orderPageEntities.Data;
|
||
|
||
if (result.Data != null && result.Data.Any())
|
||
{
|
||
foreach (var item in result.Data)
|
||
{
|
||
if (item.QUESTION_LEVEL == BSQuestionLevelEnum.重大)
|
||
{
|
||
item.SERIOUS_RISK = 1;
|
||
}
|
||
else
|
||
{
|
||
item.SERIOUS_RISK = 0;
|
||
}
|
||
}
|
||
}
|
||
result.TotalCount = orderPageEntities.TotalCount;
|
||
});
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 安全检查明细退回
|
||
/// </summary>
|
||
/// <param name="pageFilter">分页过滤实体</param>
|
||
/// <returns></returns>
|
||
[HttpPost, Route("GetRejectCheckDetailDESCREPTION")]
|
||
public PagedActionResult<T_BS_CHECK_QUESTION> GetRejectCheckDetailDESCREPTION([FromBody] KeywordPageFilter pageFilter)
|
||
{
|
||
return SafeGetPagedData<T_BS_CHECK_QUESTION>((result) =>
|
||
{
|
||
Guid DetailID = Guid.Empty;
|
||
foreach (var item in pageFilter.FilterGroup.Groups)
|
||
{
|
||
foreach (var itemG in item.Rules)
|
||
{
|
||
if (itemG.Field == "ID")
|
||
{
|
||
DetailID = new Guid(itemG.Value.ToString());
|
||
}
|
||
}
|
||
}
|
||
|
||
var Detail = GetEntity<T_BS_SAFE_CHECK_DETAIL>(DetailID);//, "Nav_ListCheckDetailQuestion.Nav_Question"
|
||
|
||
Guid CHECK_TYPE_LEVEL_ID = Guid.Empty;
|
||
string CHECKCONTENTSearch = string.Empty;
|
||
|
||
Guid RISK_AREA_ID = Detail.RISK_AREA_ID.Value;
|
||
Guid CHECK_PROJECT_ID = Detail.CHECK_PROJECT_ID.Value;
|
||
//Guid CHECK_PROJECT_CATEGORY_ID = Detail.CHECK_PROJECT_CATEGORY_ID.Value;
|
||
Guid SAFE_CHECK_ID = Detail.SAFE_CHECK_ID;
|
||
Guid DEPARTMENT_ID = Detail.DEPARTMENT_ID.Value;
|
||
string CHECKCONTENT = Detail.CHECKCONTENT;
|
||
|
||
if (CHECK_TYPE_LEVEL_ID == Guid.Empty && SAFE_CHECK_ID != Guid.Empty)
|
||
{
|
||
CHECK_TYPE_LEVEL_ID = GetEntity<T_BS_SAFE_CHECK>(SAFE_CHECK_ID).CHECK_TYPE_LEVEL_ID.Value;
|
||
}
|
||
|
||
Guid Q5 = new Guid("55555555-5555-5555-5555-555555555555");
|
||
T_BS_CHECK_QUESTION modelQ5 = GetEntity<T_BS_CHECK_QUESTION>(Q5);
|
||
|
||
List<FilterGroup> listGroups = pageFilter.FilterGroup.Groups.ToList();
|
||
var rulesSearch = listGroups.Count > 1 ? listGroups[1].Rules : null;
|
||
if (rulesSearch != null && rulesSearch.Any())
|
||
{
|
||
CHECKCONTENTSearch = rulesSearch.ToList()[0].Value.ToString();
|
||
}
|
||
|
||
//wyw1114 expression && e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == DEPARTMENT_ID && e.CHECK_PROJECT_CATEGORY_ID == CHECK_PROJECT_CATEGORY_ID
|
||
Expression<Func<T_BS_CHECK_MAIN, bool>> expression = e => e.RISK_AREA_ID == RISK_AREA_ID && e.CHECK_TYPE_LEVEL_ID == CHECK_TYPE_LEVEL_ID && e.CHECK_PROJECT_ID == CHECK_PROJECT_ID && e.CHECKCONTENT == CHECKCONTENT && !e.IS_DELETED && e.ENABLE_STATUS == 0 && e.CHECK_QUESTION_ID.HasValue;
|
||
|
||
if (!string.IsNullOrEmpty(CHECKCONTENTSearch))
|
||
{
|
||
expression = expression.And(e => e.Nav_CheckQuestion != null && e.Nav_CheckQuestion.DESCREPTION.Contains(CHECKCONTENTSearch));
|
||
}
|
||
|
||
//var listQuesSearch = GetEntities<T_BS_CHECK_MAIN>(expression, null, new string[] { "Nav_CheckQuestion" }).Select(e => e.Nav_CheckQuestion).Distinct();
|
||
var listQuesSearch = GetEntities<T_BS_CHECK_MAIN>(expression, null, new string[] { "Nav_CheckQuestion" }).Select(e => e.Nav_CheckQuestion).Distinct();
|
||
|
||
if (listQuesSearch != null && listQuesSearch.Any())
|
||
{
|
||
//if (!string.IsNullOrEmpty(CHECKCONTENTSearch))
|
||
//{
|
||
// listQuesSearch = listQuesSearch.Where(e => e.DESCREPTION.Contains(CHECKCONTENTSearch));
|
||
//}
|
||
|
||
//检查问题
|
||
var listMainSearch = GetEntities<T_BS_CHECK_MAIN>(expression, null, null).Distinct();
|
||
|
||
List<T_BS_CHECK_QUESTION> listQuesResult = new List<T_BS_CHECK_QUESTION>() { modelQ5 };
|
||
|
||
//if (listQues2 != null && listQues2.Any())
|
||
//{
|
||
// listQuesResult = listQues2.ToList();
|
||
if (!string.IsNullOrEmpty(CHECKCONTENTSearch))
|
||
listQuesResult = listQuesResult.FindAll(e => e.DESCREPTION.Contains(CHECKCONTENTSearch));
|
||
|
||
foreach (var item in listQuesSearch)
|
||
item.Nav_Main = listMainSearch.FirstOrDefault(e => e.CHECK_QUESTION_ID == item.ID);
|
||
|
||
listQuesResult.AddRange(listQuesSearch.ToList());
|
||
//}
|
||
//else
|
||
//{
|
||
// listQuesResult = listQuesSearch.ToList();
|
||
//}
|
||
result.Data = listQuesResult;
|
||
result.TotalCount = listQuesSearch.Count();
|
||
if (result.TotalCount > 0 && DataHelper.GetRequestType(Request.Headers) == 2)
|
||
{
|
||
foreach (var item in result.Data)
|
||
{
|
||
if (item.QUESTION_LEVEL > 0)
|
||
{
|
||
item.QUESTION_LEVEL_SHOW = item.QUESTION_LEVEL.GetDescription();
|
||
}
|
||
else
|
||
{
|
||
item.QUESTION_LEVEL_SHOW = "";
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (!string.IsNullOrEmpty(CHECKCONTENTSearch) && modelQ5.DESCREPTION.Contains(CHECKCONTENTSearch))
|
||
{
|
||
result.TotalCount = 1;
|
||
result.Data = new List<T_BS_CHECK_QUESTION>() { modelQ5 };
|
||
}
|
||
else
|
||
{
|
||
result.TotalCount = 0;
|
||
result.Data = new List<T_BS_CHECK_QUESTION>() { };
|
||
}
|
||
}
|
||
});
|
||
}
|
||
}
|
||
}
|