mh_lcmk_sms_service/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSCheckQuestionController.cs
wyw 5d3e6758d7 1、审批找人 刚好有默认审批+顺序不连贯引起的的bug处理
2、检查登记 检查内容 添加固定项【缺项】下拉
3、检查结果 添加 缺项 对应的固定值
4、修改检查结果 取值
5、隐患上报 条目获取 取数据修改(缺项 不上报)
2024-09-26 16:34:19 +08:00

480 lines
22 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.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>() { };
}
}
});
}
}
}