培训计划达成率报表查询_宝连通

master
xiaochanghai 1 month ago
parent b373aa778a
commit 14c70dedb5
  1. 10
      Tiobon.Core.Api/Controllers/Ghre/Ghre_PlanController.cs
  2. 7
      Tiobon.Core.Api/Tiobon.Core.xml
  3. 2
      Tiobon.Core.IServices/Ghre/IGhre_PlanServices.cs
  4. 1
      Tiobon.Core.Model/Base/Ghre/Ghre_TrainFeeApplyOrder_Boltone.Dto.Base.cs
  5. 14
      Tiobon.Core.Model/ViewModels/Extend/CompletionRateBLT.cs
  6. 5
      Tiobon.Core.Services/CommonServices.cs
  7. 139
      Tiobon.Core.Services/Ghre/Ghre_PlanServices.cs
  8. 7
      Tiobon.Core/Tiobon.Core.xml

@ -58,4 +58,14 @@ public class Ghre_PlanController : BaseController<IGhre_PlanServices, Ghre_Plan,
[HttpPost, Route("QueryUshioPlanReport")]
public async Task<ServicePageResult<UshioPlanReport>> QueryUshioPlan([FromBody] QueryBody body) => await _service.QueryUshioPlan(body);
#endregion
#region 培训计划达成率——宝连通
/// <summary>
/// 培训计划达成率——宝连通
/// </summary>
/// <param name="body">条件</param>
/// <returns></returns>
[HttpPost, Route("QueryCompletionRateBLT")]
public async Task<ServicePageResult<CompletionRateBLT>> QueryCompletionRateBLT([FromBody] QueryBody body) => await _service.QueryCompletionRateBLT(body);
#endregion
}

@ -1362,6 +1362,13 @@
<param name="body">条件</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_PlanController.QueryCompletionRateBLT(Tiobon.Core.Common.QueryBody)">
<summary>
培训计划达成率——宝连通
</summary>
<param name="body">条件</param>
<returns></returns>
</member>
<member name="T:Tiobon.Core.Api.Controllers.Ghre_QuestionAnswerController">
<summary>
题目答案(Controller)

@ -14,4 +14,6 @@ public interface IGhre_PlanServices : IBaseServices<Ghre_Plan, Ghre_PlanDto, Ins
Task<ServiceResult> UpdateStatus(InsertGhre_PlanInput input, string status);
Task<ServicePageResult<UshioPlanReport>> QueryUshioPlan(QueryBody filter);
Task<ServicePageResult<CompletionRateBLT>> QueryCompletionRateBLT(QueryBody filter);
}

@ -292,6 +292,7 @@ public class Ghre_TrainFeeApplyOrder_BoltoneBase
[Display(Name = "PlanId"), Description("计划ID"), MaxLength(2000, ErrorMessage = "计划ID 不能超过 2000 个字符")]
public string PlanId { get; set; }
public List<long> PlanIds { get; set; } = new List<long>();
public List<Ghre_Attachment1> Attachments { get; set; } = new List<Ghre_Attachment1>();
public List<Ghre_TrainFeeApplyDetail_Boltone> Details { get; set; } = new List<Ghre_TrainFeeApplyDetail_Boltone>();
}

@ -0,0 +1,14 @@
namespace Tiobon.Core.Model;
public class CompletionRateBLT
{
public int Id { get; set; }
public int RowNo { get; set; }
public string Month { get; set; }
public string DeptName { get; set; }
public string DeptFullName { get; set; }
public int CourseCount { get; set; } = 0;
public int SubmitCount { get; set; } = 0;
public int CompletionRate { get; set; } = 0;
public string CompletionRate1 { get; set; }
}

@ -4301,7 +4301,7 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
break;
}
#endregion
break;
case "F_ESS_ExternalTrainApplyOrder_Boltone": //外训申请_宝连通
@ -4388,6 +4388,9 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
var dict = JsonHelper.JsonToObj<Ghre_TrainFeeApplyOrder_Boltone>(json);
var dict1 = JsonHelper.JsonToObj<Ghre_TrainFeeApplyOrder_BoltoneBase>(json);
//dict.RequestNo = await GenerateContinuousSequence("Ghrh_HumanRequest", "RequestNo", "R");
if (dict1.PlanIds != null && dict1.PlanIds.Any())
dict.PlanId = JsonHelper.ObjToJson(dict1.PlanIds);
id = await Db.Insertable(dict).ExecuteReturnSnowflakeIdAsync();

@ -1,5 +1,7 @@
using NPOI.SS.UserModel;
using NPOI.SS.Formula.Functions;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using Tiobon.Core.Common;
using static Tiobon.Core.Model.Consts;
namespace Tiobon.Core.Services;
@ -707,9 +709,138 @@ public class Ghre_PlanServices : BaseServices<Ghre_Plan, Ghre_PlanDto, InsertGhr
#endregion
#region 培训计划达成率
//public async Task<ServicePageResult<UshioPlanReport>> QueryCompletionRateBLT(QueryBody filter)
//{
//}
public async Task<ServicePageResult<CompletionRateBLT>> QueryCompletionRateBLT(QueryBody filter)
{
var data = new List<CompletionRateBLT>();
int totalCount = 0;
bool isFirst = true;
DateTime? startTime = null, endTime = null;
string seachType = string.Empty;
int? deptId_40 = null, deptId_30 = null, deptId_20 = null;
int? deptId = null;
if (filter.jsonParam != null)
foreach (JProperty jProperty in filter.jsonParam.Properties())
{
isFirst = false;
var name = jProperty.Name;
var value = jProperty.Value.ToString();
if (name == "page" || name == "pageSize")
continue;
if (name == "Month")
{
var jsonParam = JsonConvert.DeserializeObject<JsonParam>(value);
var ids1 = JsonHelper.JsonToObj<List<DateTime>>(jsonParam.columnValue.ToString());
startTime = ids1[0];
endTime = ids1[1];
continue;
}
if (name == "SeachType")
{
var jsonParam = JsonConvert.DeserializeObject<JsonParam>(value);
seachType = jsonParam.columnValue.ToString();
continue;
}
if (name == "DeptId_40")
{
var jsonParam = JsonConvert.DeserializeObject<JsonParam>(value);
deptId_40 = jsonParam.columnValue.ObjToInt();
continue;
}
if (name == "DeptId_30")
{
var jsonParam = JsonConvert.DeserializeObject<JsonParam>(value);
deptId_30 = jsonParam.columnValue.ObjToInt();
continue;
}
if (name == "DeptId_20")
{
var jsonParam = JsonConvert.DeserializeObject<JsonParam>(value);
deptId_20 = jsonParam.columnValue.ObjToInt();
continue;
}
}
if (isFirst) return new ServicePageResult<CompletionRateBLT>(filter.pageNum, totalCount, filter.pageSize, data);
filter.pageSize = 10000;
if (startTime.IsNullOrEmpty())
throw new Exception("请先选择月份!");
if (seachType.IsNullOrEmpty())
throw new Exception("请先选择查询类别!");
if (!(deptId_40.IsNotEmptyOrNull() || deptId_30.IsNotEmptyOrNull() || deptId_20.IsNotEmptyOrNull()))
throw new Exception("请先选择部门!");
var aaa = 0;
if (deptId_40.IsNotEmptyOrNull())
{
aaa++;
deptId = deptId_40;
}
if (deptId_30.IsNotEmptyOrNull())
{
aaa++;
deptId = deptId_30;
}
if (deptId_20.IsNotEmptyOrNull())
{
aaa++;
deptId = deptId_20;
}
if (aaa > 1)
throw new Exception("部门层架筛选条件不可组合使用!");
var deptName = await Db.Queryable<Ghro_Dept>().Where(x => x.DeptID == deptId).Select(x => x.DeptName).FirstAsync();
var deptName1 = await Db.Ado.GetStringAsync(@$"SELECT GHR30.dbo.[FO_DeptInfo] (
{deptId},
getdate (),
1,
'DeptFullPateName');");
if (seachType == "Month")
{
for (DateTime? dt = startTime; dt <= endTime; dt = dt.Value.AddMonths(1))
{
string formatted = dt.Value.ToString("yyyy-MM");
data.Add(new CompletionRateBLT
{
Month = formatted
});
}
}
else
{
data.Add(new CompletionRateBLT
{
Month = $"{startTime.Value.ToString("yyyy-MM")}~{endTime.Value.ToString("yyyy-MM")}"
});
}
for (int i = 0; i < data.Count; i++)
{
data[i].Id = i + 1;
data[i].Id = i + 1;
data[i].RowNo = i + 1;
data[i].DeptName = deptName;
data[i].DeptFullName = deptName1;
//var examCount = await Db.Queryable<Ghre_ExamRecord>()
// .Where(x => x.StudyRecordId != null && studyRecordIds.Contains(x.StudyRecordId.Value))
// .CountAsync();
//var passCount = await Db.Queryable<Ghre_ExamRecord>()
// .Where(x => x.StudyRecordId != null && studyRecordIds.Contains(x.StudyRecordId.Value) && x.IsPass == true)
// .CountAsync();
//if (passCount > 0 && examCount > 0)
// data[i].PassPercent = passCount / examCount;
}
return new ServicePageResult<CompletionRateBLT>(filter.pageNum, totalCount, filter.pageSize, data);
}
#endregion
}

@ -1362,6 +1362,13 @@
<param name="body">条件</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_PlanController.QueryCompletionRateBLT(Tiobon.Core.Common.QueryBody)">
<summary>
培训计划达成率——宝连通
</summary>
<param name="body">条件</param>
<returns></returns>
</member>
<member name="T:Tiobon.Core.Api.Controllers.Ghre_QuestionAnswerController">
<summary>
题目答案(Controller)

Loading…
Cancel
Save