From e9b828541d5c2080220da963641934b936857867 Mon Sep 17 00:00:00 2001 From: daihh Date: Thu, 12 Jan 2023 18:34:15 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E8=80=83=E8=AF=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/exam/api/AloneExamExtendApi.java | 17 +++-- .../module/exam/dto/TestUserAnswerDto.java | 4 +- .../module/exam/entity/AloneExamAnswer.java | 21 ++++++ .../service/impl/AloneExamServiceImpl.java | 64 +++++++++++++++---- 4 files changed, 87 insertions(+), 19 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/exam/api/AloneExamExtendApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/exam/api/AloneExamExtendApi.java index f90990fe..b75fa9b6 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/exam/api/AloneExamExtendApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/exam/api/AloneExamExtendApi.java @@ -24,9 +24,12 @@ import com.xboe.module.exam.entity.AloneExamAnswer; import com.xboe.module.exam.service.IAloneExamService; import com.xboe.module.exam.vo.AloneExamQuery; +import lombok.extern.slf4j.Slf4j; + /** * 对于与第三方对接的扩展接口 */ +@Slf4j @RestController @RequestMapping(value = "/xboe/m/exam/alone-extend") public class AloneExamExtendApi extends ApiBaseController { @@ -115,12 +118,11 @@ public class AloneExamExtendApi extends ApiBaseController { if(StringUtil.isBlank(testId)){ return badRequest("参数异常"); } - //List answer = aloneExamService.findAnswer(aloneId); - Map map=new HashMap(); try { - - return success(map); + Map rs=aloneExamService.statByTestId(testId); + return success(rs); }catch(Exception e) { + log.error("考试统计错误",e); return error("考试统计错误",e.getMessage(),null); } } @@ -132,10 +134,11 @@ public class AloneExamExtendApi extends ApiBaseController { } try { - //PageList rs=aloneExamService. - return success(null); + PageList rs=aloneExamService.findTestUserAnswers(query); + return success(rs); }catch(Exception e) { - return error("考试统计错误",e.getMessage(),null); + log.error("查询考试用户信息错误",e); + return error("查询失败",e.getMessage(),null); } } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/exam/dto/TestUserAnswerDto.java b/servers/boe-server-all/src/main/java/com/xboe/module/exam/dto/TestUserAnswerDto.java index 06f86327..eb8a18ac 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/exam/dto/TestUserAnswerDto.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/exam/dto/TestUserAnswerDto.java @@ -8,8 +8,10 @@ import lombok.Data; @Data public class TestUserAnswerDto { + + private String id; - private Integer totalScore; + private Float totalScore; private Float realScore; diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/exam/entity/AloneExamAnswer.java b/servers/boe-server-all/src/main/java/com/xboe/module/exam/entity/AloneExamAnswer.java index e4377131..5876a0e2 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/exam/entity/AloneExamAnswer.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/exam/entity/AloneExamAnswer.java @@ -177,6 +177,27 @@ public class AloneExamAnswer extends IdBaseEntity { public AloneExamAnswer() { } + + public AloneExamAnswer(String id, String aid, String name, + Integer passLine, Integer status, LocalDateTime startTime, LocalDateTime endTime, + LocalDateTime lastTime, String ucode,Float score, + Float totalScore,Float realScore,Integer useSecond,String aloneId,Integer testDuration) { + this.setId(id); + this.aid = aid; + this.name = name; + this.passLine = passLine; + this.status = status; + this.startTime = startTime; + this.endTime = endTime; + this.lastTime = lastTime; + this.ucode=ucode; + this.score=score; + this.totalScore=totalScore; + this.realScore=realScore; + this.useSecond=useSecond; + this.aloneId=aloneId; + this.testDuration=testDuration; + } public AloneExamAnswer(String id, String aid, String name, String testId, String testName, Integer arrange, Integer passLine, Integer status, LocalDateTime startTime, LocalDateTime endTime, diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/exam/service/impl/AloneExamServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/exam/service/impl/AloneExamServiceImpl.java index 4035be7b..9099ce7f 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/exam/service/impl/AloneExamServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/exam/service/impl/AloneExamServiceImpl.java @@ -2,6 +2,7 @@ package com.xboe.module.exam.service.impl; import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -19,6 +20,7 @@ import com.xboe.core.orm.QueryBuilder; import com.xboe.core.orm.UpdateBuilder; import com.xboe.module.exam.dao.AloneExamAnswerDao; import com.xboe.module.exam.dao.AloneExamDao; +import com.xboe.module.exam.dto.TestUserAnswerDto; import com.xboe.module.exam.dto.TestUserDto; import com.xboe.module.exam.dto.TestUserQuery; import com.xboe.module.exam.entity.AloneExam; @@ -344,17 +346,25 @@ public class AloneExamServiceImpl implements IAloneExamService{ * @return */ public Map statByTestId(String testId) throws Exception { -// QueryBuilder query=QueryBuilder.from(AloneExamAnswer.class); -// query.addField("new AloneExamAnswer(id,aid,name,testId,testName,arrange,passLine,status,startTime,endTime,lastTime,clientIp,ucode,score,totalScore,realScore,useSecond)"); -// query.addFilter(FieldFilters.eq("aid",aid)); -// query.addFilter(FieldFilters.eq("testId",testId)); -// query.addOrder(OrderCondition.desc("id")); -// query.setPageSize(1); -// List list=dao.findList(query.builder()); -// if(list.isEmpty()) { -// return null; -// } - return null; + String sql="select count(a.id) as total," + + "sum(CASE WHEN a.status = 9 THEN 1 ELSE 0 END) as ftotal," + + "sum(CASE WHEN a.status = 1 THEN 1 ELSE 0 END) as dtotal," + + "sum(CASE WHEN a.status = 0 THEN 1 ELSE 0 END) as ntotal," + + "sum(CASE WHEN a.score >=t.pass_line THEN 1 ELSE 0 END) as ptotal," + + "sum(CASE WHEN a.score < t.pass_line THEN 1 ELSE 0 END) as nptotal " + + "from boe_exam_alone a inner join boe_exam_test t on a.test_id=t.id " + + "where a.test_id=?1"; + List objsList= dao.findListFields(sql,testId); + Map rs=new HashMap(); + Object[] objs=objsList.get(0); + rs.put("total",objs[0]); + rs.put("done",objs[1]); + rs.put("doing",objs[2]); + rs.put("noStart",objs[3]); + rs.put("pass",objs[4]); + rs.put("noPass",objs[5]); + + return rs; } public PageList findTestUserAnswers(TestUserQuery params) throws Exception{ @@ -372,6 +382,9 @@ public class AloneExamServiceImpl implements IAloneExamService{ } PageList rsUsers=aeDao.findPageFields(query.builder()); List dtoUsers=new ArrayList(); + List aloneIds=new ArrayList(); + Map userMap=new HashMap(); + for(Object[] objs : rsUsers.getList()) { TestUserDto dto=new TestUserDto(); dto.setAloneId((String)objs[0]); @@ -379,9 +392,38 @@ public class AloneExamServiceImpl implements IAloneExamService{ dto.setName((String)objs[2]); dto.setTestId(params.getTestId()); dto.setTestName((String)objs[3]); + dto.setAnswers(new ArrayList<>()); + dtoUsers.add(dto); + userMap.put(dto.getAloneId(), dto); + aloneIds.add(dto.getAloneId()); + } + //查询用户的答卷 + QueryBuilder query2=QueryBuilder.from(AloneExamAnswer.class); + query2.addField("new AloneExamAnswer(id,aid,name,passLine,status,startTime,endTime,lastTime,ucode,score,totalScore,realScore,useSecond,testDuration)"); + query2.addFilter(FieldFilters.in("aloneId",aloneIds)); + query2.addFilter(FieldFilters.eq("testId",params.getTestId())); + query2.addOrder(OrderCondition.asc("startTime")); + query2.setPageSize(1); + List alist=dao.findList(query2.builder()); + for(AloneExamAnswer aea : alist) { + TestUserAnswerDto adto=new TestUserAnswerDto(); + adto.setId(aea.getId()); + adto.setEndTime(aea.getEndTime()); + adto.setLastTime(aea.getLastTime()); + adto.setRealScore(aea.getRealScore()); + adto.setScore(aea.getScore()); + adto.setStartTime(aea.getStartTime()); + adto.setStatus(aea.getStatus()); + adto.setTestDuration(aea.getTestDuration()); + adto.setTotalScore(aea.getTotalScore()); + TestUserDto userDto= userMap.get(aea.getAloneId()); + userDto.getAnswers().add(adto); } PageList rs=new PageList(); + rs.setCount(rsUsers.getCount()); + rs.setList(dtoUsers); + rs.setPageSize(params.getPageSize()); return rs; } } From 227bea3b08df87e36af75f193acaa81a8a1f6e19 Mon Sep 17 00:00:00 2001 From: daihh Date: Thu, 12 Jan 2023 19:17:09 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E8=80=83=E8=AF=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xboe/module/exam/api/AloneExamExtendApi.java | 8 ++++++-- .../module/exam/service/impl/AloneExamServiceImpl.java | 5 +++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/exam/api/AloneExamExtendApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/exam/api/AloneExamExtendApi.java index b75fa9b6..ae65b6b2 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/exam/api/AloneExamExtendApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/exam/api/AloneExamExtendApi.java @@ -1,6 +1,5 @@ package com.xboe.module.exam.api; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -132,7 +131,12 @@ public class AloneExamExtendApi extends ApiBaseController { if(StringUtil.isBlank(query.getTestId())){ return badRequest("参数异常"); } - + if(query.getPageSize()==null) { + query.setPageSize(100); + } + if(query.getPageIndex()==null) { + query.setPageIndex(1); + } try { PageList rs=aloneExamService.findTestUserAnswers(query); return success(rs); diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/exam/service/impl/AloneExamServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/exam/service/impl/AloneExamServiceImpl.java index 9099ce7f..263f836f 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/exam/service/impl/AloneExamServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/exam/service/impl/AloneExamServiceImpl.java @@ -354,7 +354,7 @@ public class AloneExamServiceImpl implements IAloneExamService{ + "sum(CASE WHEN a.score < t.pass_line THEN 1 ELSE 0 END) as nptotal " + "from boe_exam_alone a inner join boe_exam_test t on a.test_id=t.id " + "where a.test_id=?1"; - List objsList= dao.findListFields(sql,testId); + List objsList= dao.sqlFindList(sql,testId); Map rs=new HashMap(); Object[] objs=objsList.get(0); rs.put("total",objs[0]); @@ -399,7 +399,8 @@ public class AloneExamServiceImpl implements IAloneExamService{ } //查询用户的答卷 QueryBuilder query2=QueryBuilder.from(AloneExamAnswer.class); - query2.addField("new AloneExamAnswer(id,aid,name,passLine,status,startTime,endTime,lastTime,ucode,score,totalScore,realScore,useSecond,testDuration)"); + query2.addField("new AloneExamAnswer(id,aid,name,passLine,status,startTime,endTime,lastTime,ucode,score,totalScore,realScore,useSecond,aloneId,testDuration)"); + //String id, String aid, String name, Integer passLine, Integer status, LocalDateTime startTime, LocalDateTime endTime,LocalDateTime lastTime, String ucode,Float score,Float totalScore,Float realScore,Integer useSecond,String aloneId,Integer testDuration query2.addFilter(FieldFilters.in("aloneId",aloneIds)); query2.addFilter(FieldFilters.eq("testId",params.getTestId())); query2.addOrder(OrderCondition.asc("startTime")); From 9c1f7de05ca176d2589b9c5d53d8d4f6c7fcac58 Mon Sep 17 00:00:00 2001 From: daihh Date: Fri, 13 Jan 2023 10:44:21 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=95=99=E5=B8=88=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E7=9A=84=E5=8F=AA=E6=98=AF=E8=BF=94=E5=9B=9E?= =?UTF-8?q?kid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/xboe/module/teacher/api/TeacherApi.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/teacher/api/TeacherApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/teacher/api/TeacherApi.java index 1b578429..83318ef4 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/teacher/api/TeacherApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/teacher/api/TeacherApi.java @@ -241,8 +241,13 @@ public class TeacherApi extends ApiBaseController { if(StringUtils.isBlank(id)){ return badRequest("参数异常"); } + Account a = accountService.get(id); + if(a==null) { + return badRequest("用户不对,数据错误,请联系管理员"); + } Teacher teacher = service.get(id); Map rs=new HashMap(); + rs.put("sysId",a.getSysId()); if(teacher!=null){ rs.put("id",id); rs.put("photo",teacher.getPhoto()); From a08f4615efabf663afabc9eff2982480d6e05fe5 Mon Sep 17 00:00:00 2001 From: daihh Date: Fri, 13 Jan 2023 11:13:43 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=95=99=E5=B8=88=E7=9A=84=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=8C=E5=9C=A8=E6=B2=A1=E6=9C=89=E6=83=85=E5=86=B5?= =?UTF-8?q?=E4=B8=8B=EF=BC=8C=E9=9C=80=E8=A6=81=E6=B7=BB=E5=8A=A0=E6=95=99?= =?UTF-8?q?=E5=B8=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/TeacherServiceImpl.java | 41 +++++++++++++------ 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/teacher/service/impl/TeacherServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/teacher/service/impl/TeacherServiceImpl.java index 3328801d..907174ad 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/teacher/service/impl/TeacherServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/teacher/service/impl/TeacherServiceImpl.java @@ -210,19 +210,34 @@ public class TeacherServiceImpl implements ITeacherService { @Transactional public void updateTeacher(TeacherFiledVo entity) { -// Teacher teacher = dao.get(entity.getId()); -// teacher.setPhoto(entity.getPhoto()); -// teacher.setWorkExperience(entity.getWorkExperience()); -// teacher.setCourses(entity.getCourses()); -// teacher.setExpertise(entity.getExpertise()); -// dao.update(teacher); - //修改为以下方式,不影响其它字段的 - dao.updateMultiFieldById(entity.getId(), - UpdateBuilder.create("photo", entity.getPhoto()), - UpdateBuilder.create("workExperience", entity.getWorkExperience()), - UpdateBuilder.create("courses", entity.getCourses()), - UpdateBuilder.create("expertise", entity.getExpertise()) - ); + Teacher teacher = dao.get(entity.getId()); + if(teacher==null) { + teacher=new Teacher(); + teacher.setId(entity.getId()); + teacher.setPhoto(entity.getPhoto()); + teacher.setWorkExperience(entity.getWorkExperience()); + teacher.setCourses(entity.getCourses()); + teacher.setExpertise(entity.getExpertise()); + teacher.setWaitStatus(0); + teacher.setCertStatus(0); + teacher.setStatus(1); + teacher.setDeleted(false); + //提取用户信息 + User u= userService.get(entity.getId()); + if(u!=null) { + teacher.setName(u.getName()); + teacher.setDepartId(u.getDepartId()); + teacher.setGender(u.getGender()); + } + dao.save(teacher); + }else { + dao.updateMultiFieldById(entity.getId(), + UpdateBuilder.create("photo", entity.getPhoto()), + UpdateBuilder.create("workExperience", entity.getWorkExperience()), + UpdateBuilder.create("courses", entity.getCourses()), + UpdateBuilder.create("expertise", entity.getExpertise()) + ); + } } @Override