Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
elleai
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ai-tech
E
ellehuis-group
backend
elleai
Commits
df093341
Commit
df093341
authored
Oct 21, 2024
by
陈立彬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
任务调度
parent
2433d18b
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
145 additions
and
92 deletions
+145
-92
AppExamineService.java
.../breeze/elleai/application/service/AppExamineService.java
+77
-45
CommonService.java
.../breeze/elleai/domain/sparring/service/CommonService.java
+2
-0
CommonServiceImpl.java
...eze/elleai/domain/sparring/service/CommonServiceImpl.java
+8
-0
ExamineServiceImpl.java
...ze/elleai/domain/sparring/service/ExamineServiceImpl.java
+1
-0
SingleJob.java
src/main/java/cn/breeze/elleai/job/SingleJob.java
+54
-47
Codes.java
src/main/java/cn/breeze/elleai/util/Codes.java
+3
-0
No files found.
src/main/java/cn/breeze/elleai/application/service/AppExamineService.java
View file @
df093341
...
...
@@ -7,8 +7,10 @@ import cn.breeze.elleai.application.dto.request.*;
import
cn.breeze.elleai.application.dto.response.*
;
import
cn.breeze.elleai.domain.sparring.model.request.*
;
import
cn.breeze.elleai.domain.sparring.model.response.*
;
import
cn.breeze.elleai.domain.sparring.service.CommonService
;
import
cn.breeze.elleai.domain.sparring.service.ExamineService
;
import
cn.breeze.elleai.exception.InternalException
;
import
cn.breeze.elleai.util.Codes
;
import
cn.breeze.elleai.util.UserPrincipal
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.collection.CollectionUtil
;
...
...
@@ -29,8 +31,7 @@ import java.util.function.Function;
import
java.util.stream.Collectors
;
import
java.util.stream.IntStream
;
import
static
java
.
util
.
stream
.
Collectors
.
toList
;
import
static
java
.
util
.
stream
.
Collectors
.
toMap
;
import
static
java
.
util
.
stream
.
Collectors
.*;
/**
...
...
@@ -53,6 +54,8 @@ public class AppExamineService {
private
final
AiPlatformExtensionService
extensionService
;
private
final
CommonService
commonService
;
/************************************************** 场景分类 **************************************************/
...
...
@@ -1166,14 +1169,28 @@ public class AppExamineService {
detailSaveModel
.
setAnswer
(
answer
);
// AI 点评
AiSingleEvaluateResultDto
evaluateResultDto
=
extensionService
.
run4SingleEvaluate
(
businessNo
,
userId
,
examineQaDto
.
getQuestion
(),
examineQaDto
.
getAnswer
(),
answer
);
if
(
Objects
.
nonNull
(
evaluateResultDto
))
{
detailSaveModel
.
setScore
(
evaluateResultDto
.
getScore
());
detailSaveModel
.
setEvaluation
(
evaluateResultDto
.
getEvaluation
());
}
// AiSingleEvaluateResultDto evaluateResultDto = extensionService.run4SingleEvaluate(businessNo, userId, examineQaDto.getQuestion(), examineQaDto.getAnswer(), answer);
// if(Objects.nonNull(evaluateResultDto)) {
// detailSaveModel.setScore(evaluateResultDto.getScore());
// detailSaveModel.setEvaluation(evaluateResultDto.getEvaluation());
// }
examineService
.
saveExamineRecordDetail
(
detailSaveModel
);
// 定时任务
ExamineEvaluateJobResponseModel
evaluateJob
=
commonService
.
getEvaluateJob
(
0
,
detailSaveModel
.
getId
());
if
(
Objects
.
isNull
(
evaluateJob
))
{
ExamineEvaluateJobSaveModel
model
=
new
ExamineEvaluateJobSaveModel
();
model
.
setBusinessId
(
detailSaveModel
.
getId
());
model
.
setBusinessNo
(
businessNo
);
model
.
setType
(
0
);
model
.
setStatus
(
0
);
model
.
setCreateTime
(
new
Date
());
commonService
.
saveEvaluateJob
(
model
);
String
redisKey
=
String
.
format
(
Codes
.
SINGLE_AI_EVALUATE_JOB_STATUS
,
businessNo
);
redisTemplate
.
opsForValue
().
set
(
redisKey
,
"0"
,
7
,
TimeUnit
.
DAYS
);
}
// 更新缓存
businessCache
.
setRecordId
(
recordId
);
redisTemplate
.
opsForValue
().
set
(
examBusinessKey
,
JSONObject
.
toJSONString
(
businessCache
),
1
,
TimeUnit
.
DAYS
);
...
...
@@ -1202,40 +1219,51 @@ public class AppExamineService {
}
Integer
recordId
=
businessCache
.
getRecordId
();
// 获取答题结果
ExamineDetailRecordRequestModel
requestModel
=
new
ExamineDetailRecordRequestModel
();
requestModel
.
setRecordId
(
recordId
);
List
<
ExamineDetailRecordResponseModel
>
detailRecordList
=
examineService
.
examineDetailRecordList
(
requestModel
);
if
(
CollectionUtil
.
isNotEmpty
(
detailRecordList
))
{
// 计算综合评分
double
totalScore
=
detailRecordList
.
stream
().
filter
(
v
->
Objects
.
nonNull
(
v
.
getScore
())).
mapToDouble
(
ExamineDetailRecordResponseModel:
:
getScore
).
sum
();
Double
avgScore
=
totalScore
/
detailRecordList
.
size
();
List
<
Integer
>
qaIdList
=
detailRecordList
.
stream
().
map
(
ExamineDetailRecordResponseModel:
:
getQaId
).
collect
(
Collectors
.
toList
());
List
<
ExamineQaResponseModel
>
examineQaList
=
examineService
.
examineQaList
(
qaIdList
);
Map
<
Integer
,
ExamineQaResponseModel
>
qaMap
=
examineQaList
.
stream
().
collect
(
toMap
(
ExamineQaResponseModel:
:
getId
,
Function
.
identity
()));
String
qaResultStr
=
""
;
for
(
int
i
=
0
;
i
<
detailRecordList
.
size
();
i
++)
{
ExamineDetailRecordResponseModel
detail
=
detailRecordList
.
get
(
i
);
ExamineQaResponseModel
qa
=
qaMap
.
get
(
detail
.
getQaId
());
qaResultStr
+=
"问题 "
+
(
i
+
1
)
+
": "
+
qa
.
getQuestion
()
+
"\n"
;
qaResultStr
+=
"得分:"
+
detail
.
getScore
()
+
"\n"
;
qaResultStr
+=
"评分说明:"
+
detail
.
getEvaluation
()
+
"\n"
;
qaResultStr
+=
"----------------------------------------\n"
;
}
// 执行综合点评
String
overallEvaluation
=
extensionService
.
run4TotalEvaluate
(
businessNo
,
userId
,
avgScore
.
floatValue
(),
qaResultStr
);
// 更新答题数量
ExamineRecordSaveModel
saveModel
=
new
ExamineRecordSaveModel
();
saveModel
.
setId
(
recordId
);
saveModel
.
setOverallEvaluation
(
overallEvaluation
);
saveModel
.
setOverallScore
(
avgScore
.
floatValue
());
examineService
.
saveExamineRecord
(
saveModel
);
ExamineEvaluateJobResponseModel
evaluateJob
=
commonService
.
getEvaluateJob
(
1
,
recordId
);
if
(
Objects
.
isNull
(
evaluateJob
))
{
ExamineEvaluateJobSaveModel
model
=
new
ExamineEvaluateJobSaveModel
();
model
.
setBusinessId
(
recordId
);
model
.
setBusinessNo
(
businessNo
);
model
.
setType
(
1
);
model
.
setStatus
(
0
);
model
.
setCreateTime
(
new
Date
());
commonService
.
saveEvaluateJob
(
model
);
}
// 获取答题结果
// ExamineDetailRecordRequestModel requestModel = new ExamineDetailRecordRequestModel();
// requestModel.setRecordId(recordId);
// List<ExamineDetailRecordResponseModel> detailRecordList = examineService.examineDetailRecordList(requestModel);
// if(CollectionUtil.isNotEmpty(detailRecordList)) {
// // 计算综合评分
// double totalScore = detailRecordList.stream().filter(v -> Objects.nonNull(v.getScore())).mapToDouble(ExamineDetailRecordResponseModel::getScore).sum();
// Double avgScore = totalScore / detailRecordList.size();
//
// List<Integer> qaIdList = detailRecordList.stream().map(ExamineDetailRecordResponseModel::getQaId).collect(Collectors.toList());
// List<ExamineQaResponseModel> examineQaList = examineService.examineQaList(qaIdList);
// Map<Integer, ExamineQaResponseModel> qaMap = examineQaList.stream().collect(toMap(ExamineQaResponseModel::getId, Function.identity()));
//
// String qaResultStr = "";
// for(int i = 0; i < detailRecordList.size(); i++) {
// ExamineDetailRecordResponseModel detail = detailRecordList.get(i);
// ExamineQaResponseModel qa = qaMap.get(detail.getQaId());
//
// qaResultStr += "问题 " + (i + 1) + ": " + qa.getQuestion() + "\n";
// qaResultStr += "得分:" + detail.getScore() + "\n";
// qaResultStr += "评分说明:" + detail.getEvaluation() + "\n";
// qaResultStr += "----------------------------------------\n";
// }
//
// // 执行综合点评
// String overallEvaluation = extensionService.run4TotalEvaluate(businessNo, userId, avgScore.floatValue(), qaResultStr);
// // 更新答题数量
// ExamineRecordSaveModel saveModel = new ExamineRecordSaveModel();
// saveModel.setId(recordId);
// saveModel.setOverallEvaluation(overallEvaluation);
// saveModel.setOverallScore(avgScore.floatValue());
//
// examineService.saveExamineRecord(saveModel);
// }
}
...
...
@@ -1248,10 +1276,14 @@ public class AppExamineService {
*/
public
ExamineRecordMobileDto
getExamineFinalResult
(
UserPrincipal
userPrincipal
,
Integer
examineId
,
String
businessNo
)
{
// 获取考试记录信息
ExamineRecordResponseModel
recordModel
=
examineService
.
examineRecordDetail
(
businessNo
);
if
(
Objects
.
nonNull
(
recordModel
))
{
Integer
recordId
=
recordModel
.
getId
();
return
this
.
examineRecordMobileDetail
(
recordId
);
String
totalJobKey
=
String
.
format
(
Codes
.
TOTAL_AI_EVALUATE_JOB_STATUS
,
businessNo
);
String
totalJobStatus
=
redisTemplate
.
opsForValue
().
get
(
totalJobKey
);
if
(
Objects
.
equals
(
totalJobStatus
,
"1"
))
{
ExamineRecordResponseModel
recordModel
=
examineService
.
examineRecordDetail
(
businessNo
);
if
(
Objects
.
nonNull
(
recordModel
))
{
Integer
recordId
=
recordModel
.
getId
();
return
this
.
examineRecordMobileDetail
(
recordId
);
}
}
return
null
;
}
...
...
src/main/java/cn/breeze/elleai/domain/sparring/service/CommonService.java
View file @
df093341
...
...
@@ -25,5 +25,7 @@ public interface CommonService {
void
saveEvaluateJob
(
ExamineEvaluateJobSaveModel
dto
);
ExamineEvaluateJobResponseModel
getEvaluateJob
(
Integer
type
,
Integer
businessId
);
List
<
ExamineEvaluateJobResponseModel
>
pendingEvaluateJobList
();
}
src/main/java/cn/breeze/elleai/domain/sparring/service/CommonServiceImpl.java
View file @
df093341
...
...
@@ -109,6 +109,14 @@ public class CommonServiceImpl implements CommonService{
evaluateJobMapper
.
insertOrUpdateSelective
(
entity
);
}
@Override
public
ExamineEvaluateJobResponseModel
getEvaluateJob
(
Integer
type
,
Integer
businessId
)
{
QueryWrapper
queryWrapper
=
QueryWrapper
.
create
()
.
where
(
EXAMINE_EVALUATE_JOB_ENTITY
.
TYPE
.
eq
(
type
)
.
and
(
EXAMINE_EVALUATE_JOB_ENTITY
.
BUSINESS_ID
.
eq
(
businessId
)));
return
evaluateJobMapper
.
selectOneByQueryAs
(
queryWrapper
,
ExamineEvaluateJobResponseModel
.
class
);
}
@Override
public
List
<
ExamineEvaluateJobResponseModel
>
pendingEvaluateJobList
()
{
...
...
src/main/java/cn/breeze/elleai/domain/sparring/service/ExamineServiceImpl.java
View file @
df093341
...
...
@@ -486,6 +486,7 @@ public class ExamineServiceImpl implements ExamineService {
UserExamineDetailRecordEntity
entity
=
BeanUtil
.
toBean
(
dto
,
UserExamineDetailRecordEntity
.
class
);
entity
.
setUpdateTime
(
new
Date
());
userExamineDetailRecordMapper
.
insertOrUpdateSelective
(
entity
);
dto
.
setId
(
entity
.
getId
());
}
@Override
...
...
src/main/java/cn/breeze/elleai/job/SingleJob.java
View file @
df093341
...
...
@@ -13,6 +13,7 @@ import cn.breeze.elleai.domain.sparring.model.response.ExamineQaResponseModel;
import
cn.breeze.elleai.domain.sparring.model.response.ExamineRecordDetailResponseModel
;
import
cn.breeze.elleai.domain.sparring.service.CommonService
;
import
cn.breeze.elleai.domain.sparring.service.ExamineService
;
import
cn.breeze.elleai.util.Codes
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.util.StrUtil
;
import
lombok.RequiredArgsConstructor
;
...
...
@@ -27,6 +28,7 @@ import org.springframework.stereotype.Component;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.concurrent.TimeUnit
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
...
...
@@ -94,56 +96,61 @@ public class SingleJob extends QuartzJobBean {
update
.
setStatus
(
1
);
commonService
.
saveEvaluateJob
(
update
);
//TODO 更新任务缓存信息
// 更新任务缓存信息
String
redisKey
=
String
.
format
(
Codes
.
SINGLE_AI_EVALUATE_JOB_STATUS
,
businessNo
);
redisTemplate
.
opsForValue
().
set
(
redisKey
,
"1"
,
7
,
TimeUnit
.
DAYS
);
}
}
else
{
//TODO 判断所有题目是否已经单题点评完毕
// 获取答题结果
ExamineDetailRecordRequestModel
requestModel
=
new
ExamineDetailRecordRequestModel
();
requestModel
.
setRecordId
(
businessId
);
List
<
ExamineDetailRecordResponseModel
>
detailRecordList
=
examineService
.
examineDetailRecordList
(
requestModel
);
if
(
CollectionUtil
.
isNotEmpty
(
detailRecordList
))
{
// 计算综合评分
double
totalScore
=
detailRecordList
.
stream
().
filter
(
v
->
Objects
.
nonNull
(
v
.
getScore
())).
mapToDouble
(
ExamineDetailRecordResponseModel:
:
getScore
).
sum
();
Double
avgScore
=
totalScore
/
detailRecordList
.
size
();
List
<
Integer
>
qaIdList
=
detailRecordList
.
stream
().
map
(
ExamineDetailRecordResponseModel:
:
getQaId
).
collect
(
Collectors
.
toList
());
List
<
ExamineQaResponseModel
>
examineQaList
=
examineService
.
examineQaList
(
qaIdList
);
Map
<
Integer
,
ExamineQaResponseModel
>
qaMap
=
examineQaList
.
stream
().
collect
(
toMap
(
ExamineQaResponseModel:
:
getId
,
Function
.
identity
()));
String
qaResultStr
=
""
;
for
(
int
i
=
0
;
i
<
detailRecordList
.
size
();
i
++)
{
ExamineDetailRecordResponseModel
detail
=
detailRecordList
.
get
(
i
);
ExamineQaResponseModel
qa
=
qaMap
.
get
(
detail
.
getQaId
());
qaResultStr
+=
"问题 "
+
(
i
+
1
)
+
": "
+
qa
.
getQuestion
()
+
"\n"
;
qaResultStr
+=
"得分:"
+
detail
.
getScore
()
+
"\n"
;
qaResultStr
+=
"评分说明:"
+
detail
.
getEvaluation
()
+
"\n"
;
qaResultStr
+=
"----------------------------------------\n"
;
}
// 执行综合点评
String
overallEvaluation
=
extensionService
.
run4TotalEvaluate
(
businessNo
,
job
.
getUserId
(),
avgScore
.
floatValue
(),
qaResultStr
);
if
(
StrUtil
.
isNotEmpty
(
overallEvaluation
))
{
// 更新
ExamineRecordSaveModel
saveModel
=
new
ExamineRecordSaveModel
();
saveModel
.
setId
(
businessId
);
saveModel
.
setOverallEvaluation
(
overallEvaluation
);
saveModel
.
setOverallScore
(
avgScore
.
floatValue
());
examineService
.
saveExamineRecord
(
saveModel
);
// 更新任务执行状态
ExamineEvaluateJobSaveModel
update
=
new
ExamineEvaluateJobSaveModel
();
update
.
setId
(
job
.
getId
());
update
.
setStatus
(
1
);
commonService
.
saveEvaluateJob
(
update
);
//TODO 更新任务缓存信息
String
redisKey
=
String
.
format
(
Codes
.
SINGLE_AI_EVALUATE_JOB_STATUS
,
businessNo
);
String
jobStatus
=
redisTemplate
.
opsForValue
().
get
(
redisKey
);
if
(
Objects
.
equals
(
jobStatus
,
"1"
))
{
// 获取答题结果
ExamineDetailRecordRequestModel
requestModel
=
new
ExamineDetailRecordRequestModel
();
requestModel
.
setRecordId
(
businessId
);
List
<
ExamineDetailRecordResponseModel
>
detailRecordList
=
examineService
.
examineDetailRecordList
(
requestModel
);
if
(
CollectionUtil
.
isNotEmpty
(
detailRecordList
))
{
// 计算综合评分
double
totalScore
=
detailRecordList
.
stream
().
filter
(
v
->
Objects
.
nonNull
(
v
.
getScore
())).
mapToDouble
(
ExamineDetailRecordResponseModel:
:
getScore
).
sum
();
Double
avgScore
=
totalScore
/
detailRecordList
.
size
();
List
<
Integer
>
qaIdList
=
detailRecordList
.
stream
().
map
(
ExamineDetailRecordResponseModel:
:
getQaId
).
collect
(
Collectors
.
toList
());
List
<
ExamineQaResponseModel
>
examineQaList
=
examineService
.
examineQaList
(
qaIdList
);
Map
<
Integer
,
ExamineQaResponseModel
>
qaMap
=
examineQaList
.
stream
().
collect
(
toMap
(
ExamineQaResponseModel:
:
getId
,
Function
.
identity
()));
String
qaResultStr
=
""
;
for
(
int
i
=
0
;
i
<
detailRecordList
.
size
();
i
++)
{
ExamineDetailRecordResponseModel
detail
=
detailRecordList
.
get
(
i
);
ExamineQaResponseModel
qa
=
qaMap
.
get
(
detail
.
getQaId
());
qaResultStr
+=
"问题 "
+
(
i
+
1
)
+
": "
+
qa
.
getQuestion
()
+
"\n"
;
qaResultStr
+=
"得分:"
+
detail
.
getScore
()
+
"\n"
;
qaResultStr
+=
"评分说明:"
+
detail
.
getEvaluation
()
+
"\n"
;
qaResultStr
+=
"----------------------------------------\n"
;
}
// 执行综合点评
String
overallEvaluation
=
extensionService
.
run4TotalEvaluate
(
businessNo
,
job
.
getUserId
(),
avgScore
.
floatValue
(),
qaResultStr
);
if
(
StrUtil
.
isNotEmpty
(
overallEvaluation
))
{
// 更新
ExamineRecordSaveModel
saveModel
=
new
ExamineRecordSaveModel
();
saveModel
.
setId
(
businessId
);
saveModel
.
setOverallEvaluation
(
overallEvaluation
);
saveModel
.
setOverallScore
(
avgScore
.
floatValue
());
examineService
.
saveExamineRecord
(
saveModel
);
// 更新任务执行状态
ExamineEvaluateJobSaveModel
update
=
new
ExamineEvaluateJobSaveModel
();
update
.
setId
(
job
.
getId
());
update
.
setStatus
(
1
);
commonService
.
saveEvaluateJob
(
update
);
// 更新任务缓存信息
String
totalJobStatus
=
String
.
format
(
Codes
.
TOTAL_AI_EVALUATE_JOB_STATUS
,
businessNo
);
redisTemplate
.
opsForValue
().
set
(
totalJobStatus
,
"1"
,
7
,
TimeUnit
.
DAYS
);
}
}
}
}
...
...
src/main/java/cn/breeze/elleai/util/Codes.java
View file @
df093341
...
...
@@ -61,4 +61,7 @@ public abstract class Codes {
public
static
final
String
SINGLE_AI_EVALUATE_JOB_STATUS
=
"ai:single_evaluate_job:%s"
;
public
static
final
String
TOTAL_AI_EVALUATE_JOB_STATUS
=
"ai:total_evaluate_job:%s"
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment