guqiang 2 týždňov pred
rodič
commit
ed0ce6d3a8

+ 11 - 4
src/Hotline.Api/Controllers/Bigscreen/EnforcementScreenController.cs

@@ -353,14 +353,16 @@ namespace Hotline.Api.Controllers.Bigscreen
                        .Select((x, o) => new
                        {
                            o.Id,
-                           Month = o.StartTime.Value.Month
+                           Month = o.StartTime.Value.Month,
+                           IsEnforcementOrder = o.IsEnforcementOrder
                        })
                        .MergeTable()
                        .GroupBy(x => x.Month)
                        .Select(x => new OrderMonthlyTrendDto
                        {
                            Month = x.Month,
-                           SumCount = SqlFunc.AggregateCount(x.Month)
+                           EnforcementOrderNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.IsEnforcementOrder.HasValue && x.IsEnforcementOrder.Value == true, 1, 0)),
+                           UnEnforcementOrderNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.IsEnforcementOrder.HasValue && x.IsEnforcementOrder.Value == false, 1, 0))
                        })
                        .ToListAsync();
 
@@ -370,8 +372,13 @@ namespace Hotline.Api.Controllers.Bigscreen
                 var data = queryData.Find(p => p.Month == i);
                 var SumCount = 0;
                 if (data != null)
-                    SumCount = data.SumCount;
-                orderMonthlyTrends.Add(new OrderMonthlyTrendDto { Month = i, SumCount = SumCount });
+                {
+                    orderMonthlyTrends.Add(data);
+                }
+                else
+                {
+                    orderMonthlyTrends.Add(new OrderMonthlyTrendDto { Month = i, EnforcementOrderNum = 0, UnEnforcementOrderNum = 0 });
+                }
             }
 
             return orderMonthlyTrends;

+ 14 - 6
src/Hotline.Api/Controllers/Bigscreen/JudicialManagementScreenController.cs

@@ -69,7 +69,8 @@ namespace Hotline.Api.Controllers.Bigscreen
                     EnforcementOrderNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.IsEnforcementOrder.HasValue && d.IsEnforcementOrder.Value == true, 1, 0)),
                     TheClueIsTrueNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.IsTheClueTrue.HasValue && d.IsTheClueTrue.Value == true, 1, 0)),
                     TheClueIsNotTrueNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.IsTheClueTrue.HasValue && d.IsTheClueTrue.Value == false, 1, 0)),
-                    PassTheBuckOrderNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.IsPassTheBuckOrder == true, 1, 0))
+                    PassTheBuckOrderNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.IsPassTheBuckOrder == true, 1, 0)),
+                    ToBeVerifiedOrderCount = SqlFunc.AggregateCount(SqlFunc.IIF(d.IsEnforcementOrder == null, 1, 0))
                 })
                 .ToListAsync();
             if (data != null && data.Count > 0)
@@ -310,14 +311,16 @@ namespace Hotline.Api.Controllers.Bigscreen
                        .Select(o => new
                        {
                            o.Id,
-                           Month = o.CreationTime.Month
+                           Month = o.CreationTime.Month,
+                           IsEnforcementOrder = o.IsEnforcementOrder
                        })
                        .MergeTable()
                        .GroupBy(x => x.Month)
                        .Select(x => new OrderMonthlyTrendDto
                        {
                            Month = x.Month,
-                           SumCount = SqlFunc.AggregateCount(x.Month)
+                           EnforcementOrderNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.IsEnforcementOrder.HasValue && x.IsEnforcementOrder.Value == true, 1, 0)),
+                           UnEnforcementOrderNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.IsEnforcementOrder.HasValue && x.IsEnforcementOrder.Value == false, 1, 0))
                        })
                        .ToListAsync();
 
