暂时提交

This commit is contained in:
joylink_zhangsai 2021-03-26 17:08:06 +08:00
parent 4801d11b3b
commit 5167575dde
23 changed files with 678 additions and 395 deletions

17
sql/20210326-zhangsai.sql Normal file
View File

@ -0,0 +1,17 @@
alter table exam_definition modify lesson_id bigint null comment '所属课程ID',
add map_id bigint not null comment '地图id' after id;
-- 更新exam_definition的map_id字段
UPDATE exam_definition SET map_id =( SELECT map_id FROM ls_lesson WHERE exam_definition.lesson_id = ls_lesson.id)
alter table org_exam
modify org_id bigint not null,
add creator_id bigint not null,
add create_time datetime not null;
ALTER TABLE `org_exam`
ADD COLUMN `id` bigint(20) NOT NULL AUTO_INCREMENT FIRST ,
ADD PRIMARY KEY (`id`);

View File

@ -3,10 +3,7 @@ package club.joylink.rtss.controller;
import club.joylink.rtss.constants.RoleEnum;
import club.joylink.rtss.controller.advice.AuthenticateInterceptor;
import club.joylink.rtss.controller.advice.Role;
import club.joylink.rtss.services.org.IOrgLessonService;
import club.joylink.rtss.services.org.IOrgScoringRuleService;
import club.joylink.rtss.services.org.IOrgService;
import club.joylink.rtss.services.org.IOrgUserService;
import club.joylink.rtss.services.org.*;
import club.joylink.rtss.vo.LoginUserInfoVO;
import club.joylink.rtss.vo.UserVO;
import club.joylink.rtss.vo.client.LessonVO;
@ -39,6 +36,9 @@ public class OrgController {
@Autowired
private IOrgScoringRuleService iOrgScoringRuleService;
@Autowired
private IOrgExamService iOrgExamService;
@ApiOperation(value = "创建顶级组织")
@PostMapping
public CompanyVO create(@RequestBody @Validated CompanyVO company, @RequestAttribute(AuthenticateInterceptor.LOGIN_USER_KEY) UserVO user) {
@ -183,15 +183,15 @@ public class OrgController {
iOrgService.createCls(createVO, loginInfo);
}
@ApiOperation("分页查询班级")
@ApiOperation("分页查询当前登录项目所属组织下的班级")
@GetMapping("/paged/cls")
public PageVO<DepartmentVO> pagedQuerySelfCls(OrgQueryVO queryVO, @RequestAttribute LoginUserInfoVO loginInfo) {
return iOrgService.pagedQueryCls(queryVO, loginInfo);
}
@ApiOperation("查询班级")
@ApiOperation("查询当前登录项目所属组织下的班级")
@GetMapping("/list/cls")
public List<DepartmentVO> querySelfCls(OrgQueryVO queryVO, @RequestAttribute LoginUserInfoVO loginInfo) {
public List<DepartmentVO> queryCls(OrgQueryVO queryVO, @RequestAttribute LoginUserInfoVO loginInfo) {
return iOrgService.queryCls(queryVO, loginInfo);
}
@ -257,4 +257,11 @@ public class OrgController {
public PageVO<DepartmentVO> adminPagedQueryOrg(OrgQueryVO queryVO) {
return iOrgService.adminPagedQueryOrg(queryVO);
}
@ApiOperation("给班级安排考试")
@PostMapping("/orgExam/{clsId}")
public void createOrgExam(@PathVariable Long clsId, @RequestBody List<Long> examIds, @RequestAttribute UserVO user) {
iOrgExamService.create(clsId, examIds, user);
}
}

View File

@ -7,7 +7,6 @@ import club.joylink.rtss.vo.client.ExamDefinitionQueryVO;
import club.joylink.rtss.vo.client.ExamDefinitionVO;
import club.joylink.rtss.vo.client.ExamsLessonVO;
import club.joylink.rtss.vo.client.PageVO;
import club.joylink.rtss.vo.client.validGroup.ExamDefinitionCheck;
import club.joylink.rtss.vo.client.validGroup.ExamDefinitionRulesCheck;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -27,30 +26,16 @@ public class ExamController {
@ApiOperation(value = "创建考试")
@PostMapping(path = "")
public void create(@RequestBody @Validated(value = {ExamDefinitionCheck.class, ExamDefinitionRulesCheck.class})
ExamDefinitionVO examDefinitionVO, @RequestAttribute @ApiIgnore UserVO user) {
public void create(@RequestBody @Validated ExamDefinitionVO examDefinitionVO, @RequestAttribute @ApiIgnore UserVO user) {
iExamService.create(examDefinitionVO, user);
}
// @ApiOperation(value = "贵装备创建考试")
// @PostMapping(path = "/project/GZB")
// public void createGZBExam(@RequestBody @Validated(value = {ExamDefinitionCheck.class, ExamDefinitionRulesCheck.class})
// ExamDefinitionVO examDefinitionVO, @RequestAttribute @ApiIgnore UserVO user) {
// iExamService.createGZBExam(examDefinitionVO, user);
// }
@ApiOperation(value = "检查分数是否合理")
@GetMapping(path = "/checkScore")
public boolean checkScore(@Validated(value = ExamDefinitionRulesCheck.class) ExamDefinitionVO examDefinitionVO) {
return iExamService.checkScore(examDefinitionVO);
}
// @ApiOperation(value = "查询课程下的章节信息")
// @GetMapping(path = "/{lessonId}/chapter")
// public CommonJsonResponse queryChapterInfo(@PathVariable(required = true) String lessonId) {
// return CommonJsonResponse.newSuccessResponse(iExamService.queryChapterInfo(lessonId));
// }
@ApiOperation(value = "查询课程所属产品下有实训的实训类型")
@GetMapping(path = "/{lessonId}/trainingTypes")
public List<String> queryTrainingTypes(@PathVariable Long lessonId) {
@ -81,13 +66,6 @@ public class ExamController {
iExamService.deleteExam(id, user);
}
// @ApiOperation(value = "查询章节下允许创建的最多题目数量")
// @GetMapping(path = "/trainingNum/{lessonId}/{chapterId}")
// public CommonJsonResponse queryTrainingNum(@PathVariable(required = true) String lessonId, @PathVariable(required = true) String chapterId) {
// int trainingNum = iExamService.queryTrainingNum(lessonId, chapterId);
// return CommonJsonResponse.newSuccessResponse(trainingNum);
// }
@ApiOperation(value = "根据课程和实训类型查询实训数量")
@GetMapping(path = "/trainingNum/{lessonId}/{trainingType}")
public Long queryTrainingNum(@PathVariable Long lessonId, @PathVariable String trainingType, String operateType) {

View File

@ -25,6 +25,7 @@ import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.validation.constraints.NotBlank;
import java.util.Map;
import java.util.Set;
@Api(tags = { "实训数据管理接口" })
@ -195,4 +196,10 @@ public class TrainingV1Controller {
public TrainingNewVO loadTraining(@PathVariable String group, @PathVariable Long id) {
return iTrainingService.loadTraining(group, id);
}
@ApiOperation("根据地图id和产品类型查询实训、操作类型及数量")
@GetMapping("/trainingTypeAndQuantity")
public Map<String, Map<String, Long>> queryTrainingTypeAndQuantity(Long mapId, String prdType) {
return iTrainingService.queryTrainingTypeAndQuantity(mapId, prdType);
}
}

View File

@ -4,12 +4,17 @@ import java.io.Serializable;
import java.time.LocalDateTime;
/**
* exam_definition
* @author
* 考试定义表
*/
public class ExamDefinition implements Serializable {
private Long id;
/**
* 地图id
*/
private Long mapId;
/**
* 所属课程ID
*/
@ -85,6 +90,14 @@ public class ExamDefinition implements Serializable {
this.id = id;
}
public Long getMapId() {
return mapId;
}
public void setMapId(Long mapId) {
this.mapId = mapId;
}
public Long getLessonId() {
return lessonId;
}
@ -202,6 +215,7 @@ public class ExamDefinition implements Serializable {
}
ExamDefinition other = (ExamDefinition) that;
return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
&& (this.getMapId() == null ? other.getMapId() == null : this.getMapId().equals(other.getMapId()))
&& (this.getLessonId() == null ? other.getLessonId() == null : this.getLessonId().equals(other.getLessonId()))
&& (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))
&& (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType()))
@ -222,6 +236,7 @@ public class ExamDefinition implements Serializable {
final int prime = 31;
int result = 1;
result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
result = prime * result + ((getMapId() == null) ? 0 : getMapId().hashCode());
result = prime * result + ((getLessonId() == null) ? 0 : getLessonId().hashCode());
result = prime * result + ((getName() == null) ? 0 : getName().hashCode());
result = prime * result + ((getType() == null) ? 0 : getType().hashCode());
@ -245,6 +260,7 @@ public class ExamDefinition implements Serializable {
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", mapId=").append(mapId);
sb.append(", lessonId=").append(lessonId);
sb.append(", name=").append(name);
sb.append(", type=").append(type);

View File

@ -185,6 +185,66 @@ public class ExamDefinitionExample {
return (Criteria) this;
}
public Criteria andMapIdIsNull() {
addCriterion("map_id is null");
return (Criteria) this;
}
public Criteria andMapIdIsNotNull() {
addCriterion("map_id is not null");
return (Criteria) this;
}
public Criteria andMapIdEqualTo(Long value) {
addCriterion("map_id =", value, "mapId");
return (Criteria) this;
}
public Criteria andMapIdNotEqualTo(Long value) {
addCriterion("map_id <>", value, "mapId");
return (Criteria) this;
}
public Criteria andMapIdGreaterThan(Long value) {
addCriterion("map_id >", value, "mapId");
return (Criteria) this;
}
public Criteria andMapIdGreaterThanOrEqualTo(Long value) {
addCriterion("map_id >=", value, "mapId");
return (Criteria) this;
}
public Criteria andMapIdLessThan(Long value) {
addCriterion("map_id <", value, "mapId");
return (Criteria) this;
}
public Criteria andMapIdLessThanOrEqualTo(Long value) {
addCriterion("map_id <=", value, "mapId");
return (Criteria) this;
}
public Criteria andMapIdIn(List<Long> values) {
addCriterion("map_id in", values, "mapId");
return (Criteria) this;
}
public Criteria andMapIdNotIn(List<Long> values) {
addCriterion("map_id not in", values, "mapId");
return (Criteria) this;
}
public Criteria andMapIdBetween(Long value1, Long value2) {
addCriterion("map_id between", value1, value2, "mapId");
return (Criteria) this;
}
public Criteria andMapIdNotBetween(Long value1, Long value2) {
addCriterion("map_id not between", value1, value2, "mapId");
return (Criteria) this;
}
public Criteria andLessonIdIsNull() {
addCriterion("lesson_id is null");
return (Criteria) this;

View File

@ -1,18 +1,33 @@
package club.joylink.rtss.entity;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* org_exam
* @author
* @author
* 学生的试卷和班级关系
*/
public class OrgExam implements Serializable {
private Long id;
private Long examId;
private Long orgId;
private Long creatorId;
private LocalDateTime createTime;
private static final long serialVersionUID = 1L;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getExamId() {
return examId;
}
@ -29,6 +44,22 @@ public class OrgExam implements Serializable {
this.orgId = orgId;
}
public Long getCreatorId() {
return creatorId;
}
public void setCreatorId(Long creatorId) {
this.creatorId = creatorId;
}
public LocalDateTime getCreateTime() {
return createTime;
}
public void setCreateTime(LocalDateTime createTime) {
this.createTime = createTime;
}
@Override
public boolean equals(Object that) {
if (this == that) {
@ -41,16 +72,22 @@ public class OrgExam implements Serializable {
return false;
}
OrgExam other = (OrgExam) that;
return (this.getExamId() == null ? other.getExamId() == null : this.getExamId().equals(other.getExamId()))
&& (this.getOrgId() == null ? other.getOrgId() == null : this.getOrgId().equals(other.getOrgId()));
return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
&& (this.getExamId() == null ? other.getExamId() == null : this.getExamId().equals(other.getExamId()))
&& (this.getOrgId() == null ? other.getOrgId() == null : this.getOrgId().equals(other.getOrgId()))
&& (this.getCreatorId() == null ? other.getCreatorId() == null : this.getCreatorId().equals(other.getCreatorId()))
&& (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()));
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
result = prime * result + ((getExamId() == null) ? 0 : getExamId().hashCode());
result = prime * result + ((getOrgId() == null) ? 0 : getOrgId().hashCode());
result = prime * result + ((getCreatorId() == null) ? 0 : getCreatorId().hashCode());
result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
return result;
}
@ -60,10 +97,13 @@ public class OrgExam implements Serializable {
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", examId=").append(examId);
sb.append(", orgId=").append(orgId);
sb.append(", creatorId=").append(creatorId);
sb.append(", createTime=").append(createTime);
sb.append(", serialVersionUID=").append(serialVersionUID);
sb.append("]");
return sb.toString();
}
}
}

View File

@ -1,5 +1,6 @@
package club.joylink.rtss.entity;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@ -124,6 +125,66 @@ public class OrgExamExample {
criteria.add(new Criterion(condition, value1, value2));
}
public Criteria andIdIsNull() {
addCriterion("id is null");
return (Criteria) this;
}
public Criteria andIdIsNotNull() {
addCriterion("id is not null");
return (Criteria) this;
}
public Criteria andIdEqualTo(Long value) {
addCriterion("id =", value, "id");
return (Criteria) this;
}
public Criteria andIdNotEqualTo(Long value) {
addCriterion("id <>", value, "id");
return (Criteria) this;
}
public Criteria andIdGreaterThan(Long value) {
addCriterion("id >", value, "id");
return (Criteria) this;
}
public Criteria andIdGreaterThanOrEqualTo(Long value) {
addCriterion("id >=", value, "id");
return (Criteria) this;
}
public Criteria andIdLessThan(Long value) {
addCriterion("id <", value, "id");
return (Criteria) this;
}
public Criteria andIdLessThanOrEqualTo(Long value) {
addCriterion("id <=", value, "id");
return (Criteria) this;
}
public Criteria andIdIn(List<Long> values) {
addCriterion("id in", values, "id");
return (Criteria) this;
}
public Criteria andIdNotIn(List<Long> values) {
addCriterion("id not in", values, "id");
return (Criteria) this;
}
public Criteria andIdBetween(Long value1, Long value2) {
addCriterion("id between", value1, value2, "id");
return (Criteria) this;
}
public Criteria andIdNotBetween(Long value1, Long value2) {
addCriterion("id not between", value1, value2, "id");
return (Criteria) this;
}
public Criteria andExamIdIsNull() {
addCriterion("exam_id is null");
return (Criteria) this;
@ -194,55 +255,175 @@ public class OrgExamExample {
return (Criteria) this;
}
public Criteria andOrgIdEqualTo(Integer value) {
public Criteria andOrgIdEqualTo(Long value) {
addCriterion("org_id =", value, "orgId");
return (Criteria) this;
}
public Criteria andOrgIdNotEqualTo(Integer value) {
public Criteria andOrgIdNotEqualTo(Long value) {
addCriterion("org_id <>", value, "orgId");
return (Criteria) this;
}
public Criteria andOrgIdGreaterThan(Integer value) {
public Criteria andOrgIdGreaterThan(Long value) {
addCriterion("org_id >", value, "orgId");
return (Criteria) this;
}
public Criteria andOrgIdGreaterThanOrEqualTo(Integer value) {
public Criteria andOrgIdGreaterThanOrEqualTo(Long value) {
addCriterion("org_id >=", value, "orgId");
return (Criteria) this;
}
public Criteria andOrgIdLessThan(Integer value) {
public Criteria andOrgIdLessThan(Long value) {
addCriterion("org_id <", value, "orgId");
return (Criteria) this;
}
public Criteria andOrgIdLessThanOrEqualTo(Integer value) {
public Criteria andOrgIdLessThanOrEqualTo(Long value) {
addCriterion("org_id <=", value, "orgId");
return (Criteria) this;
}
public Criteria andOrgIdIn(List<Integer> values) {
public Criteria andOrgIdIn(List<Long> values) {
addCriterion("org_id in", values, "orgId");
return (Criteria) this;
}
public Criteria andOrgIdNotIn(List<Integer> values) {
public Criteria andOrgIdNotIn(List<Long> values) {
addCriterion("org_id not in", values, "orgId");
return (Criteria) this;
}
public Criteria andOrgIdBetween(Integer value1, Integer value2) {
public Criteria andOrgIdBetween(Long value1, Long value2) {
addCriterion("org_id between", value1, value2, "orgId");
return (Criteria) this;
}
public Criteria andOrgIdNotBetween(Integer value1, Integer value2) {
public Criteria andOrgIdNotBetween(Long value1, Long value2) {
addCriterion("org_id not between", value1, value2, "orgId");
return (Criteria) this;
}
public Criteria andCreatorIdIsNull() {
addCriterion("creator_id is null");
return (Criteria) this;
}
public Criteria andCreatorIdIsNotNull() {
addCriterion("creator_id is not null");
return (Criteria) this;
}
public Criteria andCreatorIdEqualTo(Long value) {
addCriterion("creator_id =", value, "creatorId");
return (Criteria) this;
}
public Criteria andCreatorIdNotEqualTo(Long value) {
addCriterion("creator_id <>", value, "creatorId");
return (Criteria) this;
}
public Criteria andCreatorIdGreaterThan(Long value) {
addCriterion("creator_id >", value, "creatorId");
return (Criteria) this;
}
public Criteria andCreatorIdGreaterThanOrEqualTo(Long value) {
addCriterion("creator_id >=", value, "creatorId");
return (Criteria) this;
}
public Criteria andCreatorIdLessThan(Long value) {
addCriterion("creator_id <", value, "creatorId");
return (Criteria) this;
}
public Criteria andCreatorIdLessThanOrEqualTo(Long value) {
addCriterion("creator_id <=", value, "creatorId");
return (Criteria) this;
}
public Criteria andCreatorIdIn(List<Long> values) {
addCriterion("creator_id in", values, "creatorId");
return (Criteria) this;
}
public Criteria andCreatorIdNotIn(List<Long> values) {
addCriterion("creator_id not in", values, "creatorId");
return (Criteria) this;
}
public Criteria andCreatorIdBetween(Long value1, Long value2) {
addCriterion("creator_id between", value1, value2, "creatorId");
return (Criteria) this;
}
public Criteria andCreatorIdNotBetween(Long value1, Long value2) {
addCriterion("creator_id not between", value1, value2, "creatorId");
return (Criteria) this;
}
public Criteria andCreateTimeIsNull() {
addCriterion("create_time is null");
return (Criteria) this;
}
public Criteria andCreateTimeIsNotNull() {
addCriterion("create_time is not null");
return (Criteria) this;
}
public Criteria andCreateTimeEqualTo(LocalDateTime value) {
addCriterion("create_time =", value, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeNotEqualTo(LocalDateTime value) {
addCriterion("create_time <>", value, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeGreaterThan(LocalDateTime value) {
addCriterion("create_time >", value, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeGreaterThanOrEqualTo(LocalDateTime value) {
addCriterion("create_time >=", value, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeLessThan(LocalDateTime value) {
addCriterion("create_time <", value, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeLessThanOrEqualTo(LocalDateTime value) {
addCriterion("create_time <=", value, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeIn(List<LocalDateTime> values) {
addCriterion("create_time in", values, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeNotIn(List<LocalDateTime> values) {
addCriterion("create_time not in", values, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeBetween(LocalDateTime value1, LocalDateTime value2) {
addCriterion("create_time between", value1, value2, "createTime");
return (Criteria) this;
}
public Criteria andCreateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {
addCriterion("create_time not between", value1, value2, "createTime");
return (Criteria) this;
}
}
/**

View File

@ -11,9 +11,11 @@ import club.joylink.rtss.simulation.cbtc.GroupSimulationService;
import club.joylink.rtss.vo.LoginUserInfoVO;
import club.joylink.rtss.vo.UserVO;
import club.joylink.rtss.vo.client.*;
import club.joylink.rtss.vo.client.map.MapVO;
import club.joylink.rtss.vo.client.org.DepartmentVO;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import lombok.NonNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -76,26 +78,23 @@ public class ExamService implements IExamService {
*/
@Override
public void create(ExamDefinitionVO examDefinitionVO, UserVO userVO) {
examDefinitionVO.setCreatorId(userVO.getId());
//检查分数是否合理
BusinessExceptionAssertEnum.ARGUMENT_ILLEGAL.assertTrue(checkScore(examDefinitionVO));
//检查考试名称和考试规则是否唯一
checkName(examDefinitionVO);
//检查考试名称是否唯一
confirmNameUnique(examDefinitionVO.getMapId(), examDefinitionVO.getPrdType(), examDefinitionVO.getName());
//插入考试定义表数据
ExamDefinition examDefinition = examDefinitionVO.toDB();
examDefinition.setCreatorId(userVO.getId());
examDefinition.setCreateTime(LocalDateTime.now());
examDefinition.setStatus(BusinessConsts.STATUS_USE);
// 判断是否是管理员并设置试用
if (this.iSysUserService.isAdmin(userVO) && examDefinitionVO.getTrial()) {
examDefinition.setTrial(true);
} else {
examDefinition.setTrial(false);
if (examDefinitionVO.getTrial() != null) {
examDefinition.setTrial(examDefinition.getTrial());
}
examDefinitionDAO.insert(examDefinition);
//插入试卷班级关系
if (!CollectionUtils.isEmpty(examDefinitionVO.getClasses())) {
examDefinitionVO.getClasses().forEach(departmentVO -> iOrgUserService.addDepartExam(examDefinition.getId(), departmentVO.getId()));
}
// //插入试卷班级关系
// if (!CollectionUtils.isEmpty(examDefinitionVO.getClasses())) {
// examDefinitionVO.getClasses().forEach(departmentVO -> iOrgUserService.addDepartExam(examDefinition.getId(), departmentVO.getId()));
// }
//插入试题规则表数据
List<ExamDefinitionRulesVO> examDefinitionRulesVOList = examDefinitionVO.getExamDefinitionRulesVOList();
examDefinitionRulesVOList.forEach(examDefinitionRulesVO -> {
@ -152,47 +151,19 @@ public class ExamService implements IExamService {
}
}
// /**
// * GZB创建考试定义
// */
// @Transactional
// @Override
// public void createGZBExam(ExamDefinitionVO examDefinitionVO, UserVO userVO) {
// examDefinitionVO.setCreatorId(userVO.getId());
//
// //检查分数是否合理
// BusinessExceptionAssertEnum.ARGUMENT_ILLEGAL.assertTrue(checkScore(examDefinitionVO));
// //检查考试名称和考试规则是否唯一
// checkName(examDefinitionVO);
// //插入考试定义表数据
// ExamDefinition examDefinition = examDefinitionVO.toDB();
// examDefinition.setCreateTime(LocalDateTime.now());
// examDefinition.setStatus(BusinessConsts.STATUS_USE);
// // 判断是否是管理员并设置试用
// if(this.iSysUserService.isAdmin(userVO) && examDefinitionVO.getTrial()) {
// examDefinition.setTrial(true);
// }else {
// examDefinition.setTrial(false);
// }
// examDefinitionDAO.insert(examDefinition);
// //插入试卷班级关系
// if(!CollectionUtils.isEmpty(examDefinitionVO.getClasses())) {
// examDefinitionVO.getClasses().forEach(departmentVO -> iCompanyService.addDepartExam(examDefinition.getId(),departmentVO.getId()));
// }
// //插入试题规则表数据
// List<ExamDefinitionRulesVO> examDefinitionRulesVOList = examDefinitionVO.getExamDefinitionRulesVOList();
// examDefinitionRulesVOList.forEach(examDefinitionRulesVO -> {
// ExamDefinitionRules examDefinitionRules = examDefinitionRulesVO.toDB();
// examDefinitionRules.setExamId(examDefinition.getId());
// definitionRulesDAO.insert(examDefinitionRules);
// });
// }
private void checkName(ExamDefinitionVO examDefinitionVO) {
//一个课程下考试名称查重
ExamDefinitionExample examDefinitionExample = new ExamDefinitionExample();
examDefinitionExample.createCriteria().andLessonIdEqualTo(examDefinitionVO.getLessonId()).andNameEqualTo(examDefinitionVO.getName());
List<ExamDefinition> examDefinitionList = examDefinitionDAO.selectByExample(examDefinitionExample);
BusinessExceptionAssertEnum.DATA_UNIQUE_PROPERTY_REPEAT.assertCollectionEmpty(examDefinitionList);
/**
* 确认名称唯一
*/
private void confirmNameUnique(@NonNull Long mapId, @NonNull String type, @NonNull String name) {
// //一个课程下考试名称查重
// ExamDefinitionExample examDefinitionExample = new ExamDefinitionExample();
// examDefinitionExample.createCriteria().andLessonIdEqualTo(examDefinitionVO.getLessonId()).andNameEqualTo(examDefinitionVO.getName());
// List<ExamDefinition> examDefinitionList = examDefinitionDAO.selectByExample(examDefinitionExample);
// BusinessExceptionAssertEnum.DATA_UNIQUE_PROPERTY_REPEAT.assertCollectionEmpty(examDefinitionList);
ExamDefinitionExample example = new ExamDefinitionExample();
example.createCriteria().andMapIdEqualTo(mapId).andTypeEqualTo(type).andNameEqualTo(name);
BusinessExceptionAssertEnum.DATA_UNIQUE_PROPERTY_REPEAT.assertTrue(examDefinitionDAO.countByExample(example) == 0,
"名称重复");
}
/**
@ -217,38 +188,6 @@ public class ExamService implements IExamService {
return defineFullScore == realFullScore;
}
// /**
// * 查询课程下有实训的章节信息
// * @param lessonId
// * @return
// */
// @Override
// public List<ExamChapterInfoVO> queryChapterInfo(String lessonId) {
// //返回的结果
// List<ExamChapterInfoVO> examChapterInfoVOList = new ArrayList<>();
//
// //查询数据
// List<Long> lessonIds = new ArrayList<>();
// lessonIds.add(Long.valueOf(lessonId));
// List<LessonChapterVO> chapterVos = this.lsLessonChapterMapper.selectChapterTrainingByLessonIds(lessonIds);
//
// //检测章节是否为空
// if (chapterVos.size() == 0) {
// throw new DBException(ExceptionMapping.DATA_NOT_EXIST);
// }
//
// //转换为VO对象
// chapterVos.forEach(lessonChapterVO -> {
// ExamChapterInfoVO examChapterInfoVO = new ExamChapterInfoVO();
// examChapterInfoVO.setId(lessonChapterVO.getId());
// examChapterInfoVO.setName(lessonChapterVO.getName());
//
// examChapterInfoVOList.add(examChapterInfoVO);
// });
//
// return examChapterInfoVOList;
// }
@Override
public List<String> queryTrainingTypes(Long lessonId) {
// 获取课程课程所属产品编码
@ -265,8 +204,6 @@ public class ExamService implements IExamService {
/**
* 查询试题定义的详细信息
*
* @param examId
*/
@Override
public ExamDefinitionVO queryExamInfo(Long examId) {
@ -301,37 +238,10 @@ public class ExamService implements IExamService {
//查询课程信息
LessonVO lessonVO = iLessonService.getLessonInfo(lessonId);
// MapVO mapVO = iMapService.findMapBaseInfoById(lessonVO.getMapId());
// BusinessConsts.Lesson.PrdInfo prdInfo = BusinessConsts.Lesson.PrdInfo.getBy(lessonVO.getPrdType());
// String defaultLessonName = String.join("-", mapVO.getName(), prdInfo.getName());
// lessonVO.setSystemFault(Objects.equals(lessonVO.getName(),defaultLessonName));
// 如果用户关联班级 查找班级关联试卷
List<Long> examIds = null;
// List<UserDepartRelVO> userDepartRelVOS = this.iOrgUserService.getDepartRefByUserId(userVO.getId());
// if (!CollectionUtils.isEmpty(userDepartRelVOS)) {
// examIds = new ArrayList<>();
// for (UserDepartRelVO udr : userDepartRelVOS) {
// examIds.addAll(iOrgUserService.getExamIdsByDepartId(udr.getDepartmentId()));
// }
// }
//查询课程下的试题信息
ExamDefinitionExample examDefinitionExample = new ExamDefinitionExample();
examDefinitionExample.createCriteria().andLessonIdEqualTo(lessonId).andStatusEqualTo(BusinessConsts.STATUS_USE);
List<ExamDefinition> examDefinitionList = examDefinitionDAO.selectByExample(examDefinitionExample);
// 检测试题是否有效
LocalDateTime now = LocalDateTime.now();
Iterator<ExamDefinition> iterator = examDefinitionList.iterator();
while (iterator.hasNext()) {
ExamDefinition exam = iterator.next();
if (null != exam.getEndTime() && now.isAfter(exam.getEndTime())) {
this.forceOffline(exam);
iterator.remove();
} else if (!lessonVO.isSystemFault() && Objects.nonNull(examIds)
// && !Objects.equals(exam.getName(),defaultLessonName+"试卷")
&& !examIds.contains(exam.getId())) {
iterator.remove();
}
}
//转换为VO
ExamsLessonVO examsLessonVO = new ExamsLessonVO(lessonVO);
List<ExamDefinitionVO> examDefinitionVOList = new ArrayList<>();
@ -444,27 +354,6 @@ public class ExamService implements IExamService {
examDefinitionDAO.deleteByPrimaryKey(Long.parseLong(id));
}
// /**
// * 查询章节下允许创建的最多题目数量
// *
// * @param lessonId
// * @param chapterId
// * @return
// */
// @Override
// public int queryTrainingNum(String lessonId, String chapterId) {
// Long chapterIdLong = ConvertUtil.str2Long(chapterId);
// Long lessonIdLong = ConvertUtil.str2Long(lessonId);
//
// //查询课程章节实训映射表信息
// LsRelChapterTrainingExample example = new LsRelChapterTrainingExample();
// example.setDistinct(true);
// example.createCriteria().andChapterIdEqualTo(chapterIdLong).andLessonIdEqualTo(lessonIdLong);
// List<LsRelChapterTraining> lsRelChapterTrainingList = lsRelChapterTrainingMapper.selectByExample(example);
//
// return lsRelChapterTrainingList.size();
// }
@Override
public Long queryTrainingNum(Long lessonId, String trainingType, String operateType) {
// 获取课程数据
@ -523,18 +412,8 @@ public class ExamService implements IExamService {
public void update(Long id, ExamDefinitionVO examDefinitionVO) {
ExamDefinition examDefinition = this.examDefinitionDAO.selectByPrimaryKey(id);
BusinessExceptionAssertEnum.DATA_NOT_EXIST.assertNotNull(examDefinition);
if (!CollectionUtils.isEmpty(iOrgUserService.getDepartsByExamId(id))) {
iOrgUserService.deleteDepartsExam(id);
}
if (!CollectionUtils.isEmpty(examDefinitionVO.getClasses())) {
examDefinitionVO.getClasses().forEach(departmentVO -> iOrgUserService.addDepartExam(id, departmentVO.getId()));
}
//考试名称查重
String name = examDefinitionVO.getName();
ExamDefinitionExample examDefinitionExample = new ExamDefinitionExample();
examDefinitionExample.createCriteria().andNameEqualTo(name).andIdNotEqualTo(id);
List<ExamDefinition> examDefinitionList = examDefinitionDAO.selectByExample(examDefinitionExample);
BusinessExceptionAssertEnum.DATA_UNIQUE_PROPERTY_REPEAT.assertCollectionEmpty(examDefinitionList);
confirmNameUnique(examDefinition.getMapId(), examDefinition.getType(), examDefinitionVO.getName());
examDefinition.setName(examDefinitionVO.getName());
examDefinition.setTrial(examDefinitionVO.getTrial());
examDefinition.setStartTime(examDefinitionVO.getStartTime());
@ -565,34 +444,6 @@ public class ExamService implements IExamService {
examDefinitionRulesDAO.insertSelective(rules);
}
}
// ExamDefinitionExample examExample = new ExamDefinitionExample();
// examExample.createCriteria()
// .andLessonIdEqualTo(sourceLessonId);
// List<ExamDefinition> definitionList = this.examDefinitionDAO.selectByExample(examExample);
// if(!CollectionUtils.isEmpty(definitionList)) {
// definitionList.forEach(definition -> {
// // 拷贝考试定义
// Long oldId = definition.getId();
// definition.setId(null);
// definition.setLessonId(targetLessonId);
// definition.setCreatorId(user.getId());
// this.examDefinitionDAO.insert(definition);
// Long newId = definition.getId();
// // 拷贝考试规则
// ExamDefinitionRulesExample example = new ExamDefinitionRulesExample();
// example.createCriteria()
// .andExamIdEqualTo(oldId);
// List<ExamDefinitionRules> ruleList = this.definitionRulesDAO.selectByExample(example);
// if(!CollectionUtils.isEmpty(ruleList)) {
// ruleList.forEach(rules -> {
// rules.setId(null);
// rules.setExamId(newId);
// this.definitionRulesDAO.insert(rules);
// });
// }
// });
// }
}
@Override
@ -604,43 +455,28 @@ public class ExamService implements IExamService {
@Override
public PageVO<ExamDefinitionVO> pagedQueryByLoginProject(ExamDefinitionQueryVO queryVO, LoginUserInfoVO loginInfo) {
List<Long> lessonIds;
if (queryVO.getLessonId() != null) {
lessonIds = List.of(queryVO.getLessonId());
} else {
List<LessonVO> lessonVOS = iLessonService.queryNonDefaultLessons(null, loginInfo.getProject(), BusinessConsts.STATUS_USE);
lessonIds = lessonVOS.stream().map(LessonVO::getId).collect(Collectors.toList());
}
if (CollectionUtils.isEmpty(lessonIds)) {
return new PageVO<>(queryVO.getPageNum(), queryVO.getPageSize(), 0, new ArrayList<>());
} else {
List<OrgLesson> orgLessons = iOrgLessonService.findEntitiesByLessonIds(lessonIds);
Map<Long, List<Long>> lessonOrgMap = orgLessons.stream()
.collect(Collectors.groupingBy(OrgLesson::getLessonId, Collectors.mapping(OrgLesson::getOrgId, Collectors.toList())));
ExamDefinitionExample example = new ExamDefinitionExample();
ExamDefinitionExample.Criteria criteria = example.createCriteria().andLessonIdIn(lessonIds);
if (StringUtils.hasText(queryVO.getName())) {
criteria.andNameLike(String.format("%%%s%%", queryVO.getName()));
}
if (StringUtils.hasText(queryVO.getCreatorName())) {
List<Long> creatorIds = iSysUserService.findUserByName(queryVO.getCreatorName()).stream().map(UserVO::getId).collect(Collectors.toList());
if (CollectionUtils.isEmpty(creatorIds)) {
return new PageVO<>(queryVO.getPageNum(), queryVO.getPageSize(), 0, new ArrayList<>());
} else {
criteria.andCreatorIdIn(creatorIds);
}
}
PageHelper.startPage(queryVO.getPageNum(), queryVO.getPageSize());
Page<ExamDefinition> page = (Page<ExamDefinition>) examDefinitionDAO.selectByExample(example);
Map<Long, SysUser> creatorMap = iSysUserService.findEntity(page.stream().map(ExamDefinition::getCreatorId).collect(Collectors.toList()), null)
.stream().collect(Collectors.toMap(SysUser::getId, Function.identity()));
List<ExamDefinitionVO> list = page.getResult().stream().map(examDefinition -> {
ExamDefinitionVO vo = new ExamDefinitionVO(examDefinition, creatorMap.get(examDefinition.getCreatorId()));
vo.setClsIds(lessonOrgMap.get(vo.getLessonId()));
return vo;
}).collect(Collectors.toList());
return PageVO.convert(page, list);
PageVO<ExamDefinitionVO> empty = new PageVO<>(queryVO.getPageNum(), queryVO.getPageSize(), 0, new ArrayList<>());
List<Long> creatorIds = null;
Map<Long, UserVO> creatorMap = null;
if (StringUtils.hasText(queryVO.getCreatorName())) {
iSysUserService.
List<UserVO> creators = iSysUserService.findUserByName(queryVO.getCreatorName());
if (CollectionUtils.isEmpty(creators))
return empty;
creatorIds = creators.stream().map(UserVO::getId).collect(Collectors.toList());
}
List<Long> mapIds = iMapService.findOnlineMapByProjectCode(loginInfo.getProject().name())
.stream().map(MapVO::getId).collect(Collectors.toList());
if (CollectionUtils.isEmpty(mapIds))
return empty;
ExamDefinitionExample example = new ExamDefinitionExample();
ExamDefinitionExample.Criteria criteria = example.createCriteria().andMapIdIn(mapIds);
if (!CollectionUtils.isEmpty(creatorIds))
criteria.andCreatorIdIn(creatorIds);
if (StringUtils.hasText(queryVO.getName()))
criteria.andNameLike(String.format("%%%s%%", queryVO.getName()));
List<ExamDefinition> exams = examDefinitionDAO.selectByExample(example);
exams.stream().map()
}
@Override
@ -650,7 +486,7 @@ public class ExamService implements IExamService {
Org topOrg = iOrgService.getEntity(loginInfo.getProject(), BusinessConsts.Org.Status.VALID);
List<Org> clsList = iOrgService.findEntitiesByParentId(topOrg.getId(), "id", BusinessConsts.Org.Status.VALID);
List<Long> clsIds = clsList.stream().map(Org::getId).collect(Collectors.toList());
lessonIds = iOrgLessonService.findEntitiesByOrgIds(clsIds).stream().map(OrgLesson::getLessonId).collect(Collectors.toList());
lessonIds = iOrgLessonService.findEntitiesByOrgIds(clsIds).stream().map(OrgLesson::getLessonId).collect(Collectors.toList());
} else {
lessonIds = iOrgLessonService.findEntitiesByOrgId(clsId, null).stream().map(OrgLesson::getLessonId).collect(Collectors.toList());
}

View File

@ -17,8 +17,6 @@ public interface IExamService {
*/
void create(ExamDefinitionVO examDefinitionVO, UserVO userVO);
// void createGZBExam(ExamDefinitionVO examDefinitionVO, UserVO userVO);
/**
* 检查分数定义是否合理
*/
@ -49,11 +47,6 @@ public interface IExamService {
*/
void deleteExam(String id, UserVO userVO);
// /**
// * 查询章节下允许创建的最多题目数量
// */
// int queryTrainingNum(String lessonId, String chapterId);
/**
* 根据课程和实训类型查询实训数量
*/

View File

@ -173,9 +173,12 @@ public class MapService implements IMapService {
Objects.requireNonNull(projectCode, "项目编号不能为空");
MapInfoExample example = new MapInfoExample();
example.setOrderByClause("order_number");
example.createCriteria()
.andStatusEqualTo(MapStatus.Online.getCode())
.andProjectCodeEqualTo(projectCode);
MapInfoExample.Criteria criteria = example.createCriteria().andStatusEqualTo(MapStatus.Online.getCode());
if (Project.DEFAULT.name().equals(projectCode)) {
criteria.andProjectCodeIsNull();
} else {
criteria.andProjectCodeEqualTo(projectCode);
}
List<MapInfo> list = mapInfoDAO.selectByExample(example);
return MapVO.convert2VOList(list);
}

View File

@ -0,0 +1,10 @@
package club.joylink.rtss.services.org;
import club.joylink.rtss.vo.UserVO;
import java.util.List;
public interface IOrgExamService {
void create(Long clsId, List<Long> examIds, UserVO user);
}

View File

@ -17,8 +17,6 @@ public interface IOrgUserService {
*/
CompanyVO userScanCodeBindCompanyManager(Long userId, Long companyId);
boolean isCompanyUser(Long userId);
DepartmentVO createDepart(DepartmentVO departmentVO);
void updateDepartInfo(Long id, DepartmentVO departmentVO);
@ -33,8 +31,6 @@ public interface IOrgUserService {
List<DepartmentVO> getDepartAndChild(Long companyId, Long deptId);
List<UserDepartRelVO> getDepartRefByUserId(Long userId);
void addDepartUserInfo(UserVO user, UserDepartRelVO userDepartRelVO);
void updateDepartUserInfo(UserVO user, UserDepartRelVO userDepartRelVO);
@ -52,8 +48,6 @@ public interface IOrgUserService {
List<DepartmentVO> getDepartsByExamId(Long examId);
void deleteDepartsExam(Long examId);
void addDepartExam(Long examId, Long departId);
List<OrgLesson> getDepartLessonRefs(Long departId);

View File

@ -0,0 +1,56 @@
package club.joylink.rtss.services.org;
import club.joylink.rtss.constants.BusinessConsts;
import club.joylink.rtss.dao.OrgExamDAO;
import club.joylink.rtss.entity.Org;
import club.joylink.rtss.entity.OrgExam;
import club.joylink.rtss.entity.OrgExamExample;
import club.joylink.rtss.vo.UserVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
@Service
public class OrgExamService implements IOrgExamService {
@Autowired
private IOrgService iOrgService;
@Autowired
private IOrgUserService iOrgUserService;
@Autowired
private OrgExamDAO orgExamDAO;
@Override
public void create(Long clsId, List<Long> examIds, UserVO user) {
Org topOrg = iOrgService.getTopOrgEntity(clsId, BusinessConsts.Org.Status.VALID);
iOrgUserService.confirmIsTheRoleInThisOrg(user.getId(), topOrg.getId(), BusinessConsts.OrgRole.Admin);
delete(clsId, user.getId());
LocalDateTime createTime = LocalDateTime.now();
examIds.forEach(examId -> {
OrgExam orgExam = new OrgExam();
orgExam.setOrgId(clsId);
orgExam.setExamId(examId);
orgExam.setCreatorId(user.getId());
orgExam.setCreateTime(createTime);
orgExamDAO.insert(orgExam);
});
}
private List<OrgExam> findEntities(long orgId, Long creatorId) {
OrgExamExample example = new OrgExamExample();
OrgExamExample.Criteria criteria = example.createCriteria().andOrgIdEqualTo(orgId);
if (creatorId != null) {
criteria.andCreatorIdEqualTo(creatorId);
}
return orgExamDAO.selectByExample(example);
}
private void delete(long orgId, long creatorId) {
OrgExamExample example = new OrgExamExample();
example.createCriteria().andOrgIdEqualTo(orgId).andCreatorIdEqualTo(creatorId);
orgExamDAO.deleteByExample(example);
}
}

View File

@ -123,7 +123,7 @@ public class OrgService implements IOrgService {
}
@Override
public Org findEntity(Project project, String status) {
public Org findEntity(@NonNull Project project, String status) {
OrgExample example = new OrgExample();
OrgExample.Criteria criteria = example.createCriteria().andProjectCodeEqualTo(project.name());
if (StringUtils.hasText(status)) {
@ -164,7 +164,7 @@ public class OrgService implements IOrgService {
}
@Override
public List<Org> findEntitiesByParentId(Long parentId, String orderBy, String status) {
public List<Org> findEntitiesByParentId(@NonNull Long parentId, String orderBy, String status) {
OrgExample example = new OrgExample();
if (StringUtils.hasText(orderBy)) {
example.setOrderByClause(orderBy);
@ -273,7 +273,7 @@ public class OrgService implements IOrgService {
/**
* 创建非顶级组织
*/
private Org createNonTopOrg(@NonNull String name, @NonNull Long parentId, @NonNull Long rootId, Long creatorId) {
private Org createNonTopOrg(@NonNull String name, @NonNull Long parentId, @NonNull Long rootId, @NonNull Long creatorId) {
//检查顶级组织
confirmIsTopOrg(rootId);
//检查同级同名组织

View File

@ -80,13 +80,6 @@ public class OrgUserService implements IOrgUserService {
// companyUserDAO.updateByExampleSelective(cu,e);
// }
@Override
public boolean isCompanyUser(Long userId) {
OrgUserExample e = new OrgUserExample();
e.createCriteria().andUserIdEqualTo(userId);
return orgUserDAO.countByExample(e) > 0;
}
//************************************部门管理**********************************************
/**
@ -115,6 +108,7 @@ public class OrgUserService implements IOrgUserService {
/**
* 查询部门信息
*
* @param deptId
*/
@Override
@ -128,6 +122,7 @@ public class OrgUserService implements IOrgUserService {
/**
* 根据单位id查询部门及其子部门信息
*
* @param companyId
*/
@Override
@ -194,14 +189,6 @@ public class OrgUserService implements IOrgUserService {
return ucrs.get(0);
}
@Override
public List<UserDepartRelVO> getDepartRefByUserId(Long userId) {
OrgUserExample e = new OrgUserExample();
e.createCriteria().andUserIdEqualTo(userId).andRoleNotEqualTo(BusinessConsts.OrgRole.Admin.name());
List<OrgUser> departmentUserRefs = this.orgUserDAO.selectByExample(e);
return UserDepartRelVO.convert2VOList(departmentUserRefs);
}
/**
* 添加部门-职位-用户关系
*/
@ -338,7 +325,8 @@ public class OrgUserService implements IOrgUserService {
/**
* 导入组织用户
* @param topOrg 导入的组织所属的顶级组织
*
* @param topOrg 导入的组织所属的顶级组织
* @param orgId
* @param orgUserIdSet 导入的组织当前已有的成员
*/
@ -384,13 +372,6 @@ public class OrgUserService implements IOrgUserService {
return DepartmentVO.convert2VOList(classes);
}
@Override
public void deleteDepartsExam(Long examId) {
OrgExamExample example = new OrgExamExample();
example.createCriteria().andExamIdEqualTo(examId);
orgExamDAO.deleteByExample(example);
}
//TODO 判是否存在
@Override
public void addDepartExam(Long examId, Long departId) {
@ -451,7 +432,7 @@ public class OrgUserService implements IOrgUserService {
* 该用户在该组织中是否是这个角色
*/
@Override
public boolean isTheRoleInThisOrg(Long userId, Long orgId, BusinessConsts.OrgRole role) {
public boolean isTheRoleInThisOrg(@NonNull Long userId, @NonNull Long orgId, @NonNull BusinessConsts.OrgRole role) {
OrgUserExample example = new OrgUserExample();
example.createCriteria()
.andUserIdEqualTo(userId)

View File

@ -190,4 +190,10 @@ public interface ITrainingV1Service {
List<Training> findEntities(Long mapId, String prdType);
List<Training> findEntities(@NonNull Long mapId);
/**
* 查询实训类型及其数量
* @return
*/
Map<String, Map<String, Long>> queryTrainingTypeAndQuantity(Long mapId, String prdType);
}

View File

@ -36,11 +36,12 @@ import org.springframework.util.StringUtils;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
/**
* 实训 服务
* @author sheng
*
* @author sheng
*/
@Service
@Slf4j
@ -207,7 +208,7 @@ public class TrainingV1Service implements ITrainingV1Service {
public void nextStep(Long id, String group, TrainingStepVO step) {
Assert.hasText(group, "group不能为空");
TrainingNewVO trainingVO = this.groupTrainingDataCache.getTrainingByGroup(group);
if(Objects.nonNull(trainingVO)) {
if (Objects.nonNull(trainingVO)) {
trainingVO.nextStep(step);
}
}
@ -218,7 +219,7 @@ public class TrainingV1Service implements ITrainingV1Service {
Assert.hasText(group, "group不能为空");
int time = Integer.parseInt(usedTime);
TrainingResultVO result = this.score(group, mode, time);
if(lessonId != 0) {
if (lessonId != 0) {
// 不是从演示进入保存数据用于统计
UserTrainingStats userTraining = new UserTrainingStats();
userTraining.setUserId(userVO.getId());
@ -239,11 +240,11 @@ public class TrainingV1Service implements ITrainingV1Service {
private TrainingResultVO score(String group, String mode, int usedTime) {
TrainingNewVO training = this.groupTrainingDataCache.getTrainingByGroup(group);
if(this.isOperateCorrect(training)) {
if (this.isOperateCorrect(training)) {
// 测验/考试模式
if(mode.equals(BusinessConsts.Training.Mode.Mode04) || mode.equals(BusinessConsts.Training.Mode.Mode05)) {
if (mode.equals(BusinessConsts.Training.Mode.Mode04) || mode.equals(BusinessConsts.Training.Mode.Mode05)) {
float score = 0f;
if(training.getMaxDuration() >= usedTime) {
if (training.getMaxDuration() >= usedTime) {
score = calculateScore(training, usedTime, 5L, false);
return new TrainingResultVO(true, score);
}
@ -256,18 +257,19 @@ public class TrainingV1Service implements ITrainingV1Service {
/**
* 实训操作是否正确
*
* @return
*/
private boolean isOperateCorrect(TrainingNewVO training) {
List<TrainingStepVO> steps = training.getSteps();
List<TrainingStepVO> actualSteps = training.getActualSteps();
boolean correct = true;
if(!CollectionUtils.isEmpty(steps) && !CollectionUtils.isEmpty(actualSteps)
if (!CollectionUtils.isEmpty(steps) && !CollectionUtils.isEmpty(actualSteps)
&& steps.size() == actualSteps.size()) {
for(int i=0; i<steps.size(); ++i) {
for (int i = 0; i < steps.size(); ++i) {
TrainingStepVO step = steps.get(i);
TrainingStepVO actualStep = actualSteps.get(i);
if(!step.isCorrect(actualStep)) {
if (!step.isCorrect(actualStep)) {
correct = false;
break;
}
@ -375,19 +377,20 @@ public class TrainingV1Service implements ITrainingV1Service {
/**
* 计算分数
*
* @param current
* @param usedTime
* @return
*/
private float calculateScore(TrainingNewVO current, int usedTime, long point, boolean isFloat) {
float score = 0f;
if(usedTime <= current.getMinDuration()) {
if (usedTime <= current.getMinDuration()) {
score = point;
}else {
score = (current.getMaxDuration() - usedTime + 1) * point/(current.getMaxDuration() - current.getMinDuration() + 1);
if(isFloat) {
long mod = (current.getMaxDuration() - usedTime + 1) * point%(current.getMaxDuration() - current.getMinDuration() + 1);
if(mod >= 5) {
} else {
score = (current.getMaxDuration() - usedTime + 1) * point / (current.getMaxDuration() - current.getMinDuration() + 1);
if (isFloat) {
long mod = (current.getMaxDuration() - usedTime + 1) * point % (current.getMaxDuration() - current.getMinDuration() + 1);
if (mod >= 5) {
score += 0.5f;
}
}
@ -408,16 +411,16 @@ public class TrainingV1Service implements ITrainingV1Service {
public TrainingResultVO judgeAndCalculate(Long id, String group, String mode, int usedTime, long point, boolean isFloat) {
TrainingNewVO current = this.groupTrainingDataCache.getTrainingByGroup(group);
if(isOperateCorrect(current)) {
if (isOperateCorrect(current)) {
// 测验/考试模式
if(mode.equals(BusinessConsts.Training.Mode.Mode04) || mode.equals(BusinessConsts.Training.Mode.Mode05)) {
if (mode.equals(BusinessConsts.Training.Mode.Mode04) || mode.equals(BusinessConsts.Training.Mode.Mode05)) {
float score = 0f;
if(current.getMaxDuration() >= usedTime) {
if (current.getMaxDuration() >= usedTime) {
score = calculateScore(current, usedTime, point, isFloat);
}else{
} else {
return new TrainingResultVO(false, BusinessConsts.Exam.QuestionCause.OVERTIME);
}
if(score == point ){
if (score == point) {
return new TrainingResultVO(true, score, BusinessConsts.Exam.QuestionCause.PERFECT);
}
return new TrainingResultVO(true, score, BusinessConsts.Exam.QuestionCause.CORRECT);
@ -431,7 +434,7 @@ public class TrainingV1Service implements ITrainingV1Service {
@Override
@Transactional
public void batchSaveAutoGenerateTrainings(List<TrainingNewVO> trainingVOList) {
if(!CollectionUtils.isEmpty(trainingVOList)) {
if (!CollectionUtils.isEmpty(trainingVOList)) {
LocalDateTime now = LocalDateTime.now();
Long userId = UserVO.system().getId();
List<TrainingWithBLOBs> list = new ArrayList<>();
@ -444,12 +447,12 @@ public class TrainingV1Service implements ITrainingV1Service {
training.setScenes(JsonUtils.writeValueAsString(trainingVO.getScenes()));
list.add(training);
//防止数据包溢出
if(list.size()>5){
if (list.size() > 5) {
trainingDAO.batchInsert(list);
list.clear();
}
});
if(list.size()>0){
if (list.size() > 0) {
trainingDAO.batchInsert(list);
}
}
@ -485,19 +488,20 @@ public class TrainingV1Service implements ITrainingV1Service {
@Override
public void deleteAutoGenerateTrainingBy(Long mapId) {
TrainingExample example = new TrainingExample();
example.createCriteria().andMapIdEqualTo(mapId);
List<Long> ids = this.trainingDAO.selectIdsByExample(example);
this.batchDeleteTrainingAndReferenceData(ids);
TrainingExample example = new TrainingExample();
example.createCriteria().andMapIdEqualTo(mapId);
List<Long> ids = this.trainingDAO.selectIdsByExample(example);
this.batchDeleteTrainingAndReferenceData(ids);
}
/**
* 批量删除实训
*
* @param ids
*/
@Transactional
public void batchDeleteTrainingAndReferenceData(List<Long> ids) {
if(!CollectionUtils.isEmpty(ids)) {
if (!CollectionUtils.isEmpty(ids)) {
// 删除实训=章节关系
this.iLessonDraftService.deleteChapterRelByTrainingIdList(ids);
this.iLessonService.deleteChapterRelByTrainingIdList(ids);
@ -519,17 +523,17 @@ public class TrainingV1Service implements ITrainingV1Service {
Integer maxDuration = config.getMaxDuration();
String remarks = config.getRemarks();
TrainingWithBLOBs update = new TrainingWithBLOBs();
if((Objects.nonNull(minDuration)
|| Objects.nonNull(maxDuration)
|| StringUtils.hasText(remarks))
if ((Objects.nonNull(minDuration)
|| Objects.nonNull(maxDuration)
|| StringUtils.hasText(remarks))
&& !CollectionUtils.isEmpty(config.getOperateType())) {
if(Objects.nonNull(minDuration)) {
if (Objects.nonNull(minDuration)) {
update.setMinDuration(minDuration);
}
if(Objects.nonNull(maxDuration)) {
if (Objects.nonNull(maxDuration)) {
update.setMaxDuration(maxDuration);
}
if(StringUtils.hasText(remarks)) {
if (StringUtils.hasText(remarks)) {
update.setRemarks(remarks);
}
config.getOperateType().forEach(operateType -> {
@ -567,7 +571,7 @@ public class TrainingV1Service implements ITrainingV1Service {
.andMapIdEqualTo(sourceMapId);
List<TrainingWithBLOBs> trainings = this.trainingDAO.selectByExampleWithBLOBs(example);
Map<Long, Long> relMap = new HashMap<>();
if(!CollectionUtils.isEmpty(trainings)) {
if (!CollectionUtils.isEmpty(trainings)) {
trainings.forEach(training -> {
Long oldId = training.getId();
training.setId(null);
@ -582,6 +586,7 @@ public class TrainingV1Service implements ITrainingV1Service {
/**
* 删除实训-关联删除
*
* @param training
*/
@Transactional
@ -603,6 +608,7 @@ public class TrainingV1Service implements ITrainingV1Service {
/**
* 根据实训id删除用户实训记录
*
* @param trainingId
*/
private void deleteUserTrainingRecordByTrainingId(Long trainingId) {
@ -613,6 +619,7 @@ public class TrainingV1Service implements ITrainingV1Service {
/**
* 根据实训id列表删除用户实训记录
*
* @param trainingIdList
*/
private void deleteUserTrainingRecordByTrainingIds(List<Long> trainingIdList) {
@ -624,39 +631,39 @@ public class TrainingV1Service implements ITrainingV1Service {
@Override
public PageVO<TrainingNewVO> pagedQueryTrainings(TrainingQueryVO trainingQueryVO) {
MapInfo mapInfo = null;
if (!ObjectUtils.isEmpty(trainingQueryVO.getMapId())){
if (!ObjectUtils.isEmpty(trainingQueryVO.getMapId())) {
mapInfo = mapInfoDAO.selectByPrimaryKey(trainingQueryVO.getMapId());
}
PageHelper.startPage(trainingQueryVO.getPageNum(), trainingQueryVO.getPageSize());
TrainingExample example = new TrainingExample();
example.setOrderByClause("id desc");
TrainingExample.Criteria criteria = example.createCriteria();
if(StringUtils.hasText(trainingQueryVO.getName())) {
if (StringUtils.hasText(trainingQueryVO.getName())) {
criteria.andNameLike(String.format("%%%s%%", trainingQueryVO.getName()));
}
if(StringUtils.hasText(trainingQueryVO.getGenerateType())) {
if(BusinessConsts.Training.GenerateType.GenerateType01.equals(trainingQueryVO.getGenerateType())) {
if (StringUtils.hasText(trainingQueryVO.getGenerateType())) {
if (BusinessConsts.Training.GenerateType.GenerateType01.equals(trainingQueryVO.getGenerateType())) {
criteria.andAuthorIdEqualTo(UserVO.system().getId());
}else if(BusinessConsts.Training.GenerateType.GenerateType02.equals(trainingQueryVO.getGenerateType())) {
} else if (BusinessConsts.Training.GenerateType.GenerateType02.equals(trainingQueryVO.getGenerateType())) {
criteria.andAuthorIdNotEqualTo(UserVO.system().getId());
}
}
// if(StringUtils.hasText(trainingQueryVO.getSkinCode())) {
// criteria.andSkinCodeEqualTo(trainingQueryVO.getSkinCode());
// }
if (!ObjectUtils.isEmpty(mapInfo)){
if (!ObjectUtils.isEmpty(mapInfo)) {
criteria.andMapIdEqualTo(mapInfo.getId());
}
if(StringUtils.hasText(trainingQueryVO.getPrdType())) {
if (StringUtils.hasText(trainingQueryVO.getPrdType())) {
criteria.andPrdTypeEqualTo(trainingQueryVO.getPrdType());
}
if(StringUtils.hasText(trainingQueryVO.getType())) {
if (StringUtils.hasText(trainingQueryVO.getType())) {
criteria.andTypeEqualTo(trainingQueryVO.getType());
}
if(StringUtils.hasText(trainingQueryVO.getOperateType())) {
if (StringUtils.hasText(trainingQueryVO.getOperateType())) {
criteria.andOperateTypeEqualTo(trainingQueryVO.getOperateType());
}
if(StringUtils.hasText(trainingQueryVO.getStatus())) {
if (StringUtils.hasText(trainingQueryVO.getStatus())) {
criteria.andStatusEqualTo(trainingQueryVO.getStatus());
}
Page<Training> trainings = (Page<Training>) this.trainingDAO.selectByExample(example);
@ -690,9 +697,12 @@ public class TrainingV1Service implements ITrainingV1Service {
}
@Override
public List<Training> findEntities(@NonNull Long mapId, @NonNull String prdType) {
public List<Training> findEntities(@NonNull Long mapId, String prdType) {
TrainingExample example = new TrainingExample();
example.createCriteria().andMapIdEqualTo(mapId).andPrdTypeEqualTo(prdType);
TrainingExample.Criteria criteria = example.createCriteria().andMapIdEqualTo(mapId);
if (StringUtils.hasText(prdType)) {
criteria.andPrdTypeEqualTo(prdType);
}
return trainingDAO.selectByExample(example);
}
@ -702,4 +712,13 @@ public class TrainingV1Service implements ITrainingV1Service {
example.createCriteria().andMapIdEqualTo(mapId);
return trainingDAO.selectByExample(example);
}
@Override
public Map<String, Map<String, Long>> queryTrainingTypeAndQuantity(Long mapId, String prdType) {
List<Training> trainings = findEntities(mapId, prdType);
return trainings.stream().collect(
Collectors.groupingBy(Training::getType,
Collectors.groupingBy(Training::getOperateType,
Collectors.counting())));
}
}

View File

@ -5,7 +5,6 @@ import club.joylink.rtss.entity.SysUser;
import club.joylink.rtss.vo.client.org.DepartmentVO;
import club.joylink.rtss.vo.client.validGroup.ExamDefinitionCheck;
import club.joylink.rtss.vo.client.validGroup.ExamDefinitionRulesCheck;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@ -13,13 +12,13 @@ import io.swagger.annotations.ApiModel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import springfox.documentation.annotations.ApiIgnore;
import javax.validation.Valid;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.groups.Default;
import java.time.LocalDateTime;
import java.util.List;
@ -34,41 +33,39 @@ public class ExamDefinitionVO {
/**
* 所属课程ID
*/
@NotNull(message = "课程ID不能为空", groups = {ExamDefinitionCheck.class})
private Long lessonId;
private String lessonName;
@NotNull(message = "地图id不能为空")
private Long mapId;
/**
* 考试名称
*/
@NotBlank(message = "考试名称不能为空", groups = {ExamDefinitionCheck.class})
@NotBlank(message = "考试名称不能为空", groups = {Default.class, ExamDefinitionCheck.class})
private String name;
/**
* 考试类型数据字典值
*/
@NotBlank(message = "考试类型不能为空")
private String type;
private String prdType;
/**
* 考试时长:单位s
*/
@Min(value = 1, groups = {ExamDefinitionCheck.class})
@Min(value = 1, groups = {Default.class, ExamDefinitionCheck.class})
private Integer duration;
/**
* 考试开始时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startTime;
/**
* 考试结束时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime endTime;
/**
@ -140,8 +137,9 @@ public class ExamDefinitionVO {
public ExamDefinitionVO(ExamDefinition examDefinition) {
this.id = examDefinition.getId();
this.lessonId = examDefinition.getLessonId();
this.mapId = examDefinition.getMapId();
this.name = examDefinition.getName();
this.type = examDefinition.getType();
this.prdType = examDefinition.getType();
this.duration = examDefinition.getDuration();
this.startTime = examDefinition.getStartTime();
this.endTime = examDefinition.getEndTime();
@ -163,17 +161,15 @@ public class ExamDefinitionVO {
public ExamDefinition toDB() {
ExamDefinition definition = new ExamDefinition();
definition.setLessonId(this.getLessonId());
definition.setMapId(this.mapId);
definition.setName(this.getName());
definition.setType(this.getType());
definition.setType(this.getPrdType());
definition.setDuration(this.getDuration());
definition.setStartTime(this.getStartTime());
definition.setEndTime(this.getEndTime());
definition.setFullPoint(this.getFullPoint());
definition.setPassingPoint(this.getPassingPoint());
definition.setCreatorId(this.getCreatorId());
definition.setCreateTime(this.getCreateTime());
definition.setRemarks(this.getRemarks());
definition.setStatus(this.getStatus());
return definition;
}

View File

@ -18,6 +18,7 @@ import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
@ -131,7 +132,7 @@ public class MapVO {
if (!CollectionUtils.isEmpty(list)) {
return list.stream().map(MapVO::new).collect(Collectors.toList());
}
return null;
return new ArrayList<>();
}

View File

@ -74,9 +74,11 @@ public class DepartmentVO {
public DepartmentVO(Org entity, Integer numberOfPeople, SysUser creator) {
this(entity, numberOfPeople);
this.creatorId = creator.getId();
this.creatorName = creator.getName();
this.creatorNickName = creator.getNickname();
if (creator != null) {
this.creatorId = creator.getId();
this.creatorName = creator.getName();
this.creatorNickName = creator.getNickname();
}
}
public static List<DepartmentVO> convert2VOList(List<Org> dataList) {

View File

@ -3,6 +3,7 @@
<mapper namespace="club.joylink.rtss.dao.ExamDefinitionDAO">
<resultMap id="BaseResultMap" type="club.joylink.rtss.entity.ExamDefinition">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="map_id" jdbcType="BIGINT" property="mapId" />
<result column="lesson_id" jdbcType="BIGINT" property="lessonId" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="type" jdbcType="VARCHAR" property="type" />
@ -15,7 +16,7 @@
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="remarks" jdbcType="VARCHAR" property="remarks" />
<result column="status" jdbcType="VARCHAR" property="status" />
<result column="trial" jdbcType="BIT" property="trial" />
<result column="trial" jdbcType="TINYINT" property="trial" />
</resultMap>
<sql id="Example_Where_Clause">
<where>
@ -76,8 +77,8 @@
</where>
</sql>
<sql id="Base_Column_List">
id, lesson_id, `name`, `type`, duration, start_time, end_time, full_point, passing_point,
creator_id, create_time, remarks, `status`, trial
id, map_id, lesson_id, `name`, `type`, duration, start_time, end_time, full_point,
passing_point, creator_id, create_time, remarks, `status`, trial
</sql>
<select id="selectByExample" parameterType="club.joylink.rtss.entity.ExamDefinitionExample" resultMap="BaseResultMap">
select
@ -118,20 +119,23 @@
</if>
</delete>
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="club.joylink.rtss.entity.ExamDefinition" useGeneratedKeys="true">
insert into exam_definition (lesson_id, `name`, `type`,
duration, start_time, end_time,
full_point, passing_point, creator_id,
create_time, remarks, `status`,
trial)
values (#{lessonId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR},
#{duration,jdbcType=INTEGER}, #{startTime,jdbcType=TIMESTAMP}, #{endTime,jdbcType=TIMESTAMP},
#{fullPoint,jdbcType=INTEGER}, #{passingPoint,jdbcType=INTEGER}, #{creatorId,jdbcType=BIGINT},
#{createTime,jdbcType=TIMESTAMP}, #{remarks,jdbcType=VARCHAR}, #{status,jdbcType=VARCHAR},
#{trial,jdbcType=BIT})
insert into exam_definition (map_id, lesson_id, `name`,
`type`, duration, start_time,
end_time, full_point, passing_point,
creator_id, create_time, remarks,
`status`, trial)
values (#{mapId,jdbcType=BIGINT}, #{lessonId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR},
#{type,jdbcType=VARCHAR}, #{duration,jdbcType=INTEGER}, #{startTime,jdbcType=TIMESTAMP},
#{endTime,jdbcType=TIMESTAMP}, #{fullPoint,jdbcType=INTEGER}, #{passingPoint,jdbcType=INTEGER},
#{creatorId,jdbcType=BIGINT}, #{createTime,jdbcType=TIMESTAMP}, #{remarks,jdbcType=VARCHAR},
#{status,jdbcType=VARCHAR}, #{trial,jdbcType=TINYINT})
</insert>
<insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="club.joylink.rtss.entity.ExamDefinition" useGeneratedKeys="true">
insert into exam_definition
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="mapId != null">
map_id,
</if>
<if test="lessonId != null">
lesson_id,
</if>
@ -173,6 +177,9 @@
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="mapId != null">
#{mapId,jdbcType=BIGINT},
</if>
<if test="lessonId != null">
#{lessonId,jdbcType=BIGINT},
</if>
@ -210,7 +217,7 @@
#{status,jdbcType=VARCHAR},
</if>
<if test="trial != null">
#{trial,jdbcType=BIT},
#{trial,jdbcType=TINYINT},
</if>
</trim>
</insert>
@ -226,6 +233,9 @@
<if test="record.id != null">
id = #{record.id,jdbcType=BIGINT},
</if>
<if test="record.mapId != null">
map_id = #{record.mapId,jdbcType=BIGINT},
</if>
<if test="record.lessonId != null">
lesson_id = #{record.lessonId,jdbcType=BIGINT},
</if>
@ -263,7 +273,7 @@
`status` = #{record.status,jdbcType=VARCHAR},
</if>
<if test="record.trial != null">
trial = #{record.trial,jdbcType=BIT},
trial = #{record.trial,jdbcType=TINYINT},
</if>
</set>
<if test="_parameter != null">
@ -273,6 +283,7 @@
<update id="updateByExample" parameterType="map">
update exam_definition
set id = #{record.id,jdbcType=BIGINT},
map_id = #{record.mapId,jdbcType=BIGINT},
lesson_id = #{record.lessonId,jdbcType=BIGINT},
`name` = #{record.name,jdbcType=VARCHAR},
`type` = #{record.type,jdbcType=VARCHAR},
@ -285,7 +296,7 @@
create_time = #{record.createTime,jdbcType=TIMESTAMP},
remarks = #{record.remarks,jdbcType=VARCHAR},
`status` = #{record.status,jdbcType=VARCHAR},
trial = #{record.trial,jdbcType=BIT}
trial = #{record.trial,jdbcType=TINYINT}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
@ -293,6 +304,9 @@
<update id="updateByPrimaryKeySelective" parameterType="club.joylink.rtss.entity.ExamDefinition">
update exam_definition
<set>
<if test="mapId != null">
map_id = #{mapId,jdbcType=BIGINT},
</if>
<if test="lessonId != null">
lesson_id = #{lessonId,jdbcType=BIGINT},
</if>
@ -330,14 +344,15 @@
`status` = #{status,jdbcType=VARCHAR},
</if>
<if test="trial != null">
trial = #{trial,jdbcType=BIT},
trial = #{trial,jdbcType=TINYINT},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
<update id="updateByPrimaryKey" parameterType="club.joylink.rtss.entity.ExamDefinition">
update exam_definition
set lesson_id = #{lessonId,jdbcType=BIGINT},
set map_id = #{mapId,jdbcType=BIGINT},
lesson_id = #{lessonId,jdbcType=BIGINT},
`name` = #{name,jdbcType=VARCHAR},
`type` = #{type,jdbcType=VARCHAR},
duration = #{duration,jdbcType=INTEGER},
@ -349,7 +364,7 @@
create_time = #{createTime,jdbcType=TIMESTAMP},
remarks = #{remarks,jdbcType=VARCHAR},
`status` = #{status,jdbcType=VARCHAR},
trial = #{trial,jdbcType=BIT}
trial = #{trial,jdbcType=TINYINT}
where id = #{id,jdbcType=BIGINT}
</update>
</mapper>

View File

@ -2,8 +2,11 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="club.joylink.rtss.dao.OrgExamDAO">
<resultMap id="BaseResultMap" type="club.joylink.rtss.entity.OrgExam">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="exam_id" jdbcType="BIGINT" property="examId" />
<result column="org_id" jdbcType="INTEGER" property="orgId" />
<result column="org_id" jdbcType="BIGINT" property="orgId" />
<result column="creator_id" jdbcType="BIGINT" property="creatorId" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
</resultMap>
<sql id="Example_Where_Clause">
<where>
@ -64,7 +67,7 @@
</where>
</sql>
<sql id="Base_Column_List">
exam_id, org_id
id, exam_id, org_id, creator_id, create_time
</sql>
<select id="selectByExample" parameterType="club.joylink.rtss.entity.OrgExamExample" resultMap="BaseResultMap">
select
@ -88,17 +91,29 @@
</if>
</if>
</select>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from org_exam
where id = #{id,jdbcType=BIGINT}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
delete from org_exam
where id = #{id,jdbcType=BIGINT}
</delete>
<delete id="deleteByExample" parameterType="club.joylink.rtss.entity.OrgExamExample">
delete from org_exam
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</delete>
<insert id="insert" parameterType="club.joylink.rtss.entity.OrgExam">
insert into org_exam (exam_id, org_id)
values (#{examId,jdbcType=BIGINT}, #{orgId,jdbcType=INTEGER})
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="club.joylink.rtss.entity.OrgExam" useGeneratedKeys="true">
insert into org_exam (exam_id, org_id, creator_id,
create_time)
values (#{examId,jdbcType=BIGINT}, #{orgId,jdbcType=BIGINT}, #{creatorId,jdbcType=BIGINT},
#{createTime,jdbcType=TIMESTAMP})
</insert>
<insert id="insertSelective" parameterType="club.joylink.rtss.entity.OrgExam">
<insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="club.joylink.rtss.entity.OrgExam" useGeneratedKeys="true">
insert into org_exam
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="examId != null">
@ -107,13 +122,25 @@
<if test="orgId != null">
org_id,
</if>
<if test="creatorId != null">
creator_id,
</if>
<if test="createTime != null">
create_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="examId != null">
#{examId,jdbcType=BIGINT},
</if>
<if test="orgId != null">
#{orgId,jdbcType=INTEGER},
#{orgId,jdbcType=BIGINT},
</if>
<if test="creatorId != null">
#{creatorId,jdbcType=BIGINT},
</if>
<if test="createTime != null">
#{createTime,jdbcType=TIMESTAMP},
</if>
</trim>
</insert>
@ -126,11 +153,20 @@
<update id="updateByExampleSelective" parameterType="map">
update org_exam
<set>
<if test="record.id != null">
id = #{record.id,jdbcType=BIGINT},
</if>
<if test="record.examId != null">
exam_id = #{record.examId,jdbcType=BIGINT},
</if>
<if test="record.orgId != null">
org_id = #{record.orgId,jdbcType=INTEGER},
org_id = #{record.orgId,jdbcType=BIGINT},
</if>
<if test="record.creatorId != null">
creator_id = #{record.creatorId,jdbcType=BIGINT},
</if>
<if test="record.createTime != null">
create_time = #{record.createTime,jdbcType=TIMESTAMP},
</if>
</set>
<if test="_parameter != null">
@ -139,10 +175,39 @@
</update>
<update id="updateByExample" parameterType="map">
update org_exam
set exam_id = #{record.examId,jdbcType=BIGINT},
org_id = #{record.orgId,jdbcType=INTEGER}
set id = #{record.id,jdbcType=BIGINT},
exam_id = #{record.examId,jdbcType=BIGINT},
org_id = #{record.orgId,jdbcType=BIGINT},
creator_id = #{record.creatorId,jdbcType=BIGINT},
create_time = #{record.createTime,jdbcType=TIMESTAMP}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByPrimaryKeySelective" parameterType="club.joylink.rtss.entity.OrgExam">
update org_exam
<set>
<if test="examId != null">
exam_id = #{examId,jdbcType=BIGINT},
</if>
<if test="orgId != null">
org_id = #{orgId,jdbcType=BIGINT},
</if>
<if test="creatorId != null">
creator_id = #{creatorId,jdbcType=BIGINT},
</if>
<if test="createTime != null">
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
<update id="updateByPrimaryKey" parameterType="club.joylink.rtss.entity.OrgExam">
update org_exam
set exam_id = #{examId,jdbcType=BIGINT},
org_id = #{orgId,jdbcType=BIGINT},
creator_id = #{creatorId,jdbcType=BIGINT},
create_time = #{createTime,jdbcType=TIMESTAMP}
where id = #{id,jdbcType=BIGINT}
</update>
</mapper>