ESS端针对每个附件的展示应学习时长、已学习时长、学习完成百分比

master
xiaochanghai 3 months ago
parent e9d8bdfe03
commit 33bc76a753
  1. 11
      Tiobon.Core.Api/Tiobon.Core.Model.xml
  2. 51
      Tiobon.Core.Common/Helper/UtilHelper.cs
  3. 10
      Tiobon.Core.Model/Insert/Ghre/Ghre_CourseWare.Dto.InsertInput.cs
  4. 6
      Tiobon.Core.Model/View/Ghre/Ghre_CourseWareAttachment.Dto.View.cs
  5. 2
      Tiobon.Core.Model/ViewModels/Extend/Ghre_StudyRecordCourse.cs
  6. 9
      Tiobon.Core.Services/CommonServices.cs
  7. 1
      Tiobon.Core.Services/Ghre/Ghre_CourseWareServices.cs
  8. 42
      Tiobon.Core.Services/Ghre/Ghre_StudyRecordServices.cs
  9. 21
      Tiobon.Core/Tiobon.Core.Model.xml

@ -15382,6 +15382,12 @@
课件 (Dto.InsertInput)
</summary>
</member>
<!-- Badly formed XML comment ignored for member "P:Tiobon.Core.Model.Models.Ghre_CourseWareLink.LearnDuration" -->
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseWareLink.HasLearnDuration">
<summary>
已学习进度百分比
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.InsertGhre_CourseWareAttachmentInput">
<summary>
课件附件 (Dto.InsertInput)
@ -31967,6 +31973,11 @@
修改信息
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseWareAttachmentDto.HasLearnPercent">
<summary>
已学习进度百分比
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_CreditPointDto">
<summary>
学分记录(Dto.View)

@ -157,6 +157,57 @@ public static class UtilHelper
return errorValue;
}
#region 去除后面多余的零
/// <summary>
/// 去除后面多余的零
/// </summary>
/// <param name="dValue"></param>
/// <returns></returns>
public static string RemoveZero(this decimal? dValue)
{
if (dValue.IsNullOrEmpty())
return null;
return RemoveZero(dValue.Value);
}
///// <summary>
///// 去除后面多余的零
///// </summary>
///// <param name="dValue"></param>
///// <returns></returns>
//public static string RemoveZero(decimal? dValue)
//{
// if (dValue.IsNullOrEmpty())
// return null;
// return RemoveZero(dValue.Value);
//}
/// <summary>
/// 去除后面多余的零
/// </summary>
/// <param name="dValue"></param>
/// <returns></returns>
public static string RemoveZero(decimal dValue)
{
string sResult = dValue.ToString();
if (sResult.IndexOf(".") < 0)
return sResult;
int iIndex = sResult.Length - 1;
for (int i = sResult.Length - 1; i >= 0; i--)
{
if (sResult.Substring(i, 1) != "0")
{
iIndex = i;
break;
}
}
sResult = sResult.Substring(0, iIndex + 1);
if (sResult.EndsWith("."))
sResult = sResult.Substring(0, sResult.Length - 1);
return sResult;
}
#endregion
/// <summary>
///
/// </summary>

@ -37,8 +37,12 @@ public class Ghre_CourseWareLink
public string LinkAddress { get; set; }
/// <summary>
/// 学习时长(分钟)
/// </summary>
[Display(Name = "LearnDuration"), Description("学习时长(分钟)"), Column(TypeName = "decimal(20,2)")]
/// 学习时长(分钟)
public decimal? LearnDuration { get; set; }
/// <summary>
/// 已学习进度百分比
/// </summary>
public decimal? HasLearnDuration { get; set; }
public decimal? HasLearnPercent { get; set; }
}

@ -31,4 +31,10 @@ public class Ghre_CourseWareAttachmentDto : Ghre_CourseWareAttachment
/// 修改信息
/// </summary>
public string UpdateDataInfo { get; set; }
public decimal? HasLearnDuration { get; set; }
/// <summary>
/// 已学习进度百分比
/// </summary>
public decimal? HasLearnPercent { get; set; }
}

@ -43,7 +43,7 @@ public class Ghre_StudyRecordCourseWare
public string Source { get; set; }
public string Link { get; set; }
public List<Ghre_CourseWareAttachment> Attachments { get; set; }
public List<Ghre_CourseWareAttachmentDto> Attachments { get; set; }
public List<Ghre_CourseWareLink> Links { get; set; }

