From 82119ad8ac6a745c70bd054e5530a169498c11bb Mon Sep 17 00:00:00 2001 From: xiaochanghai Date: Mon, 24 Mar 2025 10:43:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=92=E6=9F=A5=E7=89=9B=E5=B0=BE=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E5=AD=A6=E4=B9=A0=E8=BF=9B=E5=BA=A6=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E5=B1=95=E5=BC=80=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Ghre/Ghre_StudyRecordServices.cs | 45 ++++++++++++++----- 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/Tiobon.Core.Services/Ghre/Ghre_StudyRecordServices.cs b/Tiobon.Core.Services/Ghre/Ghre_StudyRecordServices.cs index e8b3dd4f..d16282db 100644 --- a/Tiobon.Core.Services/Ghre/Ghre_StudyRecordServices.cs +++ b/Tiobon.Core.Services/Ghre/Ghre_StudyRecordServices.cs @@ -1,9 +1,9 @@ -using MongoDB.Driver.Linq; +using Microsoft.Extensions.Logging; +using MongoDB.Driver.Linq; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.SS.Util; using NPOI.XSSF.UserModel; -using Org.BouncyCastle.Crypto; using static Tiobon.Core.DataAccess.ReportHelper; using static Tiobon.Core.Model.Consts; @@ -15,15 +15,17 @@ namespace Tiobon.Core.Services; public class Ghre_StudyRecordServices : BaseServices, IGhre_StudyRecordServices { private readonly IBaseRepository _dal; + private readonly ILogger _logger; private IGhre_CourseServices _ghre_CourseServices; public Ghre_StudyRecordServices(ICaching caching, IGhre_CourseServices ghre_CourseServices, - IBaseRepository dal) + IBaseRepository dal, ILogger logger) { this._dal = dal; base.BaseDal = dal; base._caching = caching; _ghre_CourseServices = ghre_CourseServices; + _logger = logger; } public override async Task> QueryFilterPage(QueryBody filter, string condition, bool? IsEnable = true) { @@ -1558,35 +1560,43 @@ WHERE A.Id = '{id}'"; if (course.CourseStandardDuration.IsNull()) { - sql = $@"SELECT SUM (ISNULL (A.Hours, 0) * 60 + A.Minutes) Minutes + if (course.CourseId.IsNotEmptyOrNull()) + sql = $@"SELECT SUM (ISNULL (A.Hours, 0) * 60 + A.Minutes) Minutes FROM Ghre_CourseWare A WHERE A.Id IN (SELECT CourseWareId FROM Ghre_Course - WHERE (Id = '{course.CourseId}' OR CourseSceneId = '{course.CourseSceneId}' OR CourseSceneIds like '%{course.CourseSceneId}%') AND IsEnable = 1)"; + WHERE (Id = '{course.CourseId}') AND IsEnable = 1)"; + else + sql = $@"SELECT SUM (ISNULL (A.Hours, 0) * 60 + A.Minutes) Minutes + FROM Ghre_CourseWare A + WHERE A.Id IN + (SELECT CourseWareId + FROM Ghre_Course + WHERE (CourseSceneId = '{course.CourseSceneId}' OR CourseSceneIds like '%{course.CourseSceneId}%') AND IsEnable = 1)"; var mins = await Db.Ado.GetDecimalAsync(sql); course.CourseStandardDuration1 = mins; } if (course.StudyDuration1.IsNull()) - course.StudyDuration = $"0 分 0 秒"; + course.StudyDuration = $"0 小时 0 分 0 秒"; else { var dt = DateTime.Now; var dt1 = dt.AddMinutes((double)course.StudyDuration1); var subTract = dt1.Subtract(dt); - course.StudyDuration = $"{subTract.Minutes} 分 {subTract.Seconds} 秒"; + course.StudyDuration = $"{subTract.Hours} 小时 {subTract.Minutes} 分 {subTract.Seconds} 秒"; } if (course.CourseStandardDuration1.IsNull()) - course.CourseStandardDuration = $"0 分 0 秒"; + course.CourseStandardDuration = $"0 小时 0 分 0 秒"; else { var dt = DateTime.Now; var dt1 = dt.AddMinutes((double)course.CourseStandardDuration1); var subTract = dt1.Subtract(dt); - course.CourseStandardDuration = $"{subTract.Minutes} 分 {subTract.Seconds} 秒"; + course.CourseStandardDuration = $"{subTract.Hours} 小时 {subTract.Minutes} 分 {subTract.Seconds} 秒"; } return ServiceResult.OprateSuccess("查询成功!", course); } @@ -1649,6 +1659,8 @@ WHERE A.Id = '{id}'"; public async Task GenerateStaffStudyRecord(ISqlSugarClient Db, long studyRecordId, decimal duration, long attachmentId) { + //_logger.LogInformation($"【记录学习时长】GenerateStaffStudyRecord"); + var record = await Db.Queryable().FirstAsync(x => x.Id == studyRecordId); var attachment = await Db.Queryable().FirstAsync(x => x.Id == attachmentId); @@ -1673,13 +1685,21 @@ WHERE A.Id = '{id}'"; #endregion decimal studyProgress = 0; + //_logger.LogInformation($"【记录学习时长】studyProgress:{studyProgress}"); + var sql = $@"SELECT SUM(ISNULL (A.Hours, 0) * 60 + A.Minutes) Minutes FROM Ghre_CourseWare A WHERE A.Id IN (SELECT CourseWareId FROM Ghre_Course - WHERE (Id = '{record.CourseId}' - OR CourseSceneId = '{record.CourseSceneId}' + WHERE (Id = '{record.CourseId}') AND IsEnable = 1)"; + if(record.CourseId.IsNullOrEmpty()) + sql = $@"SELECT SUM(ISNULL (A.Hours, 0) * 60 + A.Minutes) Minutes + FROM Ghre_CourseWare A + WHERE A.Id IN + (SELECT CourseWareId + FROM Ghre_Course + WHERE (CourseSceneId = '{record.CourseSceneId}' OR CourseSceneIds like '%{record.CourseSceneId}%') AND IsEnable = 1)"; var mins = await Db.Ado.GetDecimalAsync(sql); @@ -1690,6 +1710,9 @@ WHERE A.Id = '{id}'"; if (studyProgress > 100) studyProgress = 100; } + //_logger.LogInformation($"【记录学习时长】studyProgress1:{studyProgress}"); + + #region 判断所有附件 是否都被打开 if (studyProgress == 100)