8888
This commit is contained in:
parent
7a51908504
commit
77e6e23d6a
|
@ -3,9 +3,19 @@
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="90d49d24-cd7e-4f14-b075-c6e5fe5ae2ce" name="Default Changelist" comment="">
|
<list default="true" id="90d49d24-cd7e-4f14-b075-c6e5fe5ae2ce" name="Default Changelist" comment="">
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/casdoor/conf/app.conf" beforeDir="false" afterPath="$PROJECT_DIR$/casdoor/conf/app.conf" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/controllers/Administrator.go" beforeDir="false" afterPath="$PROJECT_DIR$/controllers/Administrator.go" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/controllers/Administrator.go" beforeDir="false" afterPath="$PROJECT_DIR$/controllers/Administrator.go" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/controllers/score.go" beforeDir="false" afterPath="$PROJECT_DIR$/controllers/score.go" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/controllers/supervisor.go" beforeDir="false" afterPath="$PROJECT_DIR$/controllers/supervisor.go" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/controllers/supervisor.go" beforeDir="false" afterPath="$PROJECT_DIR$/controllers/supervisor.go" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/frontend" beforeDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/lastupdate.tmp" beforeDir="false" afterPath="$PROJECT_DIR$/lastupdate.tmp" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/main.go" beforeDir="false" afterPath="$PROJECT_DIR$/main.go" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/models/scoreRecord.go" beforeDir="false" afterPath="$PROJECT_DIR$/models/scoreRecord.go" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/models/testPaper.go" beforeDir="false" afterPath="$PROJECT_DIR$/models/testPaper.go" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/models/topic.go" beforeDir="false" afterPath="$PROJECT_DIR$/models/topic.go" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/models/underCorrectedPaper.go" beforeDir="false" afterPath="$PROJECT_DIR$/models/underCorrectedPaper.go" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/models/underCorrectedPaper.go" beforeDir="false" afterPath="$PROJECT_DIR$/models/underCorrectedPaper.go" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/models/user.go" beforeDir="false" afterPath="$PROJECT_DIR$/models/user.go" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/requests/admin.go" beforeDir="false" afterPath="$PROJECT_DIR$/requests/admin.go" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/requests/supervisor.go" beforeDir="false" afterPath="$PROJECT_DIR$/requests/supervisor.go" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/requests/supervisor.go" beforeDir="false" afterPath="$PROJECT_DIR$/requests/supervisor.go" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/responses/supervisor.go" beforeDir="false" afterPath="$PROJECT_DIR$/responses/supervisor.go" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/responses/supervisor.go" beforeDir="false" afterPath="$PROJECT_DIR$/responses/supervisor.go" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/routers/router.go" beforeDir="false" afterPath="$PROJECT_DIR$/routers/router.go" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/routers/router.go" beforeDir="false" afterPath="$PROJECT_DIR$/routers/router.go" afterDir="false" />
|
||||||
|
@ -185,9 +195,9 @@
|
||||||
<breakpoint-manager>
|
<breakpoint-manager>
|
||||||
<breakpoints>
|
<breakpoints>
|
||||||
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
|
||||||
<url>file://$PROJECT_DIR$/controllers/score.go</url>
|
<url>file://$PROJECT_DIR$/controllers/supervisor.go</url>
|
||||||
<line>708</line>
|
<line>777</line>
|
||||||
<option name="timeStamp" value="3" />
|
<option name="timeStamp" value="6" />
|
||||||
</line-breakpoint>
|
</line-breakpoint>
|
||||||
</breakpoints>
|
</breakpoints>
|
||||||
</breakpoint-manager>
|
</breakpoint-manager>
|
||||||
|
|
|
@ -4,7 +4,7 @@ runmode = dev
|
||||||
SessionOn = true
|
SessionOn = true
|
||||||
copyrequestbody = true
|
copyrequestbody = true
|
||||||
driverName = mysql
|
driverName = mysql
|
||||||
dataSourceName = root:cappuccino@tcp(localhost:3308)/
|
dataSourceName = root:123456@tcp(localhost:3308)/
|
||||||
dbName = casdoor
|
dbName = casdoor
|
||||||
authState = "casdoor"
|
authState = "casdoor"
|
||||||
httpProxy = "127.0.0.1:10808"
|
httpProxy = "127.0.0.1:10808"
|
||||||
|
|
|
@ -518,7 +518,7 @@ func (c *AdminApiController) DistributionInfo(){
|
||||||
}
|
}
|
||||||
distributionInfoVO.LeftTestNumber=len(papers)
|
distributionInfoVO.LeftTestNumber=len(papers)
|
||||||
//获取在线人数
|
//获取在线人数
|
||||||
var onlineNumber ,err1= models.CountOnlineNumber()
|
var onlineNumber ,err1= models.CountOnlineNumberUnDistribute()
|
||||||
if err1!=nil {
|
if err1!=nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
resp = Response{"30010","获取可分配人数错误 ",err}
|
resp = Response{"30010","获取可分配人数错误 ",err}
|
||||||
|
|
|
@ -221,7 +221,7 @@ func (c *TestPaperApiController) Point() {
|
||||||
if small <= float64(topic.Standard_error) {
|
if small <= float64(topic.Standard_error) {
|
||||||
final = true
|
final = true
|
||||||
} else {
|
} else {
|
||||||
//应该可以去掉
|
|
||||||
test.Question_status = 2
|
test.Question_status = 2
|
||||||
|
|
||||||
newUnderTest := models.UnderCorrectedPaper{}
|
newUnderTest := models.UnderCorrectedPaper{}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package controllers
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"math"
|
"math"
|
||||||
"openscore/models"
|
"openscore/models"
|
||||||
"openscore/requests"
|
"openscore/requests"
|
||||||
|
@ -13,51 +14,51 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
/**
|
///**
|
||||||
9.大题选择列表
|
// 9.大题选择列表
|
||||||
*/
|
// */
|
||||||
func (c *SupervisorApiController) QuestionList() {
|
//func (c *SupervisorApiController) QuestionList() {
|
||||||
defer c.ServeJSON()
|
// defer c.ServeJSON()
|
||||||
var requestBody requests.QuestionList
|
// var requestBody requests.QuestionList
|
||||||
var resp Response
|
// var resp Response
|
||||||
var err error
|
// var err error
|
||||||
|
//
|
||||||
err =json.Unmarshal(c.Ctx.Input.RequestBody, &requestBody)
|
// err =json.Unmarshal(c.Ctx.Input.RequestBody, &requestBody)
|
||||||
if err!=nil {
|
// if err!=nil {
|
||||||
resp = Response{"10001","cannot unmarshal",err}
|
// resp = Response{"10001","cannot unmarshal",err}
|
||||||
c.Data["json"] = resp
|
// c.Data["json"] = resp
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
supervisorId := requestBody.SupervisorId
|
// supervisorId := requestBody.SupervisorId
|
||||||
//----------------------------------------------------
|
// //----------------------------------------------------
|
||||||
//获取大题列表
|
// //获取大题列表
|
||||||
var user models.User
|
// var user models.User
|
||||||
user.User_id=supervisorId
|
// user.User_id=supervisorId
|
||||||
user.GetUser(supervisorId)
|
// user.GetUser(supervisorId)
|
||||||
subjectName := user.Subject_name
|
// subjectName := user.Subject_name
|
||||||
|
//
|
||||||
topics := make([]models.Topic,0)
|
// topics := make([]models.Topic,0)
|
||||||
err = models.FindTopicBySubNameList(&topics,subjectName)
|
// err = models.FindTopicBySubNameList(&topics,subjectName)
|
||||||
if err!=nil {
|
// if err!=nil {
|
||||||
resp = Response{"20000","GetTopicList err ",err}
|
// resp = Response{"20000","GetTopicList err ",err}
|
||||||
c.Data["json"] = resp
|
// c.Data["json"] = resp
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
var questions = make([]responses.QuestionListVO,len(topics))
|
// var questions = make([]responses.QuestionListVO,len(topics))
|
||||||
for i := 0; i < len(topics); i++ {
|
// for i := 0; i < len(topics); i++ {
|
||||||
|
//
|
||||||
questions[i].QuestionId=topics[i].Question_id
|
// questions[i].QuestionId=topics[i].Question_id
|
||||||
questions[i].QuestionName=topics[i].Question_name
|
// questions[i].QuestionName=topics[i].Question_name
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
//----------------------------------------------------
|
// //----------------------------------------------------
|
||||||
data := make(map[string]interface{})
|
// data := make(map[string]interface{})
|
||||||
data["questionsList"] =questions
|
// data["questionsList"] =questions
|
||||||
resp = Response{"10000", "OK", data}
|
// resp = Response{"10000", "OK", data}
|
||||||
c.Data["json"] = resp
|
// c.Data["json"] = resp
|
||||||
}
|
//}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
10.用户登入信息表
|
10.用户登入信息表
|
||||||
|
@ -170,30 +171,33 @@ func (c *SupervisorApiController) TeacherMonitoring() {
|
||||||
//是否在线
|
//是否在线
|
||||||
isOnline := user.UserType
|
isOnline := user.UserType
|
||||||
teacherMonitoringList[i].IsOnline=isOnline
|
teacherMonitoringList[i].IsOnline=isOnline
|
||||||
//平均速度
|
//在线时间
|
||||||
var onlineTime int64
|
var onlineTime int64
|
||||||
if isOnline==1{
|
if isOnline==1{
|
||||||
endingTime :=time.Now().Unix()
|
endingTime :=time.Now().Unix()
|
||||||
startTime:=user.Login_time.Unix()
|
startTime:=user.Login_time.Unix()
|
||||||
tempTime := endingTime-startTime
|
tempTime := endingTime-startTime
|
||||||
fmt.Println(tempTime)
|
onlineTime = user.Online_time+(tempTime)
|
||||||
|
|
||||||
onlineTime = user.Online_time+int64(tempTime)
|
|
||||||
}else {
|
}else {
|
||||||
onlineTime= user.Online_time
|
onlineTime= user.Online_time
|
||||||
}
|
}
|
||||||
|
//平均速度 (秒/份)
|
||||||
|
var markingSpeed float64 =99999999
|
||||||
|
s1 := strconv.FormatInt(onlineTime, 10)
|
||||||
|
s,_:= strconv.ParseFloat(s1, 64)
|
||||||
|
|
||||||
var markingSpeed float64 =0
|
if finishCount!=0 {
|
||||||
s := strconv.FormatInt(onlineTime, 10)
|
tempSpeed :=s/float64(finishCount)
|
||||||
f,_:= strconv.ParseFloat(s, 64)
|
|
||||||
m:=f/60
|
|
||||||
|
|
||||||
if m!=0 {
|
|
||||||
|
|
||||||
tempSpeed :=float64(finishCount)/m
|
|
||||||
markingSpeed,_= strconv.ParseFloat(fmt.Sprintf("%.2f", tempSpeed), 64)
|
markingSpeed,_= strconv.ParseFloat(fmt.Sprintf("%.2f", tempSpeed), 64)
|
||||||
}
|
}
|
||||||
teacherMonitoringList[i].MarkingSpeed=markingSpeed
|
teacherMonitoringList[i].MarkingSpeed=markingSpeed
|
||||||
|
//预计时间 (小时)
|
||||||
|
|
||||||
|
predictTime:= markingSpeed * float64(remainingTestNumber)
|
||||||
|
predictTime=predictTime/3600
|
||||||
|
predictTime,_= strconv.ParseFloat(fmt.Sprintf("%.2f", predictTime), 64)
|
||||||
|
teacherMonitoringList[i].PredictTime=predictTime
|
||||||
|
|
||||||
//平均分
|
//平均分
|
||||||
var averageScore float64 =0
|
var averageScore float64 =0
|
||||||
if finishCount!=0 {
|
if finishCount!=0 {
|
||||||
|
@ -205,6 +209,7 @@ func (c *SupervisorApiController) TeacherMonitoring() {
|
||||||
}
|
}
|
||||||
averageScore=sum/float64(finishCount)
|
averageScore=sum/float64(finishCount)
|
||||||
}
|
}
|
||||||
|
|
||||||
teacherMonitoringList[i].AverageScore=averageScore
|
teacherMonitoringList[i].AverageScore=averageScore
|
||||||
//有效度
|
//有效度
|
||||||
var validity float64=0
|
var validity float64=0
|
||||||
|
@ -213,29 +218,27 @@ func (c *SupervisorApiController) TeacherMonitoring() {
|
||||||
validity,_= strconv.ParseFloat(fmt.Sprintf("%.2f", validity), 64)
|
validity,_= strconv.ParseFloat(fmt.Sprintf("%.2f", validity), 64)
|
||||||
}
|
}
|
||||||
teacherMonitoringList[i].Validity=validity
|
teacherMonitoringList[i].Validity=validity
|
||||||
//自评率
|
////自评率
|
||||||
selfTestCount ,err1 := models.CountSelfScore(userId,questionId)
|
//selfTestCount ,err1 := models.CountSelfScore(userId,questionId)
|
||||||
if err1!=nil {
|
//if err1!=nil {
|
||||||
resp = Response{"20026","CountSelfScore fail",err}
|
// resp = Response{"20026","CountSelfScore fail",err}
|
||||||
c.Data["json"] = resp
|
// c.Data["json"] = resp
|
||||||
return
|
// return
|
||||||
}
|
//}
|
||||||
selfTestCountString:=strconv.FormatInt(selfTestCount,10)
|
//selfTestCountString:=strconv.FormatInt(selfTestCount,10)
|
||||||
selfTestCountFloat,_:=strconv.ParseFloat(selfTestCountString,64)
|
//selfTestCountFloat,_:=strconv.ParseFloat(selfTestCountString,64)
|
||||||
|
//
|
||||||
var selfScoreRate float64=0
|
//var selfScoreRate float64=0
|
||||||
if finishCount!=0 {
|
//if finishCount!=0 {
|
||||||
selfScoreRate= selfTestCountFloat/float64(finishCount)
|
// selfScoreRate= selfTestCountFloat/float64(finishCount)
|
||||||
}
|
//}
|
||||||
teacherMonitoringList[i].EvaluationIndex=selfScoreRate
|
//teacherMonitoringList[i].EvaluationIndex=selfScoreRate
|
||||||
|
|
||||||
//标准差
|
//标准差
|
||||||
var add float64
|
var add float64
|
||||||
var j int64
|
|
||||||
|
|
||||||
finishScoreList :=make([]models.ScoreRecord,0)
|
finishScoreList :=make([]models.ScoreRecord,0)
|
||||||
models.FindFinishTestByUserId(&finishScoreList,userId,questionId)
|
models.FindFinishTestByUserId(&finishScoreList,userId,questionId)
|
||||||
for j=0;j<(finishCount);j++ {
|
for j:=0;j<len(finishScoreList);j++ {
|
||||||
scoreJ :=finishScoreList[j].Score
|
scoreJ :=finishScoreList[j].Score
|
||||||
tempJ :=math.Abs((float64(scoreJ))-averageScore)
|
tempJ :=math.Abs((float64(scoreJ))-averageScore)
|
||||||
add = add+math.Exp2(tempJ)
|
add = add+math.Exp2(tempJ)
|
||||||
|
@ -307,17 +310,20 @@ scoreDistributionList := make([]responses.ScoreDistributionVO,questionScore+1)
|
||||||
var i int64=0
|
var i int64=0
|
||||||
for ;i<=questionScore;i++{
|
for ;i<=questionScore;i++{
|
||||||
scoreDistributionList[i].Score=i
|
scoreDistributionList[i].Score=i
|
||||||
score, err := models.CountTestByScore(questionId, i)
|
number, err := models.CountTestByScore(questionId, i)
|
||||||
if err!=nil {
|
if err!=nil {
|
||||||
resp = Response{"20004","CountTestByScore err",err}
|
resp = Response{"20004","CountTestByScore err",err}
|
||||||
c.Data["json"] = resp
|
c.Data["json"] = resp
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
number := score
|
|
||||||
numberString:=strconv.FormatInt(number,10)
|
numberString:=strconv.FormatInt(number,10)
|
||||||
numberFloat,_:=strconv.ParseFloat(numberString,64)
|
numberFloat,_:=strconv.ParseFloat(numberString,64)
|
||||||
scoreDistribution:=numberFloat/countFloat
|
scoreDistribution := 0.00
|
||||||
|
if countFloat!=0{
|
||||||
|
scoreDistribution=numberFloat/countFloat
|
||||||
scoreDistribution,_= strconv.ParseFloat(fmt.Sprintf("%.2f", scoreDistribution), 64)
|
scoreDistribution,_= strconv.ParseFloat(fmt.Sprintf("%.2f", scoreDistribution), 64)
|
||||||
|
}
|
||||||
scoreDistributionList[i].Rate=scoreDistribution
|
scoreDistributionList[i].Rate=scoreDistribution
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -419,17 +425,46 @@ func (c *SupervisorApiController) SelfScore() {
|
||||||
testId :=selfScoreRecord[i].Test_id
|
testId :=selfScoreRecord[i].Test_id
|
||||||
var test models.TestPaper
|
var test models.TestPaper
|
||||||
test.GetTestPaperByTestId(testId)
|
test.GetTestPaperByTestId(testId)
|
||||||
|
|
||||||
|
//求大题信息 标准误差
|
||||||
|
var topic models.Topic
|
||||||
|
topic.GetTopic(test.Question_id)
|
||||||
|
standardError := topic.Standard_error
|
||||||
|
var error float64
|
||||||
if test.Examiner_first_id== examinerId{
|
if test.Examiner_first_id== examinerId{
|
||||||
selfScoreRecordVOList[i].Score =test.Examiner_first_score
|
selfScoreRecordVOList[i].Score =test.Examiner_first_score
|
||||||
selfScoreRecordVOList[i].SelfScore=test.Examiner_first_self_score
|
selfScoreRecordVOList[i].SelfScore=test.Examiner_first_self_score
|
||||||
|
selfScoreRecordVOList[i].StandardError=standardError
|
||||||
|
|
||||||
|
error =math.Abs(float64(selfScoreRecordVOList[i].Score-selfScoreRecordVOList[i].SelfScore))
|
||||||
|
if error<=float64(standardError) {
|
||||||
|
selfScoreRecordVOList[i].IsQualified=1
|
||||||
|
} else {
|
||||||
|
selfScoreRecordVOList[i].IsQualified=0
|
||||||
|
}
|
||||||
}else if test.Examiner_second_id==examinerId {
|
}else if test.Examiner_second_id==examinerId {
|
||||||
selfScoreRecordVOList[i].Score=test.Examiner_second_score
|
selfScoreRecordVOList[i].Score=test.Examiner_second_score
|
||||||
selfScoreRecordVOList[i].SelfScore=test.Examiner_second_self_score
|
selfScoreRecordVOList[i].SelfScore=test.Examiner_second_self_score
|
||||||
|
selfScoreRecordVOList[i].StandardError=standardError
|
||||||
|
error =math.Abs(float64(selfScoreRecordVOList[i].Score-selfScoreRecordVOList[i].SelfScore))
|
||||||
|
if error<=float64(standardError) {
|
||||||
|
selfScoreRecordVOList[i].IsQualified=1
|
||||||
|
} else {
|
||||||
|
selfScoreRecordVOList[i].IsQualified=0
|
||||||
|
}
|
||||||
}else if test.Examiner_third_id==examinerId {
|
}else if test.Examiner_third_id==examinerId {
|
||||||
selfScoreRecordVOList[i].Score =test.Examiner_third_score
|
selfScoreRecordVOList[i].Score =test.Examiner_third_score
|
||||||
selfScoreRecordVOList[i].SelfScore=test.Examiner_third_self_score
|
selfScoreRecordVOList[i].SelfScore=test.Examiner_third_self_score
|
||||||
|
selfScoreRecordVOList[i].StandardError=standardError
|
||||||
|
error =math.Abs(float64(selfScoreRecordVOList[i].Score-selfScoreRecordVOList[i].SelfScore))
|
||||||
|
if error<=float64(standardError) {
|
||||||
|
selfScoreRecordVOList[i].IsQualified=1
|
||||||
|
} else {
|
||||||
|
selfScoreRecordVOList[i].IsQualified=0
|
||||||
|
}
|
||||||
}
|
}
|
||||||
selfScoreRecordVOList[i].TestId=testId
|
selfScoreRecordVOList[i].TestId=testId
|
||||||
|
selfScoreRecordVOList[i].Error=error
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -437,6 +472,7 @@ func (c *SupervisorApiController) SelfScore() {
|
||||||
|
|
||||||
data := make(map[string]interface{})
|
data := make(map[string]interface{})
|
||||||
data["selfScoreRecordVOList"] =selfScoreRecordVOList
|
data["selfScoreRecordVOList"] =selfScoreRecordVOList
|
||||||
|
|
||||||
resp = Response{"10000", "OK", data}
|
resp = Response{"10000", "OK", data}
|
||||||
c.Data["json"] = resp
|
c.Data["json"] = resp
|
||||||
|
|
||||||
|
@ -469,7 +505,8 @@ func (c *SupervisorApiController) AverageScore() {
|
||||||
}
|
}
|
||||||
//输出标准
|
//输出标准
|
||||||
scoreAverageVOList := make([]responses.ScoreAverageVO,len(paperDistributions))
|
scoreAverageVOList := make([]responses.ScoreAverageVO,len(paperDistributions))
|
||||||
|
var sumAllTestScore =0.0
|
||||||
|
var count = 0.0
|
||||||
//求教师名和转化输出
|
//求教师名和转化输出
|
||||||
for i:=0 ;i<len(paperDistributions);i++ {
|
for i:=0 ;i<len(paperDistributions);i++ {
|
||||||
//求userId 和userName
|
//求userId 和userName
|
||||||
|
@ -493,9 +530,9 @@ func (c *SupervisorApiController) AverageScore() {
|
||||||
}
|
}
|
||||||
finishCountString:=strconv.FormatInt(scoreNumber,10)
|
finishCountString:=strconv.FormatInt(scoreNumber,10)
|
||||||
finishCountFloat,_:=strconv.ParseFloat(finishCountString,64)
|
finishCountFloat,_:=strconv.ParseFloat(finishCountString,64)
|
||||||
|
count = count + finishCountFloat
|
||||||
var averageScore float64 =0
|
var averageScore float64 =0
|
||||||
if scoreNumber!=0 {
|
if finishCountFloat!=0 {
|
||||||
sum, err := models.SumFinishScore(userId, questionId)
|
sum, err := models.SumFinishScore(userId, questionId)
|
||||||
if err!=nil {
|
if err!=nil {
|
||||||
resp = Response{"20009","SumFinishScore fail",err}
|
resp = Response{"20009","SumFinishScore fail",err}
|
||||||
|
@ -503,10 +540,12 @@ func (c *SupervisorApiController) AverageScore() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
averageScore=sum/finishCountFloat
|
averageScore=sum/finishCountFloat
|
||||||
|
sumAllTestScore = sumAllTestScore+sum
|
||||||
}
|
}
|
||||||
averageScore,_= strconv.ParseFloat(fmt.Sprintf("%.2f", averageScore), 64)
|
averageScore,_= strconv.ParseFloat(fmt.Sprintf("%.2f", averageScore), 64)
|
||||||
scoreAverageVOList[i].Average=averageScore
|
scoreAverageVOList[i].Average=averageScore
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
var topic =models.Topic{Question_id: questionId}
|
var topic =models.Topic{Question_id: questionId}
|
||||||
err = topic.GetTopic(questionId)
|
err = topic.GetTopic(questionId)
|
||||||
|
@ -516,6 +555,11 @@ func (c *SupervisorApiController) AverageScore() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var fullScore =topic.Question_score
|
var fullScore =topic.Question_score
|
||||||
|
var questionAverageScore = 0.0
|
||||||
|
if count !=0 {
|
||||||
|
questionAverageScore = sumAllTestScore/count
|
||||||
|
}
|
||||||
|
questionAverageScore,_= strconv.ParseFloat(fmt.Sprintf("%.2f", questionAverageScore), 64)
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
@ -523,6 +567,7 @@ func (c *SupervisorApiController) AverageScore() {
|
||||||
data := make(map[string]interface{})
|
data := make(map[string]interface{})
|
||||||
data["scoreAverageVOList"] =scoreAverageVOList
|
data["scoreAverageVOList"] =scoreAverageVOList
|
||||||
data["fullScore"] =fullScore
|
data["fullScore"] =fullScore
|
||||||
|
data["questionAverageScore"] =questionAverageScore
|
||||||
resp = Response{"10000", "OK", data}
|
resp = Response{"10000", "OK", data}
|
||||||
c.Data["json"] = resp
|
c.Data["json"] = resp
|
||||||
|
|
||||||
|
@ -719,7 +764,7 @@ func (c *SupervisorApiController) ArbitramentTest() {
|
||||||
*/
|
*/
|
||||||
func (c *SupervisorApiController) ScoreProgress() {
|
func (c *SupervisorApiController) ScoreProgress() {
|
||||||
defer c.ServeJSON()
|
defer c.ServeJSON()
|
||||||
var requestBody requests.ArbitramentTest
|
var requestBody requests.ScoreProgress
|
||||||
var resp Response
|
var resp Response
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
|
@ -730,11 +775,12 @@ func (c *SupervisorApiController) ScoreProgress() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
//supervisorId := requestBody.SupervisorId
|
//supervisorId := requestBody.SupervisorId
|
||||||
|
subject := requestBody.Subject
|
||||||
|
|
||||||
//----------------------------------------------------
|
//----------------------------------------------------
|
||||||
//获取大题列表
|
//根据科目获取大题列表
|
||||||
topics :=make([]models.Topic ,0)
|
topics :=make([]models.Topic ,0)
|
||||||
err = models.GetTopicList(&topics)
|
err = models.FindTopicBySubNameList(&topics,subject)
|
||||||
if err!=nil {
|
if err!=nil {
|
||||||
resp = Response{"20000","GetTopicList err ",err}
|
resp = Response{"20000","GetTopicList err ",err}
|
||||||
c.Data["json"] = resp
|
c.Data["json"] = resp
|
||||||
|
@ -750,18 +796,22 @@ func (c *SupervisorApiController) ScoreProgress() {
|
||||||
//获取大题名
|
//获取大题名
|
||||||
questionName := topics[i].Question_name
|
questionName := topics[i].Question_name
|
||||||
scoreProgressVOList[i].QuestionName = questionName
|
scoreProgressVOList[i].QuestionName = questionName
|
||||||
|
//自评率
|
||||||
|
scoreProgressVOList[i].SelfScoreRate=topics[i].SelfScoreRate
|
||||||
|
|
||||||
//获取 任务总量
|
//获取 任务总量
|
||||||
importNumber := topics[i].Import_number
|
importNumber := topics[i].Import_number
|
||||||
scoreProgressVOList[i].ImportNumber = importNumber
|
scoreProgressVOList[i].ImportNumber = importNumber
|
||||||
|
|
||||||
//出成绩量
|
//出成绩量
|
||||||
finishNumber,err1 := models.CountFinishScoreNumberByQuestionId(questionId)
|
finishNumber, err := models.CountFinishScoreNumberByQuestionId(questionId)
|
||||||
if err1!=nil {
|
if err!=nil {
|
||||||
resp = Response{"20013","CountFinishScoreNumberByQuestionId fail",err}
|
resp = Response{"20013","CountFinishScoreNumberByQuestionId fail",err}
|
||||||
c.Data["json"] = resp
|
c.Data["json"] = resp
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
scoreProgressVOList[i].FinishNumber = finishNumber
|
scoreProgressVOList[i].FinishNumber = finishNumber
|
||||||
|
|
||||||
//出成绩率
|
//出成绩率
|
||||||
finishNumberString := strconv.FormatInt(finishNumber, 10)
|
finishNumberString := strconv.FormatInt(finishNumber, 10)
|
||||||
finishNumberFloat, _ := strconv.ParseFloat(finishNumberString, 64)
|
finishNumberFloat, _ := strconv.ParseFloat(finishNumberString, 64)
|
||||||
|
@ -792,102 +842,90 @@ func (c *SupervisorApiController) ScoreProgress() {
|
||||||
isAllFinished = "完成"
|
isAllFinished = "完成"
|
||||||
}
|
}
|
||||||
scoreProgressVOList[i].IsAllFinished = isAllFinished
|
scoreProgressVOList[i].IsAllFinished = isAllFinished
|
||||||
|
//在线人数
|
||||||
|
var users = make([]models.User ,0)
|
||||||
|
models.FindUserNumberByQuestionId(&users,questionId)
|
||||||
|
usersNumber := len(users)
|
||||||
|
scoreProgressVOList[i].DistributionUserNumber=int64(usersNumber)
|
||||||
|
|
||||||
//分配人数
|
|
||||||
distributionUserNumber ,err:=models.CountUserDistributionNumberByQuestionId(questionId)
|
|
||||||
scoreProgressVOList[i].DistributionNumber= distributionUserNumber
|
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------
|
||||||
//平均速度
|
//平均速度
|
||||||
|
var onlineUserNumber int64 =0
|
||||||
|
//全部用户在线时间
|
||||||
|
var totalUserOnlineTime int64=0
|
||||||
|
//当前在线用户在线时间
|
||||||
|
var currentUserOnlineTime int64 =0
|
||||||
|
//全部用户批改量
|
||||||
|
var totalUserFinishNumber =0
|
||||||
|
//当前在线用户批改试卷量
|
||||||
|
var currentUserFinishNumber =0
|
||||||
|
//全部用户批改试卷总分
|
||||||
|
var totalUserScoreSum int64=0
|
||||||
|
//当前用户 批改试卷总分
|
||||||
|
var currentUserScoreSum int64=0
|
||||||
|
|
||||||
var speed float64
|
for i:=0;i<usersNumber;i++{
|
||||||
paperDistributions :=make([]models.PaperDistribution ,0)
|
userId :=users[i].User_id
|
||||||
err = models.FindPaperDistributionByQuestionId(&paperDistributions, questionId)
|
isOnline :=users[i].Status
|
||||||
if err!=nil {
|
userOnlineTime := users[i].Online_time
|
||||||
resp = Response{"20021","试卷分配信息获取失败 ",err}
|
userRecord :=make([]models.ScoreRecord ,0)
|
||||||
c.Data["json"] = resp
|
models.FindFinishTestByUserId(&userRecord ,userId,questionId)
|
||||||
return
|
tempFinishNumber :=len(userRecord)
|
||||||
|
var tempScore int64= 0
|
||||||
|
for j:=0;j<len(userRecord);j++ {
|
||||||
|
tempScore=tempScore+userRecord[j].Score
|
||||||
}
|
}
|
||||||
for i:=0;i<len(paperDistributions);i++ {
|
|
||||||
//教师id
|
|
||||||
userId:= paperDistributions[i].User_id
|
|
||||||
|
|
||||||
//分配试卷数量
|
|
||||||
|
|
||||||
//试卷失败数
|
|
||||||
failCount,err1:= models.CountFailTestNumberByUserId(userId,questionId)
|
|
||||||
if err1!=nil {
|
|
||||||
resp = Response{"20024","获取试卷批改失败数 错误 ",err}
|
|
||||||
c.Data["json"] = resp
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//试卷剩余未批改数
|
|
||||||
remainingTestNumber,err1 := models.CountRemainingTestNumberByUserId(questionId,userId)
|
|
||||||
if err1!=nil {
|
|
||||||
resp = Response{"20023","无法获取试卷未批改数",err}
|
|
||||||
c.Data["json"] = resp
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
//试卷完成数
|
|
||||||
finishCount := paperDistributions[i].Test_distribution_number-failCount-remainingTestNumber
|
|
||||||
|
|
||||||
//用户信息
|
|
||||||
user:=models.User{User_id: userId}
|
|
||||||
err = user.GetUser(userId)
|
|
||||||
if err!=nil {
|
|
||||||
resp = Response{"20001","无法获取用户信息",err}
|
|
||||||
c.Data["json"] = resp
|
|
||||||
return
|
|
||||||
}
|
|
||||||
//用户名
|
|
||||||
|
|
||||||
//是否在线
|
|
||||||
isOnline := user.UserType
|
|
||||||
|
|
||||||
//平均速度
|
|
||||||
var onlineTime int64
|
|
||||||
if isOnline==1 {
|
if isOnline==1 {
|
||||||
|
//计算时间
|
||||||
endingTime :=time.Now().Unix()
|
endingTime :=time.Now().Unix()
|
||||||
startTime:=user.Login_time.Unix()
|
startTime:=users[i].Login_time.Unix()
|
||||||
tempTime := endingTime-startTime
|
tempTime := endingTime-startTime
|
||||||
fmt.Println(tempTime)
|
userOnlineTime = userOnlineTime+(tempTime)
|
||||||
|
|
||||||
onlineTime = user.Online_time+int64(tempTime)
|
currentUserOnlineTime=currentUserOnlineTime+userOnlineTime
|
||||||
}else {
|
//计算在线任务量和分数
|
||||||
onlineTime= user.Online_time
|
currentUserFinishNumber =currentUserFinishNumber+tempFinishNumber
|
||||||
|
currentUserScoreSum =currentUserScoreSum+tempScore
|
||||||
|
onlineUserNumber=onlineUserNumber+1
|
||||||
}
|
}
|
||||||
|
//计算时间
|
||||||
var markingSpeed float64 =0
|
totalUserOnlineTime =totalUserOnlineTime+userOnlineTime
|
||||||
s := strconv.FormatInt(onlineTime, 10)
|
//计算任务量和分数
|
||||||
f,_:= strconv.ParseFloat(s, 64)
|
totalUserFinishNumber =totalUserFinishNumber+ tempFinishNumber
|
||||||
m:=f/60
|
totalUserScoreSum=totalUserScoreSum+tempScore
|
||||||
if m!=0 {
|
|
||||||
|
|
||||||
|
|
||||||
markingSpeed= float64(finishCount)/m
|
|
||||||
}
|
}
|
||||||
speed = markingSpeed+speed
|
//平均分
|
||||||
|
var averageScore = 0.0
|
||||||
|
if totalUserFinishNumber!=0 {
|
||||||
|
averageScore=float64(totalUserScoreSum)/float64(totalUserFinishNumber)
|
||||||
|
}
|
||||||
|
//在线用户平均分
|
||||||
|
scoreProgressVOList[i].AverageScore=averageScore
|
||||||
|
var currentAverageScore =0.0
|
||||||
|
if currentUserFinishNumber!=0 {
|
||||||
|
currentAverageScore =float64(currentUserScoreSum)/float64(currentUserFinishNumber)
|
||||||
|
}
|
||||||
|
scoreProgressVOList[i].OnlineAverageScore=currentAverageScore
|
||||||
|
// 阅卷速度
|
||||||
|
var scoreSpeed =999999999.0
|
||||||
|
if totalUserFinishNumber!=0 {
|
||||||
|
scoreSpeed= float64(totalUserOnlineTime)/float64(totalUserFinishNumber)
|
||||||
|
}
|
||||||
|
scoreProgressVOList[i].AverageSpeed=scoreSpeed
|
||||||
|
//在线阅卷速度
|
||||||
|
var onlineScoreSpeed = 99999999.0
|
||||||
|
if currentUserFinishNumber!=0 {
|
||||||
|
onlineScoreSpeed= float64(currentUserOnlineTime)/float64(currentUserFinishNumber)
|
||||||
|
}
|
||||||
|
scoreProgressVOList[i].OnlineAverageSpeed=onlineScoreSpeed
|
||||||
|
// 在线人数 预估时间
|
||||||
|
scoreProgressVOList[i].OnlinePredictTime = onlineScoreSpeed*unfinishedNumberFloat
|
||||||
|
//全部人数预估时间
|
||||||
|
scoreProgressVOList[i].PredictTime=scoreSpeed*unfinishedNumberFloat
|
||||||
|
//
|
||||||
|
scoreProgressVOList[i].OnlineUserNumber=onlineUserNumber
|
||||||
|
|
||||||
}
|
|
||||||
var averageSpeed =0.0
|
|
||||||
if (distributionUserNumber!=0) {
|
|
||||||
averageSpeed = speed/(float64(distributionUserNumber))
|
|
||||||
averageSpeed,_= strconv.ParseFloat(fmt.Sprintf("%.2f", averageSpeed), 64)
|
|
||||||
}
|
|
||||||
|
|
||||||
scoreProgressVOList[i].AverageSpeed= averageSpeed
|
|
||||||
//预计时间 未出成绩量/平均速度
|
|
||||||
var predictTime float64= 9999999
|
|
||||||
if averageSpeed!=0 {
|
|
||||||
predictTime = unfinishedNumberFloat/averageSpeed
|
|
||||||
}
|
|
||||||
predictTime=predictTime/60
|
|
||||||
predictTime,_= strconv.ParseFloat(fmt.Sprintf("%.1f", predictTime), 64)
|
|
||||||
scoreProgressVOList[i].PredictTime=predictTime
|
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
@ -1185,6 +1223,7 @@ func (c *SupervisorApiController) SupervisorPoint() {
|
||||||
testInfo.Leader_id=supervisorId
|
testInfo.Leader_id=supervisorId
|
||||||
testInfo.Leader_score=score
|
testInfo.Leader_score=score
|
||||||
testInfo.Final_score=score
|
testInfo.Final_score=score
|
||||||
|
testInfo.Final_score_id=supervisorId
|
||||||
err = testInfo.Update()
|
err = testInfo.Update()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
resp := Response{"10009", "update testPaper fail", err}
|
resp := Response{"10009", "update testPaper fail", err}
|
||||||
|
@ -1203,6 +1242,7 @@ func (c *SupervisorApiController) SupervisorPoint() {
|
||||||
test.Leader_id = supervisorId
|
test.Leader_id = supervisorId
|
||||||
test.Leader_score = sum
|
test.Leader_score = sum
|
||||||
test.Final_score = sum
|
test.Final_score = sum
|
||||||
|
test.Final_score_id=supervisorId
|
||||||
err = test.Update()
|
err = test.Update()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
resp := Response{"10007", "update test fail", err}
|
resp := Response{"10007", "update test fail", err}
|
||||||
|
@ -1225,7 +1265,8 @@ func (c *SupervisorApiController) SupervisorPoint() {
|
||||||
record.User_id = supervisorId
|
record.User_id = supervisorId
|
||||||
record.Question_id=underTest.Question_id
|
record.Question_id=underTest.Question_id
|
||||||
record.Problem_type=underTest.Problem_type
|
record.Problem_type=underTest.Problem_type
|
||||||
record.Test_finish=1
|
if (underTest.Test_question_type!=7 ){record.Test_finish=1}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
err = record.Save()
|
err = record.Save()
|
||||||
|
@ -1417,6 +1458,8 @@ func (c *SupervisorApiController) ScoreDeviation() {
|
||||||
}
|
}
|
||||||
//输出标准
|
//输出标准
|
||||||
ScoreDeviationVOList := make([]responses.ScoreDeviationVO,len(paperDistributions))
|
ScoreDeviationVOList := make([]responses.ScoreDeviationVO,len(paperDistributions))
|
||||||
|
userScoreNumbers :=make([]int ,len(paperDistributions))
|
||||||
|
var count =0
|
||||||
|
|
||||||
//求教师名和转化输出
|
//求教师名和转化输出
|
||||||
for i:=0 ;i<len(paperDistributions);i++ {
|
for i:=0 ;i<len(paperDistributions);i++ {
|
||||||
|
@ -1442,7 +1485,8 @@ func (c *SupervisorApiController) ScoreDeviation() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var finishCount =len(finishScoreList)
|
var finishCount =len(finishScoreList)
|
||||||
|
userScoreNumbers[i]=finishCount
|
||||||
|
count = count + finishCount
|
||||||
|
|
||||||
var averageScore float64 =0
|
var averageScore float64 =0
|
||||||
if finishCount!=0 {
|
if finishCount!=0 {
|
||||||
|
@ -1454,6 +1498,7 @@ func (c *SupervisorApiController) ScoreDeviation() {
|
||||||
}
|
}
|
||||||
averageScore=math.Abs(sum/(float64(finishCount)))
|
averageScore=math.Abs(sum/(float64(finishCount)))
|
||||||
}
|
}
|
||||||
|
|
||||||
var add float64
|
var add float64
|
||||||
for j:=0;j<finishCount;j++ {
|
for j:=0;j<finishCount;j++ {
|
||||||
scoreJ :=finishScoreList[j].Score
|
scoreJ :=finishScoreList[j].Score
|
||||||
|
@ -1465,14 +1510,19 @@ func (c *SupervisorApiController) ScoreDeviation() {
|
||||||
sqrt,_= strconv.ParseFloat(fmt.Sprintf("%.2f", sqrt), 64)
|
sqrt,_= strconv.ParseFloat(fmt.Sprintf("%.2f", sqrt), 64)
|
||||||
ScoreDeviationVOList[i].DeviationScore=sqrt
|
ScoreDeviationVOList[i].DeviationScore=sqrt
|
||||||
}
|
}
|
||||||
|
QuestionScoreDeviation := 0.0
|
||||||
|
for j:=0;j<len(ScoreDeviationVOList);j++{
|
||||||
|
QuestionScoreDeviation=QuestionScoreDeviation+(ScoreDeviationVOList[j].DeviationScore*(float64(userScoreNumbers[j])/float64(count)))
|
||||||
|
QuestionScoreDeviation,_= strconv.ParseFloat(fmt.Sprintf("%.2f", QuestionScoreDeviation), 64)
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
data := make(map[string]interface{})
|
data := make(map[string]interface{})
|
||||||
data["ScoreDeviationVOList"] =ScoreDeviationVOList
|
data["ScoreDeviationVOList"] =ScoreDeviationVOList
|
||||||
|
data["QuestionScoreDeviation"] =QuestionScoreDeviation
|
||||||
resp = Response{"10000", "OK", data}
|
resp = Response{"10000", "OK", data}
|
||||||
c.Data["json"] = resp
|
c.Data["json"] = resp
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1494,7 +1544,10 @@ func (c *SupervisorApiController) SelfMarkList() {
|
||||||
questionId := requestBody.QuestionId
|
questionId := requestBody.QuestionId
|
||||||
|
|
||||||
//------------------------------------------------
|
//------------------------------------------------
|
||||||
|
//找到大题标准误差
|
||||||
|
var topic models.Topic
|
||||||
|
topic.GetTopic(questionId)
|
||||||
|
standardError := topic.Standard_error
|
||||||
//找到自评卷
|
//找到自评卷
|
||||||
selfMarkPaper :=make([]models.UnderCorrectedPaper ,0)
|
selfMarkPaper :=make([]models.UnderCorrectedPaper ,0)
|
||||||
err = models.FindSelfMarkPaperByQuestionId(&selfMarkPaper,questionId)
|
err = models.FindSelfMarkPaperByQuestionId(&selfMarkPaper,questionId)
|
||||||
|
@ -1511,6 +1564,7 @@ func (c *SupervisorApiController) SelfMarkList() {
|
||||||
//存testId
|
//存testId
|
||||||
testId := selfMarkPaper[i].Test_id
|
testId := selfMarkPaper[i].Test_id
|
||||||
selfScoreId := selfMarkPaper[i].Self_score_id
|
selfScoreId := selfMarkPaper[i].Self_score_id
|
||||||
|
|
||||||
var test models.TestPaper
|
var test models.TestPaper
|
||||||
test.GetTestPaperByTestId(testId)
|
test.GetTestPaperByTestId(testId)
|
||||||
|
|
||||||
|
@ -1518,6 +1572,7 @@ func (c *SupervisorApiController) SelfMarkList() {
|
||||||
if test.Examiner_first_id==selfScoreId {
|
if test.Examiner_first_id==selfScoreId {
|
||||||
selfMarkVOList[i].Score =test.Examiner_first_score
|
selfMarkVOList[i].Score =test.Examiner_first_score
|
||||||
selfMarkVOList[i].SelfScore=test.Examiner_first_self_score
|
selfMarkVOList[i].SelfScore=test.Examiner_first_self_score
|
||||||
|
|
||||||
}else if test.Examiner_second_id==selfScoreId {
|
}else if test.Examiner_second_id==selfScoreId {
|
||||||
selfMarkVOList[i].Score=test.Examiner_second_score
|
selfMarkVOList[i].Score=test.Examiner_second_score
|
||||||
selfMarkVOList[i].SelfScore=test.Examiner_second_self_score
|
selfMarkVOList[i].SelfScore=test.Examiner_second_self_score
|
||||||
|
@ -1528,8 +1583,11 @@ func (c *SupervisorApiController) SelfMarkList() {
|
||||||
selfMarkVOList[i].Userid=selfScoreId
|
selfMarkVOList[i].Userid=selfScoreId
|
||||||
var user models.User
|
var user models.User
|
||||||
user.GetUser(selfScoreId)
|
user.GetUser(selfScoreId)
|
||||||
|
|
||||||
selfMarkVOList[i].Name=user.User_name
|
selfMarkVOList[i].Name=user.User_name
|
||||||
selfMarkVOList[i].TestId=testId
|
selfMarkVOList[i].TestId=testId
|
||||||
|
selfMarkVOList[i].StandardError=standardError
|
||||||
|
selfMarkVOList[i].Error=math.Abs(float64(selfMarkVOList[i].Score-selfMarkVOList[i].SelfScore))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
1
frontend
1
frontend
|
@ -1 +0,0 @@
|
||||||
Subproject commit c19299f2f396609b4feb3a15b1824fdb1197f8b9
|
|
|
@ -1 +1 @@
|
||||||
{"C:\\Users\\yang\\Desktop\\阅卷系统\\controllers":1632588181225521900}
|
{"C:\\Users\\chen\\go\\src\\open-ct\\controllers":1632987959114487500}
|
2
main.go
2
main.go
|
@ -32,7 +32,7 @@ func main() {
|
||||||
ExposeHeaders: []string{"Content-Length", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type"},
|
ExposeHeaders: []string{"Content-Length", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type"},
|
||||||
AllowCredentials: true,
|
AllowCredentials: true,
|
||||||
}))
|
}))
|
||||||
beego.SetStaticPath("/static", "frontend/build/static")
|
beego.SetStaticPath("/static", "web/build/static")
|
||||||
// beego.InsertFilter("/", beego.BeforeRouter, routers.TransparentStatic) // must has this for default page
|
// beego.InsertFilter("/", beego.BeforeRouter, routers.TransparentStatic) // must has this for default page
|
||||||
// beego.InsertFilter("/*", beego.BeforeRouter, routers.TransparentStatic)
|
// beego.InsertFilter("/*", beego.BeforeRouter, routers.TransparentStatic)
|
||||||
beego.InsertFilter("*", beego.BeforeRouter, routers.StaticFilter)
|
beego.InsertFilter("*", beego.BeforeRouter, routers.StaticFilter)
|
||||||
|
|
|
@ -104,25 +104,55 @@ func CountArbitramentFinishNumberByQuestionId(questionId int64)(count int64,err
|
||||||
|
|
||||||
func CountFinishScoreNumberByQuestionId(questionId int64)(count int64 ,err error) {
|
func CountFinishScoreNumberByQuestionId(questionId int64)(count int64 ,err error) {
|
||||||
record :=new (ScoreRecord)
|
record :=new (ScoreRecord)
|
||||||
count, err1 := x.Where("question_id = ?", questionId).Where("test_finish=1").Count(record)
|
count, err1 := x.Where("question_id = ?", questionId).Where(" test_record_type!=7 ").Where(" test_record_type!=0 ").Where("test_finish=1").Count(record)
|
||||||
if err!=nil {
|
if err!=nil {
|
||||||
log.Println("CountFinishScoreNumberByQuestionId err ")
|
log.Println("CountFinishScoreNumberByQuestionId err ")
|
||||||
}
|
}
|
||||||
return count,err1
|
return count,err1
|
||||||
}
|
}
|
||||||
|
func FindFinishScoreByQuestionId(finishScores *[]ScoreRecord ,questionId int64)(error) {
|
||||||
|
err := x.Where("question_id = ?", questionId).Where("test_finish=1").Find(*finishScores)
|
||||||
|
if err!=nil {
|
||||||
|
log.Println("CountFinishScoreNumberByQuestionId err ")
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
func FindFinishTestByUserId(scoreRecord *[]ScoreRecord,userId string,questionId int64)( err error) {
|
func FindFinishTestByUserId(scoreRecord *[]ScoreRecord,userId string,questionId int64)( err error) {
|
||||||
err1 := x.Where("question_id = ?", questionId).Where("user_id=?",userId).Where("test_record_type!=0").Where("test_record_type!=5").Find(scoreRecord)
|
err1 := x.Where("question_id = ?", questionId).Where("user_id=?",userId).Where("test_record_type =1 or test_record_type =2 ").Where("test_finish=1").Find(scoreRecord)
|
||||||
if err!=nil {
|
if err!=nil {
|
||||||
log.Println("FindFinishTestNumberByUserId err ")
|
log.Println("FindFinishTestNumberByUserId err ")
|
||||||
}
|
}
|
||||||
return err1
|
return err1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CountFirstScoreNumberByQuestionId(questionId int64)(count int64 ,err error) {
|
||||||
|
record :=new (ScoreRecord)
|
||||||
|
count, err1:= x.Where("question_id = ?", questionId).Where("test_record_type=1 or test_record_type=2 ").Where("test_finish=1").Count(record)
|
||||||
|
if err!=nil {
|
||||||
|
log.Println("CountFirstScoreNumberByQuestionId err ")
|
||||||
|
}
|
||||||
|
return count ,err1
|
||||||
|
}
|
||||||
|
func CountSecondScoreNumberByQuestionId(questionId int64)(count int64 ,err error) {
|
||||||
|
record :=new (ScoreRecord)
|
||||||
|
count, err1 := x.Where("question_id = ?", questionId).Where("test_record_type=1 or test_record_type=2 ").Where("test_finish=1").Count(record)
|
||||||
|
if err!=nil {
|
||||||
|
log.Println("CountSecondScoreNumberByQuestionId err ")
|
||||||
|
}
|
||||||
|
return count,err1
|
||||||
|
}
|
||||||
|
func CountThirdScoreNumberByQuestionId(questionId int64)(count int64,err error) {
|
||||||
|
record :=new (ScoreRecord)
|
||||||
|
count, err1 := x.Where("question_id = ?", questionId).Where("test_record_type=1 or test_record_type=2 ").Where("test_finish=1").Count(record)
|
||||||
|
if err!=nil {
|
||||||
|
log.Println("CountThirdScoreNumberByQuestionId err ")
|
||||||
|
}
|
||||||
|
return count,err1
|
||||||
|
}
|
||||||
|
|
||||||
func CountTestScoreNumberByUserId(userId string,questionId int64)(count int64,err1 error) {
|
func CountTestScoreNumberByUserId(userId string,questionId int64)(count int64,err1 error) {
|
||||||
record :=new (ScoreRecord)
|
record :=new (ScoreRecord)
|
||||||
count, err := x.Where("question_id = ?", questionId).Where("test_record_type=1 or test_record_type=2 or test_record_type=3 ").Where("user_id=?", userId).Where("test_record_type=1 or test_record_type=2 or test_record_type=3").Count(record)
|
count, err := x.Where("question_id = ?", questionId).Where("test_record_type=1 or test_record_type=2 ").Where("user_id=?", userId).Count(record)
|
||||||
if err!=nil {
|
if err!=nil {
|
||||||
log.Println("CountFinishTestNumberByUserId err ")
|
log.Println("CountFinishTestNumberByUserId err ")
|
||||||
}
|
}
|
||||||
|
@ -130,14 +160,14 @@ func CountTestScoreNumberByUserId(userId string,questionId int64)(count int64,er
|
||||||
}
|
}
|
||||||
func SumFinishScore(userId string,questionId int64)(sum float64,err1 error) {
|
func SumFinishScore(userId string,questionId int64)(sum float64,err1 error) {
|
||||||
record :=new (ScoreRecord)
|
record :=new (ScoreRecord)
|
||||||
sum, err := x.Where("question_id = ?", questionId).Where("test_record_type=1 or test_record_type=2 or test_record_type=3 ").Where("user_id=?", userId).Sum(record,"score")
|
sum, err := x.Where("question_id = ?", questionId).Where("test_record_type=1 or test_record_type=2 ").Where("user_id=?", userId).Sum(record,"score")
|
||||||
if err!=nil {
|
if err!=nil {
|
||||||
log.Println("SumFinishScore err ")
|
log.Println("SumFinishScore err ")
|
||||||
}
|
}
|
||||||
return sum,err
|
return sum,err
|
||||||
}
|
}
|
||||||
func FindFinishScoreRecordListByQuestionId (scoreRecordList *[]ScoreRecord , questionId int64) error{
|
func FindFinishScoreRecordListByQuestionId (scoreRecordList *[]ScoreRecord , questionId int64) error{
|
||||||
err := x.Where("question_id = ?",questionId).Find(scoreRecordList)
|
err := x.Where("question_id = ?",questionId).Where("test_record_type=1 or test_record_type=2 ").Find(scoreRecordList)
|
||||||
if err!=nil {
|
if err!=nil {
|
||||||
log.Println("FindFinishScoreRecordListByQuestionId err ")
|
log.Println("FindFinishScoreRecordListByQuestionId err ")
|
||||||
}
|
}
|
||||||
|
@ -163,7 +193,7 @@ func GetTestScoreRecordByTestIdAndUserId(testScoreRecord *ScoreRecord,testId int
|
||||||
}
|
}
|
||||||
func CountTestByScore(question int64, score int64) (count int64,err1 error){
|
func CountTestByScore(question int64, score int64) (count int64,err1 error){
|
||||||
scoreRecord := new(ScoreRecord)
|
scoreRecord := new(ScoreRecord)
|
||||||
count, err := x.Where("score = ?", score).Where("question_id=?",question).Count(scoreRecord)
|
count, err := x.Where("score = ?", score).Where("test_record_type=1 or test_record_type=2 ").Where("question_id=?",question).Count(scoreRecord)
|
||||||
if err!=nil {
|
if err!=nil {
|
||||||
log.Println("CountTestByScored err ")
|
log.Println("CountTestByScored err ")
|
||||||
}
|
}
|
||||||
|
|
|
@ -119,30 +119,7 @@ func CountFailTestNumberByUserId(userId string,questionId int64)(count int64,err
|
||||||
}
|
}
|
||||||
return count,err1
|
return count,err1
|
||||||
}
|
}
|
||||||
func CountFirstScoreNumberByQuestionId(questionId int64)(count int64 ,err error) {
|
|
||||||
testPaper :=new (TestPaper)
|
|
||||||
count, err1:= x.Where("question_id = ?", questionId).Where("examiner_first_id !=null").Count(testPaper)
|
|
||||||
if err!=nil {
|
|
||||||
log.Println("CountFirstScoreNumberByQuestionId err ")
|
|
||||||
}
|
|
||||||
return count ,err1
|
|
||||||
}
|
|
||||||
func CountSecondScoreNumberByQuestionId(questionId int64)(count int64 ,err error) {
|
|
||||||
testPaper :=new (TestPaper)
|
|
||||||
count, err1 := x.Where("question_id = ?", questionId).Where("examiner_second_id !=null").Count(testPaper)
|
|
||||||
if err!=nil {
|
|
||||||
log.Println("CountSecondScoreNumberByQuestionId err ")
|
|
||||||
}
|
|
||||||
return count,err1
|
|
||||||
}
|
|
||||||
func CountThirdScoreNumberByQuestionId(questionId int64)(count int64,err error) {
|
|
||||||
testPaper :=new (TestPaper)
|
|
||||||
count, err1 := x.Where("question_id = ?", questionId).Where("examiner_third_id !=null").Count(testPaper)
|
|
||||||
if err!=nil {
|
|
||||||
log.Println("CountThirdScoreNumberByQuestionId err ")
|
|
||||||
}
|
|
||||||
return count,err1
|
|
||||||
}
|
|
||||||
func DeleteAllTest(questionId int64) error {
|
func DeleteAllTest(questionId int64) error {
|
||||||
_, err := x.Delete(&TestPaper{Question_id:questionId})
|
_, err := x.Delete(&TestPaper{Question_id:questionId})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -20,6 +20,7 @@ type Topic struct {
|
||||||
Import_number int64 `json:"import_number"`
|
Import_number int64 `json:"import_number"`
|
||||||
Import_time time.Time `json:"import_time"`
|
Import_time time.Time `json:"import_time"`
|
||||||
Subject_Id int64 `json:"subject_id"`
|
Subject_Id int64 `json:"subject_id"`
|
||||||
|
SelfScoreRate int64 `json:"self_score_rate"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Topic) GetTopic(id int64) error {
|
func (t *Topic) GetTopic(id int64) error {
|
||||||
|
|
|
@ -75,7 +75,7 @@ func GetDistributedPaperByUserId(id string, up *[]UnderCorrectedPaper) error {
|
||||||
}
|
}
|
||||||
func CountRemainingTestNumberByUserId(questionId int64 ,userId string)(count int64,err error) {
|
func CountRemainingTestNumberByUserId(questionId int64 ,userId string)(count int64,err error) {
|
||||||
underCorrectedPaper:=new (UnderCorrectedPaper)
|
underCorrectedPaper:=new (UnderCorrectedPaper)
|
||||||
count, err1 := x.Where("question_id = ?", questionId).Where("user_id=?",userId).Count(underCorrectedPaper)
|
count, err1 := x.Where("question_id = ?", questionId).Where("user_id=?",userId).Where("test_question_type=1 or test_question_type=2").Count(underCorrectedPaper)
|
||||||
if err!=nil {
|
if err!=nil {
|
||||||
log.Println("CountRemainingTestNumberByUserId err ")
|
log.Println("CountRemainingTestNumberByUserId err ")
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,7 +44,7 @@ func (u *User) Update() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func CountOnlineNumber( )(count int64,err error) {
|
func CountOnlineNumberUnDistribute( )(count int64,err error) {
|
||||||
user :=new (User)
|
user :=new (User)
|
||||||
count, err1 := x.Where("status = ? ", 1).Where(" user_type=?",1).Where("is_distribute = ?",0).Count(user)
|
count, err1 := x.Where("status = ? ", 1).Where(" user_type=?",1).Where("is_distribute = ?",0).Count(user)
|
||||||
if err!=nil {
|
if err!=nil {
|
||||||
|
@ -52,6 +52,29 @@ func CountOnlineNumber( )(count int64,err error) {
|
||||||
}
|
}
|
||||||
return count,err1
|
return count,err1
|
||||||
}
|
}
|
||||||
|
func CountOnlineUserNumberByQuestionId(questionId int64)(count int64,err error) {
|
||||||
|
user :=new (User)
|
||||||
|
count, err1 := x.Where("status = ? ", 1).Where(" user_type=?",1).Where("is_distribute = ?",1).Where("question_id=?",questionId).Count(user)
|
||||||
|
if err!=nil {
|
||||||
|
log.Println("CountOnlineNumber err ")
|
||||||
|
}
|
||||||
|
return count,err1
|
||||||
|
}
|
||||||
|
func FindOnlineUserNumberByQuestionId(users *[]User ,questionId int64)( error) {
|
||||||
|
err := x.Where("status = ? ", 1).Where(" user_type=?",1).Where("is_distribute = ?",1).Where("question_id=?",questionId).Find(users)
|
||||||
|
if err!=nil {
|
||||||
|
log.Println("FindOnlineUserNumberByQuestionId err ")
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func FindUserNumberByQuestionId(users *[]User ,questionId int64)( error) {
|
||||||
|
err := x.Where(" user_type=?",1).Where("is_distribute = ?",1).Where("question_id=?",questionId).Find(users)
|
||||||
|
if err!=nil {
|
||||||
|
log.Println("FindOnlineUserNumberByQuestionId err ")
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func FindUsers( u *[]User) error {
|
func FindUsers( u *[]User) error {
|
||||||
err := x.Where("status = ? ", 1).Where(" user_type=?",1).Where("is_distribute = ?",0).Find(u)
|
err := x.Where("status = ? ", 1).Where(" user_type=?",1).Where("is_distribute = ?",0).Find(u)
|
||||||
|
|
|
@ -8,6 +8,7 @@ type AddTopic struct {
|
||||||
Error int64 `json:"error"`
|
Error int64 `json:"error"`
|
||||||
SubjectName string `json:"subjectName"`
|
SubjectName string `json:"subjectName"`
|
||||||
TopicDetails []AddTopicDetail `json:"topicDetails"`
|
TopicDetails []AddTopicDetail `json:"topicDetails"`
|
||||||
|
SelfScoreRate int64 `json:"self_score_rate"`
|
||||||
}
|
}
|
||||||
type AddTopicDetail struct {
|
type AddTopicDetail struct {
|
||||||
TopicDetailName string `json:"topicDetailName"`
|
TopicDetailName string `json:"topicDetailName"`
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package requests
|
package requests
|
||||||
type QuestionList struct {
|
//type QuestionList struct {
|
||||||
SupervisorId string `joson:"supervisorId"`
|
// SupervisorId string `joson:"supervisorId"`
|
||||||
}
|
//}
|
||||||
type UserInfo struct {
|
type UserInfo struct {
|
||||||
SupervisorId string `joson:"supervisorId"`
|
SupervisorId string `joson:"supervisorId"`
|
||||||
}
|
}
|
||||||
|
@ -44,6 +44,7 @@ type SupervisorPoint struct {
|
||||||
|
|
||||||
type ScoreProgress struct {
|
type ScoreProgress struct {
|
||||||
SupervisorId string `joson:"supervisorId"`
|
SupervisorId string `joson:"supervisorId"`
|
||||||
|
Subject string `json:"subject"`
|
||||||
}
|
}
|
||||||
type ArbitramentUnmarkList struct {
|
type ArbitramentUnmarkList struct {
|
||||||
SupervisorId string `joson:"supervisorId"`
|
SupervisorId string `joson:"supervisorId"`
|
||||||
|
|
|
@ -19,10 +19,10 @@ type TeacherMonitoringVO struct {
|
||||||
TestRemainingNumber int64
|
TestRemainingNumber int64
|
||||||
TestProblemNumber int64
|
TestProblemNumber int64
|
||||||
MarkingSpeed float64
|
MarkingSpeed float64
|
||||||
|
PredictTime float64
|
||||||
AverageScore float64
|
AverageScore float64
|
||||||
Validity float64
|
Validity float64
|
||||||
StandardDeviation float64
|
StandardDeviation float64
|
||||||
EvaluationIndex float64
|
|
||||||
IsOnline int64
|
IsOnline int64
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,6 +40,9 @@ type SelfScoreRecordVO struct {
|
||||||
TestId int64
|
TestId int64
|
||||||
Score int64
|
Score int64
|
||||||
SelfScore int64
|
SelfScore int64
|
||||||
|
IsQualified int64
|
||||||
|
Error float64
|
||||||
|
StandardError int64
|
||||||
|
|
||||||
}
|
}
|
||||||
type ScoreAverageVO struct {
|
type ScoreAverageVO struct {
|
||||||
|
@ -47,6 +50,7 @@ type ScoreAverageVO struct {
|
||||||
UserName string
|
UserName string
|
||||||
Average float64
|
Average float64
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
type ProblemUnderCorrectedPaperVO struct {
|
type ProblemUnderCorrectedPaperVO struct {
|
||||||
|
|
||||||
|
@ -86,26 +90,38 @@ type SelfMarkListVO struct {
|
||||||
TestId int64
|
TestId int64
|
||||||
Score int64
|
Score int64
|
||||||
SelfScore int64
|
SelfScore int64
|
||||||
|
Error float64
|
||||||
|
StandardError int64
|
||||||
Userid string
|
Userid string
|
||||||
Name string
|
Name string
|
||||||
}
|
}
|
||||||
|
|
||||||
type ScoreProgressVO struct {
|
type ScoreProgressVO struct {
|
||||||
|
//问题id 问题名 导入试卷数
|
||||||
QuestionId int64
|
QuestionId int64
|
||||||
QuestionName string
|
QuestionName string
|
||||||
SubjectName string
|
|
||||||
ImportNumber int64
|
ImportNumber int64
|
||||||
AverageScore float64
|
|
||||||
|
|
||||||
|
//在线人数 ,分配人数 平均分 平均速度 在线预计时间 ,预计时间 ,自评指数
|
||||||
|
OnlineUserNumber int64
|
||||||
|
DistributionUserNumber int64
|
||||||
|
|
||||||
|
OnlineAverageScore float64
|
||||||
|
AverageScore float64
|
||||||
|
OnlineAverageSpeed float64
|
||||||
|
AverageSpeed float64
|
||||||
|
OnlinePredictTime float64
|
||||||
|
PredictTime float64
|
||||||
|
|
||||||
|
SelfScoreRate int64
|
||||||
|
|
||||||
|
//完成阅卷数 完成率 未完成数 未完成率 是否全部完成
|
||||||
FinishNumber int64
|
FinishNumber int64
|
||||||
FinishRate float64
|
FinishRate float64
|
||||||
UnfinishedNumber float64
|
UnfinishedNumber float64
|
||||||
UnfinishedRate float64
|
UnfinishedRate float64
|
||||||
IsAllFinished string
|
IsAllFinished string
|
||||||
|
|
||||||
DistributionNumber int64
|
|
||||||
AverageSpeed float64
|
|
||||||
PredictTime float64
|
|
||||||
|
|
||||||
FirstFinishedNumber int64
|
FirstFinishedNumber int64
|
||||||
FirstFinishedRate float64
|
FirstFinishedRate float64
|
||||||
|
@ -125,6 +141,7 @@ type ScoreProgressVO struct {
|
||||||
ThirdUnfinishedRate float64
|
ThirdUnfinishedRate float64
|
||||||
IsThirdFinished string
|
IsThirdFinished string
|
||||||
|
|
||||||
|
//仲裁卷生产数量 生产率 完成数,完成率 未完成数 未完成率 是否全部完成
|
||||||
ArbitramentNumber int64
|
ArbitramentNumber int64
|
||||||
ArbitramentRate float64
|
ArbitramentRate float64
|
||||||
ArbitramentFinishedNumber int64
|
ArbitramentFinishedNumber int64
|
||||||
|
@ -147,4 +164,5 @@ type ScoreDeviationVO struct {
|
||||||
UserId string
|
UserId string
|
||||||
UserName string
|
UserName string
|
||||||
DeviationScore float64
|
DeviationScore float64
|
||||||
|
|
||||||
}
|
}
|
|
@ -35,7 +35,7 @@ func init() {
|
||||||
/**
|
/**
|
||||||
chen :阅卷组长端
|
chen :阅卷组长端
|
||||||
*/
|
*/
|
||||||
beego.Router("/openct/marking/supervisor/question/list", &controllers.SupervisorApiController{}, "post:QuestionList")
|
//beego.Router("/openct/marking/supervisor/question/list", &controllers.SupervisorApiController{}, "post:QuestionList")
|
||||||
beego.Router("/openct/marking/supervisor/user/info", &controllers.SupervisorApiController{}, "post:UserInfo")
|
beego.Router("/openct/marking/supervisor/user/info", &controllers.SupervisorApiController{}, "post:UserInfo")
|
||||||
beego.Router("/openct/marking/supervisor/teacher/monitoring", &controllers.SupervisorApiController{}, "post:TeacherMonitoring")
|
beego.Router("/openct/marking/supervisor/teacher/monitoring", &controllers.SupervisorApiController{}, "post:TeacherMonitoring")
|
||||||
beego.Router("/openct/marking/supervisor/score/distribution", &controllers.SupervisorApiController{}, "post:ScoreDistribution")
|
beego.Router("/openct/marking/supervisor/score/distribution", &controllers.SupervisorApiController{}, "post:ScoreDistribution")
|
||||||
|
|
Loading…
Reference in New Issue