@@ -325,10 +328,15 @@ namespace Hotline.Api.Controllers.Bigscreen
             for (int i = 1; i <= monthCount; i++)
             {
                 var data = queryData.Find(p => p.Month == i);
-                var SumCount = 0;
                 if (data != null)
-                    SumCount = data.SumCount;
-                orderMonthlyTrends.Add(new OrderMonthlyTrendDto { Month = i, SumCount = SumCount });
+                {
+                    orderMonthlyTrends.Add(data);
+                }
+                else
+                {
+                    orderMonthlyTrends.Add(new OrderMonthlyTrendDto { Month = i, EnforcementOrderNum=0,UnEnforcementOrderNum=0 });
+                }
+                
             }
 
             return orderMonthlyTrends;

+ 20 - 7
src/Hotline.Application/Exam/Service/ExamManages/UserExamService.cs

@@ -143,13 +143,12 @@ namespace Hotline.Application.Exam.Service.ExamManages
             var examAnswerRepository = new ExamRepository<ExamAnswer>(_uow, _dataPermissionFilterBuilder, _serviceProvider);
             var userExamItemRepository = new ExamRepository<UserExamItem>(_uow, _dataPermissionFilterBuilder, _serviceProvider);
 
-            var userExamItemTable = userExamItemRepository.Queryable();
-            var userExamTable = _repository.Queryable();
+            var userExamItemTable = userExamItemRepository.Queryable().Where(i=> i.QuestionId == examQuestionRequest.QuestionId);
+            var userExamTable = _repository.Queryable().Where(u=> u.UserId == _sessionContext.UserId);
             var examAnswerTable = examAnswerRepository.Queryable();
 
             var examAnswers = await examAnswerTable.InnerJoin(userExamItemTable, (e, i) => e.UserExamItemId == i.Id)
                 .InnerJoin(userExamTable, (e, i, u) => i.UserExamId == u.Id)
-                .Where((e, i, u) => i.QuestionId == examQuestionRequest.QuestionId && u.UserId == _sessionContext.UserId)
                 .Select((e, i, u) => e).ToListAsync();
             return examAnswers;
         }
