You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Tiobon.Web/Tiobon.Core.Api/Controllers/Ghrh/Ghrh_ResumeTemplatePreviewC...

434 lines
20 KiB

using SqlSugar;
using System.Dynamic;
using Tiobon.Core.Common.DB.Dapper.Extensions;
using Tiobon.Core.Model.ViewModels.Extend;
namespace Tiobon.Core.Api.Controllers;
[AllowAnonymous, Route("api/Ghrh_ResumeTemplatePreview/[action]"), ApiExplorerSettings(GroupName = Grouping.GroupName_Other)]
public class Ghrh_ResumeTemplatePreviewController : Controller
{
private readonly ISqlSugarClient _db;
private readonly IGhrh_ResumeServices _ghrh_ResumeServices;
private readonly IGhrh_ResumeHomeServices _ghrh_ResumeHomeServices;
private readonly IGhrh_ResumeEduBGServices _ghrh_ResumeEduBGServices;
private readonly IGhrh_ResumeWorkExpServices _ghrh_ResumeWorkExpServices;
private readonly IGhrh_ResumeLicenceServices _ghrh_ResumeLicenceServices;
private readonly IGhrh_ResumeTrainingServices _ghrh_ResumeTrainingServices;
private readonly IGhrh_ResumeStatementServices _ghrh_ResumeStatementServices;
public Ghrh_ResumeTemplatePreviewController(ISqlSugarClient db,
IGhrh_ResumeServices ghrh_ResumeServices,
IGhrh_ResumeEduBGServices ghrh_ResumeEduBGServices,
IGhrh_ResumeWorkExpServices ghrh_ResumeWorkExpServices,
IGhrh_ResumeLicenceServices ghrh_ResumeLicenceServices,
IGhrh_ResumeTrainingServices ghrh_ResumeTrainingServices,
IGhrh_ResumeStatementServices ghrh_ResumeStatementServices,
IGhrh_ResumeHomeServices ghrh_ResumeHomeServices)
{
_db = db;
_ghrh_ResumeServices = ghrh_ResumeServices;
_ghrh_ResumeHomeServices = ghrh_ResumeHomeServices;
_ghrh_ResumeEduBGServices = ghrh_ResumeEduBGServices;
_ghrh_ResumeWorkExpServices = ghrh_ResumeWorkExpServices;
_ghrh_ResumeLicenceServices = ghrh_ResumeLicenceServices;
_ghrh_ResumeTrainingServices = ghrh_ResumeTrainingServices;
_ghrh_ResumeStatementServices = ghrh_ResumeStatementServices;
}
/// <summary>
/// Index
/// </summary>
/// <returns></returns>
public async Task<IActionResult> Index()
{
string sql = @"DECLARE @ID BIGINT = 1
BEGIN
DECLARE
@MasterTemplateID INT = 0,
@TemplateType INT -- 母版设定ID
SELECT @TemplateType = TemplateType
FROM Ghrh_ResumeTemplate
WHERE ID = @ID
SELECT @MasterTemplateID = ID
FROM Ghrh_ResumeTemplate
WHERE IsEnable = 1 AND TemplateType = 1
SELECT *
FROM (SELECT a.ID,
a.ID ResumeTemplateInfoGroupID,
b.ID ResumeInfoGroupID,
b.GroupName tabName,
b.GroupType tabKey,
b.TableName,
b.TablePKIDName, -- 是否可挑选栏位
ISNULL (a.IsDisplay, 0) isDisplay,
isnull (a.SortNo, b.SortNo) SortNo,
CASE
WHEN b.GroupType = 'Base' THEN 'list'
WHEN b.GroupType = 'Attachment' THEN 'Attachment'
WHEN b.GroupType = 'Statement' THEN 'Statement'
ELSE 'block'
END AS type,
-- case when ISNULL(a.IsDisplay,0)=0 then ''
CASE
WHEN 1 = 2
THEN
''
ELSE
CASE
WHEN b.GroupType = 'Base' -- 读取各模板设定
THEN
isnull
(
(SELECT pp.ColumnName field,
pp.ResumeInfoColumnName label,
pp.IsRequired required,
pp.ColumnType elementType,
CASE
WHEN pp.DataSourceType =
'ParaDetailNo'
THEN
(SELECT 'TBParaDetail_'
+ ParaTypeNo
+ '_'
+ ParaMasterNo
FROM Ghrs_ParaMaster
WHERE ParaMasterId =
pp.DataSource)
WHEN pp.DataSourceType =
'CommonList'
THEN
(SELECT 'CommonList_'
+ ListCommonSqlNo
FROM Ghrs_ListCommonSql
WHERE ListCommonSqlId =
pp.DataSource)
ELSE
NULL
END dataSource,
pp.DataType dataType,
pp.MultipleSelect multipleSelect,
kk.SortNo sortNo,
pp.Placeholder placeholder,
pp.Editable editable
FROM Ghrh_ResumeTemplateInfoGroupColumn kk,
Ghrh_ResumeInfoColumn pp
WHERE kk.ResumeTemplateInfoGroupID = a.ID
-- a.ResumeTemplateInfoGroupID
AND kk.ResumeInfoColumnID = pp.ID
AND kk.IsDisplay = 1
AND pp.IsEnable = 1
AND kk.IsEnable = 1
order by kk.SortNo
FOR JSON PATH, INCLUDE_NULL_VALUES),
'')
WHEN b.GroupType = 'Photo' -- 读取各模板设定
THEN
(SELECT PhotoType
FROM Ghrh_ResumeTemplate
WHERE ResumeTemplateID = @MasterTemplateID
FOR JSON PATH, INCLUDE_NULL_VALUES)
WHEN b.GroupType NOT IN ('Base', 'Photo') -- 读取母版的设定
THEN
isnull
(
(SELECT pp.ColumnName field,
pp.ResumeInfoColumnName label,
pp.IsRequired required,
pp.ColumnType elementType,
CASE
WHEN pp.DataSourceType =
'ParaDetailNo'
THEN
(SELECT 'TBParaDetail_'
+ ParaTypeNo
+ '_'
+ ParaMasterNo
FROM Ghrs_ParaMaster
WHERE ParaMasterId =
pp.DataSource)
WHEN pp.DataSourceType =
'CommonList'
THEN
(SELECT 'CommonList_'
+ ListCommonSqlNo
FROM Ghrs_ListCommonSql
WHERE ListCommonSqlId =
pp.DataSource)
ELSE
NULL
END dataSource,
pp.DataType dataType,
pp.MultipleSelect multipleSelect,
kk.SortNo sortNo,
pp.Placeholder placeholder,
pp.Editable editable
FROM Ghrh_ResumeTemplateInfoGroupColumn kk,
Ghrh_ResumeInfoColumn pp
WHERE kk.ResumeTemplateID =
@MasterTemplateID
AND kk.ResumeInfoGroupId = b.Id
-- b.ResumeInfoGroupId
AND pp.Id = kk.ResumeInfoColumnId
AND kk.IsDisplay = 1
AND pp.IsEnable = 1
AND kk.IsEnable = 1
order by kk.SortNo
FOR JSON PATH, INCLUDE_NULL_VALUES),
'')
END
END children1
FROM Ghrh_ResumeInfoGroup b
LEFT JOIN Ghrh_ResumeTemplateInfoGroup a
ON a.ResumeInfoGroupId = b.ID
AND a.IsEnable = 1
AND a.ResumeTemplateID = @ID
WHERE b.IsEnable = 1) a
WHERE a.IsDisplay = 1
-- order by ISNULL(a.IsDisplay,0) desc,isnull(a.SortNo,b.SortNo) -- 显示的放上面, 不显示的放下面, 再按照序号排序
ORDER BY a.SortNo ASC
END";
var columns = await _db.Ado.SqlQueryAsync<ResumeFormColumn>(sql);
columns.ForEach(x =>
{
if (x.children1.IsNotEmptyOrNull())
x.children = JsonHelper.JsonToObj<List<ResumeFormColumnChildren>>(x.children1);
if (x.children != null)
{
x.children = x.children.Where(o => o.label != "附件").ToList();
if (x.tabKey == "Base")
{
x.children.ForEach(o =>
{
if (o.field == "TitleId") o.field = "TitleName";
if (o.field == "Gender") o.field = "GenderLabel";
if (o.field == "Education") o.field = "EducationLabel";
if (o.field == "Nation") o.field = "NationLabel";
if (o.field == "MaritalStatus") o.field = "MaritalStatusLabel";
if (o.field == "PoliticStatus") o.field = "PoliticStatusLabel";
if (o.field == "UrgentRelation") o.field = "UrgentRelationLabel";
if (o.field == "CertificateType") o.field = "CertificateTypeLabel";
if (o.field == "RegisteredType") o.field = "RegisteredTypeLabel";
if (o.field == "EduDegree") o.field = "EduDegreeLabel";
});
x.children = x.children.Where(o => o.field != "EduDegreeLabel"
&& o.field != "GenderLabel"
&& o.field != "StaffName"
&& o.field != "ApplyStatusLabel"
&& o.field != "WorkYears"
&& o.field != "WorkYears"
&& o.field != "Age").ToList();
}
if (x.tabKey == "Family")
x.children.ForEach(o =>
{
if (o.field == "Gender") o.field = "GenderLabel";
if (o.field == "RelationType") o.field = "RelationTypeLabel";
});
if (x.tabKey == "Education")
x.children.ForEach(o =>
{
if (o.field == "IsGraduate") o.field = "IsGraduateLabel";
if (o.field == "DegreeLevel") o.field = "DegreeLevelLabel";
if (o.field == "BeginDate") o.field = "BeginDate1";
if (o.field == "EndDate") o.field = "EndDate1";
});
if (x.tabKey == "WorkExp" || x.tabKey == "Licence")
x.children.ForEach(o =>
{
if (o.field == "BeginDate") o.field = "BeginDate1";
if (o.field == "EndDate") o.field = "EndDate1";
});
if (x.tabKey == "Training")
x.children.ForEach(o =>
{
if (o.field == "BeginDate") o.field = "BeginDate1";
if (o.field == "EndDate") o.field = "EndDate1";
if (o.field == "IsPass") o.field = "IsPassLabel";
});
}
x.children1 = null;
});
ViewBag.Columns = columns.Where(o => o.tabName != "附件").ToList();
#region Data
dynamic Data = new ExpandoObject();
var formColumns = await QueryResumeFormColumn(1);
#region Base
var id = 1851947974159110144;
var entity = await _ghrh_ResumeServices.QueryById(id);
var columnNames = formColumns.Where(x => x.GroupType == "Base").Select(x => x.ColumnName).ToList();
columnNames = columnNames.Distinct().ToList();
var dicts = new Dictionary<string, object>
{
};
columnNames.Add("TitleName");
columnNames.Add("GenderLabel");
columnNames.Add("EducationLabel");
columnNames.Add("NationLabel");
columnNames.Add("MaritalStatusLabel");
columnNames.Add("PoliticStatusLabel");
columnNames.Add("UrgentRelationLabel");
columnNames.Add("CertificateTypeLabel");
columnNames.Add("RegisteredTypeLabel");
columnNames.Add("EduDegreeLabel");
columnNames.ForEach(x =>
{
var value = entity.GetPropertyValue(x);
dicts.Add(x, value);
});
ViewBag.BaseDic = dicts;
ViewBag.entity = entity;
#endregion
#region 家庭关系
columnNames = formColumns.Where(x => x.GroupType == "Family").Select(x => x.ColumnName).ToList();
columnNames = columnNames.Distinct().ToList();
columnNames.Add("GenderLabel");
columnNames.Add("RelationTypeLabel");
var familys = await _ghrh_ResumeHomeServices.QueryDto(x => x.ResumeId != null && x.ResumeId == id);
var familyDic = new List<Dictionary<string, object>>();
familys.ForEach(family =>
{
var dicts = new Dictionary<string, object>();
columnNames.ForEach(x =>
{
var value = family.GetPropertyValue(x);
dicts.Add(x, value);
});
familyDic.Add(dicts);
});
ViewBag.FamilyDic = familyDic;
#endregion
#region 教育背景
columnNames = formColumns.Where(x => x.GroupType == "Education").Select(x => x.ColumnName).ToList();
columnNames = columnNames.Distinct().ToList();
columnNames.Add("IsGraduateLabel");
columnNames.Add("DegreeLevelLabel");
columnNames.Add("BeginDate1");
columnNames.Add("EndDate1");
var educations = await _ghrh_ResumeEduBGServices.QueryDto(x => x.ResumeId != null && x.ResumeId == id);
var educationDic = new List<Dictionary<string, object>>();
educations.ForEach(education =>
{
var dicts = new Dictionary<string, object>();
columnNames.ForEach(x =>
{
var value = education.GetPropertyValue(x);
dicts.Add(x, value);
});
educationDic.Add(dicts);
});
ViewBag.EducationDic = educationDic;
#endregion
#region 工作经历
columnNames = formColumns.Where(x => x.GroupType == "WorkExp").Select(x => x.ColumnName).ToList();
columnNames = columnNames.Distinct().ToList();
columnNames.Add("BeginDate1");
columnNames.Add("EndDate1");
var workExps = await _ghrh_ResumeWorkExpServices.QueryDto(x => x.ResumeId != null && x.ResumeId == id);
var workExpDic = new List<Dictionary<string, object>>();
workExps.ForEach(workExp =>
{
var dicts = new Dictionary<string, object>();
columnNames.ForEach(x =>
{
var value = workExp.GetPropertyValue(x);
dicts.Add(x, value);
});
workExpDic.Add(dicts);
});
ViewBag.WorkExpDic = workExpDic;
#endregion
#region 证件
columnNames = formColumns.Where(x => x.GroupType == "Licence").Select(x => x.ColumnName).ToList();
columnNames = columnNames.Distinct().ToList();
columnNames.Add("BeginDate1");
columnNames.Add("EndDate1");
var Licences = await _ghrh_ResumeLicenceServices.QueryDto(x => x.ResumeId != null && x.ResumeId == id);
var licenceDic = new List<Dictionary<string, object>>();
Licences.ForEach(licence =>
{
var dicts = new Dictionary<string, object>();
columnNames.ForEach(x =>
{
var value = licence.GetPropertyValue(x);
dicts.Add(x, value);
});
licenceDic.Add(dicts);
});
ViewBag.LicenceDic = licenceDic;
#endregion
#region 简历培训记录
columnNames = formColumns.Where(x => x.GroupType == "Training").Select(x => x.ColumnName).ToList();
columnNames = columnNames.Distinct().ToList();
columnNames.Add("BeginDate1");
columnNames.Add("EndDate1");
columnNames.Add("IsPassLabel");
var Trainings = await _ghrh_ResumeTrainingServices.QueryDto(x => x.ResumeId != null && x.ResumeId == id);
var trainingDic = new List<Dictionary<string, object>>();
Trainings.ForEach(training =>
{
var dicts = new Dictionary<string, object>();
columnNames.ForEach(x =>
{
var value = training.GetPropertyValue(x);
dicts.Add(x, value);
});
trainingDic.Add(dicts);
});
ViewBag.TrainingDic = trainingDic;
#endregion
var statements = await _ghrh_ResumeStatementServices.QueryDto(x => x.ResumeId != null && x.ResumeId == id);//证件
ViewBag.StatementDic = statements.ToDictionary(person => person.StatementCode, person => person.TrueOrFalse);
#endregion
return View();
}
[NonAction]
public async Task<List<ResumeFormColumn1>> QueryResumeFormColumn(long resumeTemplateID)
{
var sql = @$"DECLARE @ResumeTemplateID BIGINT = {resumeTemplateID}
SELECT A.ColumnName, A.ResumeInfoColumnName ColumnNameDesc, A.ColumnType, D.GroupType
FROM Ghrh_ResumeInfoColumn A
LEFT JOIN Ghrh_ResumeTemplateInfoGroupColumn B
ON B.ResumeInfoColumnID = A.ID
AND B.IsDisplay = 1
AND B.IsEnable = 1
AND A.IsEnable = 1
JOIN Ghrh_ResumeTemplateInfoGroup C
ON B.ResumeTemplateInfoGroupID = C.Id
JOIN Ghrh_ResumeInfoGroup D
ON C.ResumeInfoGroupId = D.ID AND D.IsEnable = 1
WHERE C.ResumeTemplateID = @ResumeTemplateID
-- AND D.GroupType = 'Base'
ORDER BY D.GroupType, b.SortNo";
return await _db.Ado.SqlQueryAsync<ResumeFormColumn1>(sql);
}
}