@ -1051,7 +1051,14 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
index = result.JM_PageControlT1.Toolbar.FindIndex(x => x.fnKey == "BatchUpdateYN");
if (index >= 0)
result.JM_PageControlT1.Toolbar.RemoveAt(index);
toolbar = result.JM_PageControlT1.Toolbar.Where(x => x.fnKey == "NewYN").FirstOrDefault();
if (toolbar != null) toolbar.fnKey = "TBD1YN";
toolbar = result.JM_PageControlT1.Toolbar.Where(x => x.fnKey == "UpdateYN").FirstOrDefault();
if (toolbar != null) toolbar.fnKey = "TBD2YN";
toolbar = result.JM_PageControlT1.Toolbar.Where(x => x.fnKey == "DetailYN").FirstOrDefault();
if (toolbar != null) toolbar.fnKey = "TBD3YN";
toolbar = result.JM_PageControlT1.Toolbar.Where(x => x.fnKey == "CopyYN").FirstOrDefault();
if (toolbar != null) toolbar.fnKey = "TBD4YN";
result.JM_PageControlT1.Toolbar.Insert(0, new Toolbar()
{
display = true,

@ -127,6 +127,7 @@ public class Ghre_CourseWareServices : BaseServices<Ghre_CourseWare, Ghre_Course
{
LinkName = x.AttachmentName,
LinkAddress = x.RelativePath,
LearnDuration = x.LearnDuration
}).ToList();
var IDS = result.result.DT_TableDataT1[0].CourseIds2;

@ -1,4 +1,5 @@
using Microsoft.Extensions.Logging;
using Microsoft.IdentityModel.Tokens;
using MongoDB.Driver.Linq;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
@ -1538,13 +1539,39 @@ WHERE A.Id = '{id}'";
}
}
var details = await Db.Queryable<Ghre_StudyRecordDetail>()
.Where(x => x.StudyRecordId == id)
.GroupBy(x => new { x.CourseWareAttachmentId, x.CourseWareId })
.Select(x => new
{
x.CourseWareAttachmentId,
x.CourseWareId,
StudyDuration = SqlFunc.AggregateSumNoNull(x.StudyDuration)
})
.ToListAsync();
for (int j = 0; j < course.CourseWareList.Count; j++)
{
var attachments = await Db.Queryable<Ghre_CourseWareAttachment>().Where(x => x.CourseWareId == course.CourseWareList[j].Id).ToListAsync();
course.CourseWareList[j].Attachments = attachments.Where(x => x.AttachFileExtension != "http").OrderBy(x => x.SortNo).ToList();
var attachmentDtos = attachments.Where(x => x.AttachFileExtension != "http").OrderBy(x => x.SortNo).ToList();
course.CourseWareList[j].Attachments = Mapper.Map(attachmentDtos).ToANew<List<Ghre_CourseWareAttachmentDto>>();
if (course.CourseWareList[j].Attachments != null && course.CourseWareList[j].Attachments.Any())
course.CourseWareList[j].Attachments.ForEach(x => x.RelativePath = "/Advanced" + x.RelativePath);
course.CourseWareList[j].Attachments.ForEach(x =>
{
x.HasLearnDuration = details.FirstOrDefault(o => o.CourseWareAttachmentId == x.Id)?.StudyDuration ?? 0;
if (x.HasLearnDuration != 0 && x.LearnDuration != 0)
{
x.HasLearnPercent = (x.HasLearnDuration / x.LearnDuration) * 100;
if (x.HasLearnPercent > 100)
x.HasLearnPercent = 100;
x.HasLearnPercent = x.HasLearnPercent.RemoveZero().ObjToDecimal();
}
});
course.CourseWareList[j].Links = attachments
.Where(x => x.AttachFileExtension == "http")
.OrderBy(x => x.SortNo)
@ -1553,7 +1580,20 @@ WHERE A.Id = '{id}'";
Id = x.Id,
LinkName = x.AttachmentName,
LinkAddress = x.RelativePath,
LearnDuration = x.LearnDuration
}).ToList();
course.CourseWareList[j].Links.ForEach(x =>
{
x.HasLearnDuration = details.FirstOrDefault(o => o.CourseWareAttachmentId == x.Id)?.StudyDuration ?? 0;
if (x.HasLearnDuration != 0 && x.LearnDuration != 0)
{
x.HasLearnPercent = (x.HasLearnDuration / x.LearnDuration) * 100;
if (x.HasLearnPercent > 100)
x.HasLearnPercent = 100;
x.HasLearnPercent = x.HasLearnPercent.RemoveZero().ObjToDecimal();
}
});
}
if (course.CourseBeginTime != null && course.CourseEndTime != null)

@ -3590,6 +3590,11 @@
排序
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseWareAttachmentBase.LearnDuration">
<summary>
学习时长(分钟)
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_CreditPointBase">
<summary>
学分记录 (Dto.Base)
@ -15377,6 +15382,12 @@
课件 (Dto.InsertInput)
</summary>
</member>
<!-- Badly formed XML comment ignored for member "P:Tiobon.Core.Model.Models.Ghre_CourseWareLink.LearnDuration" -->
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseWareLink.HasLearnDuration">
<summary>
已学习进度百分比
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.InsertGhre_CourseWareAttachmentInput">
<summary>
课件附件 (Dto.InsertInput)
@ -19541,6 +19552,11 @@
排序
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseWareAttachment.LearnDuration">
<summary>
学习时长(分钟)
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_CreditPoint">
<summary>
学分记录 (Model)
@ -31957,6 +31973,11 @@
修改信息
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CourseWareAttachmentDto.HasLearnPercent">
<summary>
已学习进度百分比
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_CreditPointDto">
<summary>
学分记录(Dto.View)

Loading…
Cancel
Save