@@ -811,9 +810,7 @@ namespace Hotline.Application.Exam.Service.ExamManages
 
         private async Task<List<ExamAnswer>> UpdateExamAnswer(UpdateUserExamItemDto updateUserExamItemDto, CancellationToken cancellationToken)
         {
-            var repository = new ExamRepository<ExamAnswer>(_uow, _dataPermissionFilterBuilder, _serviceProvider);
-
-            var examAnswerTable = repository.Queryable();
+            var examAnswerTable = _examAnswerRepository.Queryable();
 
             var userExamItemTable = _userExamItemRepository.Queryable().Where(x => x.Id == updateUserExamItemDto.Id);
 
@@ -826,10 +823,26 @@ namespace Hotline.Application.Exam.Service.ExamManages
                 if (examAnswer != null)
                 {
                     examAnswer.Answer = updateUserExamItemDto.Answer;
+                    examAnswer.UserId = _sessionContext.UserId;
+                    examAnswer.UserExamItemId = updateUserExamItemDto.Id;
 
                     examAnswer.ToUpdate(_sessionContext);
 
-                    await repository.ValidateAddAsync(examAnswer, cancellationToken);                   
+                    await _examAnswerRepository.ValidateUpdateAsync(examAnswer, cancellationToken);
+
+                    examAnswers.Add(examAnswer);
+                }
+                else
+                {
+                    examAnswer = new ExamAnswer
+                    {
+                        Answer = updateUserExamItemDto.Answer,
+                        UserId = _sessionContext.UserId,
+                        UserExamItemId = updateUserExamItemDto.Id
+                    };
+                    examAnswer.ToInsert(_sessionContext);
+
+                    await _examAnswerRepository.ValidateAddAsync(examAnswer, cancellationToken);
 
                     examAnswers.Add(examAnswer);
                 }                

+ 4 - 3
src/Hotline.Application/Exam/Service/Practices/PracticeService.cs

@@ -366,7 +366,7 @@ namespace Hotline.Application.Exam.Service.Practices
             var practiceQuestionTable = _practiceQuestionRepository.Queryable().Where(expression);
             var practiceQuestionKnowladgeTable = _practiceQuestionKnowladgeRepository.Queryable();
             var knowlegdeTable = knowledgeRepository.Queryable();
-            var queryResult = practiceQuestionTable.InnerJoin(practiceQuestionKnowladgeTable, (t, ts) => t.QuestionId == ts.QuestionId)
+            var queryResult = practiceQuestionTable.InnerJoin(practiceQuestionKnowladgeTable, (t, ts) => t.QuestionId == ts.QuestionId && t.Id == ts.PracticeQuestionId)
                 .InnerJoin(knowlegdeTable, (t, ts, sw) => ts.KnowladgeId == sw.Id)
                 .Select((t, ts, sw) => new PracticeQuestionKnowladgeDto
                 {
@@ -388,10 +388,11 @@ namespace Hotline.Application.Exam.Service.Practices
             var practiceQuestionTable = _practiceQuestionRepository.Queryable().Where(expression);
             var practiceQuestionSourcewareTable = _practiceQuestionSourcewareRepository.Queryable();
             var sourcewareTable = sourcewareRepository.Queryable();
-            var queryResult = practiceQuestionTable.InnerJoin(practiceQuestionSourcewareTable, (t, ts) => t.QuestionId == ts.QuestionId)
+            var queryResult = practiceQuestionTable.InnerJoin(practiceQuestionSourcewareTable, (t, ts) => t.QuestionId == ts.QuestionId && t.Id == ts.PracticeQuestionId)
                 .InnerJoin(sourcewareTable, (t, ts, sw) => ts.SourcewareId == sw.Id)
                 .Select((t, ts, sw) => new PracticeQuestionSourcewareDto
                 {
+                    AttachmentId = sw.AttachmentId,
                     SourcewareId = ts.SourcewareId,
                     QuestionId = ts.QuestionId,
                     Name = sw.Name,
@@ -407,7 +408,7 @@ namespace Hotline.Application.Exam.Service.Practices
             var practiceQuestionTable = _practiceQuestionRepository.Queryable().Where(expression);
             var practiceQuestionOptionTable = _practiceQuestionOptionsRepository.Queryable();
 
-            var queryResult = practiceQuestionTable.InnerJoin(practiceQuestionOptionTable, (p, o) => p.QuestionId == o.QuestionId)
+            var queryResult = practiceQuestionTable.InnerJoin(practiceQuestionOptionTable, (p, o) => p.QuestionId == o.QuestionId && p.Id == o.PracticeQuestionId)
                 .Select((p, o) => new PracticeQuestionOptionsDto
                 {
                     Content = o.Content,

+ 9 - 9
src/Hotline.Application/JudicialManagement/EnforcementApplication.cs

@@ -397,12 +397,12 @@ namespace Hotline.Application.JudicialManagement
                 .Where((x, o) => x.CreationTime >= queryIndustryOrderStatisticsRateRequest.StartTime && x.CreationTime <= queryIndustryOrderStatisticsRateRequest.EndTime)
                 .WhereIF(string.IsNullOrEmpty(queryIndustryOrderStatisticsRateRequest.AreaCode), (x, o)=> o.AreaCode!=null &&  o.AreaCode.StartsWith(queryIndustryOrderStatisticsRateRequest.AreaCode));
 
-            var queryable = judicialManagementOrderTable.InnerJoin<OrderSnapshot>((j, o) => j.Id == o.Id)
-               .GroupBy((j, o) => o.IndustryName)
-               .Select((j, o) => new IndustryOrderStaticsRateDto
+            var queryable = judicialManagementOrderTable.InnerJoin<OrderSnapshot>((x,o,s) => x.Id == s.Id)
+               .GroupBy((x, o, s) => s.IndustryName)
+               .Select((x, o, s) => new IndustryOrderStaticsRateDto
                {
-                   IndustryName = o.IndustryName,
-                   Rate = SqlFunc.AggregateCount(SqlFunc.IIF(j.IsEnforcementOrder.HasValue && j.IsEnforcementOrder == true, 1, 0))/ SqlFunc.AggregateCount(o.Id),
+                   IndustryName = s.IndustryName,
+                   Rate = SqlFunc.AggregateCount(SqlFunc.IIF(o.IsEnforcementOrder.HasValue && o.IsEnforcementOrder == true, 1, 0))/ SqlFunc.AggregateCount(o.Id),
                });
 
             var result = await queryable.ToListAsync();
@@ -418,11 +418,11 @@ namespace Hotline.Application.JudicialManagement
                 .WhereIF(string.IsNullOrEmpty(queryEventTypeOrderStaticsRequest.AreaCode), (x, o) => o.AreaCode!=null && o.AreaCode.StartsWith(queryEventTypeOrderStaticsRequest.AreaCode));
 
             var queryable = judicialManagementOrderTable
-               .LeftJoin<JudicialComplaintsEventType>((o, j) => o.EventTypeOneLevelId == j.Id)
-               .GroupBy((o, j) => j.EventTypeName)
-               .Select((o, j) => new EventTypeOrderStaticsDto
+               .LeftJoin<JudicialComplaintsEventType>((x, o, s) => x.EventTypeOneLevelId == s.Id)
+               .GroupBy((x, o, s) => s.EventTypeName)
+               .Select((x, o, s) => new EventTypeOrderStaticsDto
                {
-                   EventTypeName = j.EventTypeName,
+                   EventTypeName = s.EventTypeName,
                    Count =  SqlFunc.AggregateCount(o.Id),
                });
 

+ 2 - 0
src/Hotline.Repository.SqlSugar/Exam/Validators/ExamManages/ExamAnswerValidator.cs

@@ -33,6 +33,8 @@ namespace Hotline.Repository.SqlSugar.Exam.Validators.ExamManages
         protected override void BaseValidateRule()
         {
             base.BaseValidateRule();
+            RuleFor(m=>m.UserId).NotEmpty().WithMessage(x => string.Format(ErrorMessage.IsRequired, x.GetType().GetDescription(nameof(ExamAnswer.UserId))));
+            RuleFor(m=>m.UserExamItemId).NotEmpty().WithMessage(x => string.Format(ErrorMessage.IsRequired, x.GetType().GetDescription(nameof(ExamAnswer.UserId))));
         }
 
         protected override void ValidateRuleWithAdd()

+ 15 - 1
src/Hotline.Share/Dtos/JudicialManagement/EnforcementBigscreenDto.cs

@@ -39,6 +39,12 @@ namespace Hotline.Share.Dtos.JudicialManagement
         public int OrderCountNum { get; set; }
 
 
+        /// <summary>
+        /// 待核实订单
+        /// </summary>
+        public int ToBeVerifiedOrderCount { get; set; }
+
+
     }
 
     /// <summary>
@@ -295,7 +301,15 @@ namespace Hotline.Share.Dtos.JudicialManagement
     {
         public int Month { get; set; }
 
-        public int SumCount { get; set; }
+        /// <summary>
+        /// 非执法工单数
+        /// </summary>
+        public int UnEnforcementOrderNum { get; set; }
+
+        /// <summary>
+        /// 执法工单数
+        /// </summary>
+        public int EnforcementOrderNum { get; set; }
     }
 
     /// <summary>

+ 5 - 1
src/Hotline.Share/Dtos/Practices/PracticeQuestionSourcewareDto.cs

@@ -12,7 +12,11 @@ namespace Hotline.Share.Dtos.Questions
     [Description("关联课件")]
     public class PracticeQuestionSourcewareDto: UpdatePracticeQuestionSourcewareDto
     {
-
+        /// <summary>
+        /// 附件Id
+        /// </summary>
+        [Description("附件Id")]
+        public string AttachmentId { get; set; }
     }
 
     /// <summary>