添加学生档案和签到功能
parent
7290042ed8
commit
bd4b0bd46b
|
|
@ -8,6 +8,7 @@ import com.alibaba.cola.dto.SingleResponse;
|
|||
import com.jjb.saas.framework.auth.model.SSOUser;
|
||||
import com.jjb.saas.framework.auth.utils.AuthContext;
|
||||
import com.zcloud.edu.api.study.StudentSignServiceI;
|
||||
import com.zcloud.edu.dto.clientobject.study.StudentCO;
|
||||
import com.zcloud.edu.dto.clientobject.study.StudentSignCO;
|
||||
import com.zcloud.edu.dto.study.*;
|
||||
import io.swagger.annotations.Api;
|
||||
|
|
@ -38,7 +39,7 @@ public class AppStudentSignController {
|
|||
}
|
||||
@ApiOperation("验证是否可签到")
|
||||
@GetMapping("/verify")
|
||||
public Response verify(@RequestBody StudentSignVerifyQry qry) {
|
||||
public SingleResponse<StudentCO> verify(@RequestBody StudentSignVerifyQry qry) {
|
||||
return studentSignService.verify(qry);
|
||||
}
|
||||
@ApiOperation("分页")
|
||||
|
|
|
|||
|
|
@ -0,0 +1,57 @@
|
|||
package com.zcloud.edu.web.archives;
|
||||
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.jjb.saas.framework.auth.model.SSOUser;
|
||||
import com.jjb.saas.framework.auth.utils.AuthContext;
|
||||
import com.zcloud.edu.api.study.ClassServiceI;
|
||||
import com.zcloud.edu.api.study.StudentServiceI;
|
||||
import com.zcloud.edu.dto.archives.ClassArchivesQry;
|
||||
import com.zcloud.edu.dto.clientobject.study.ClassCO;
|
||||
import com.zcloud.edu.dto.data.archives.PersonArchivesDTO;
|
||||
import com.zcloud.edu.dto.study.ClassPageQry;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @author zhangyue
|
||||
* @date 2026/1/26 15:08
|
||||
*/
|
||||
@Api(tags = "")
|
||||
@RequestMapping("/${application.gateway}/archives")
|
||||
@RestController
|
||||
@AllArgsConstructor
|
||||
public class ArchivesController {
|
||||
private final ClassServiceI classService;
|
||||
private final StudentServiceI studentService;
|
||||
|
||||
@ApiOperation("分页")
|
||||
@PostMapping("/list")
|
||||
public PageResponse<ClassCO> page(@RequestBody ClassPageQry qry) {
|
||||
qry.setEqCorpinfoId(AuthContext.getCurrentUser().getTenantId());
|
||||
return classService.appListPage(qry);
|
||||
}
|
||||
|
||||
@ApiOperation("查询学时证明")
|
||||
@PostMapping("/getAttendanceRecord")
|
||||
public SingleResponse<PersonArchivesDTO> getAttendanceRecord(@RequestBody ClassArchivesQry qry) {
|
||||
return studentService.getAttendanceRecord(qry);
|
||||
}
|
||||
@ApiOperation("查询学习档案")
|
||||
@PostMapping("/getStudyArchives")
|
||||
public SingleResponse<PersonArchivesDTO> getStudyArchives(@RequestBody ClassArchivesQry qry) {
|
||||
return studentService.getStudyArchives(qry);
|
||||
}
|
||||
|
||||
@ApiOperation("查询学习记录")
|
||||
@PostMapping("/getStudyRecord")
|
||||
public SingleResponse<PersonArchivesDTO> getStudyRecord(@RequestBody ClassArchivesQry qry) {
|
||||
return studentService.getStudyRecord(qry);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
package com.zcloud.edu.web.archives;
|
||||
|
||||
|
||||
import com.alibaba.cola.dto.MultiResponse;
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.Response;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.jjb.saas.framework.auth.model.SSOUser;
|
||||
import com.jjb.saas.framework.auth.utils.AuthContext;
|
||||
import com.zcloud.edu.api.archives.ArchivesReviewServiceI;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewAddCmd;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewPageQry;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewUpdateCmd;
|
||||
import com.zcloud.edu.dto.clientobject.archives.ArchivesReviewCO;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* web-adapter
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:34
|
||||
*/
|
||||
@Api(tags = "")
|
||||
@RequestMapping("/${application.gateway}/archivesReview")
|
||||
@RestController
|
||||
@AllArgsConstructor
|
||||
public class ArchivesReviewController {
|
||||
private final ArchivesReviewServiceI archivesReviewService;
|
||||
|
||||
@ApiOperation("新增")
|
||||
@PostMapping("/save")
|
||||
public SingleResponse<ArchivesReviewCO> add(@Validated @RequestBody ArchivesReviewAddCmd cmd) {
|
||||
SSOUser ssoUser = AuthContext.getCurrentUser();
|
||||
return archivesReviewService.add(cmd);
|
||||
}
|
||||
|
||||
@ApiOperation("分页")
|
||||
@PostMapping("/list")
|
||||
public PageResponse<ArchivesReviewCO> page(@RequestBody ArchivesReviewPageQry qry) {
|
||||
return archivesReviewService.listPage(qry);
|
||||
}
|
||||
|
||||
@ApiOperation("所有数据")
|
||||
@GetMapping("/listAll")
|
||||
public MultiResponse<ArchivesReviewCO> listAll() {
|
||||
return MultiResponse.of(new ArrayList<ArchivesReviewCO>());
|
||||
}
|
||||
|
||||
@ApiOperation("详情")
|
||||
@GetMapping("/{id}")
|
||||
public SingleResponse<ArchivesReviewCO> getInfoById(@PathVariable("id") Long id) {
|
||||
return SingleResponse.of(new ArchivesReviewCO());
|
||||
}
|
||||
|
||||
@ApiOperation("删除")
|
||||
@DeleteMapping("/{id}")
|
||||
public Response remove(@PathVariable("id") Long id) {
|
||||
archivesReviewService.remove(id);
|
||||
return SingleResponse.buildSuccess();
|
||||
}
|
||||
|
||||
@ApiOperation("删除多个")
|
||||
@DeleteMapping("/ids")
|
||||
public Response removeBatch(@RequestParam Long[] ids) {
|
||||
archivesReviewService.removeBatch(ids);
|
||||
return SingleResponse.buildSuccess();
|
||||
}
|
||||
|
||||
@ApiOperation("修改")
|
||||
@PutMapping("/edit")
|
||||
public SingleResponse edit(@Validated @RequestBody ArchivesReviewUpdateCmd archivesReviewUpdateCmd) {
|
||||
archivesReviewService.edit(archivesReviewUpdateCmd);
|
||||
return SingleResponse.buildSuccess();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
package com.zcloud.edu.web.archives;
|
||||
|
||||
|
||||
import com.alibaba.cola.dto.MultiResponse;
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.Response;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.jjb.saas.framework.auth.model.SSOUser;
|
||||
import com.jjb.saas.framework.auth.utils.AuthContext;
|
||||
import com.zcloud.edu.api.archives.ArchivesReviewRecordServiceI;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewRecordAddCmd;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewRecordPageQry;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewRecordUpdateCmd;
|
||||
import com.zcloud.edu.dto.clientobject.archives.ArchivesReviewRecordCO;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* web-adapter
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:36
|
||||
*/
|
||||
@Api(tags = "")
|
||||
@RequestMapping("/${application.gateway}/archivesReviewRecord")
|
||||
@RestController
|
||||
@AllArgsConstructor
|
||||
public class ArchivesReviewRecordController {
|
||||
private final ArchivesReviewRecordServiceI archivesReviewRecordService;
|
||||
|
||||
@ApiOperation("新增")
|
||||
@PostMapping("/save")
|
||||
public SingleResponse<ArchivesReviewRecordCO> add(@Validated @RequestBody ArchivesReviewRecordAddCmd cmd) {
|
||||
SSOUser ssoUser = AuthContext.getCurrentUser();
|
||||
return archivesReviewRecordService.add(cmd);
|
||||
}
|
||||
|
||||
@ApiOperation("分页")
|
||||
@PostMapping("/list")
|
||||
public PageResponse<ArchivesReviewRecordCO> page(@RequestBody ArchivesReviewRecordPageQry qry) {
|
||||
return archivesReviewRecordService.listPage(qry);
|
||||
}
|
||||
|
||||
@ApiOperation("所有数据")
|
||||
@GetMapping("/listAll")
|
||||
public MultiResponse<ArchivesReviewRecordCO> listAll() {
|
||||
return MultiResponse.of(new ArrayList<ArchivesReviewRecordCO>());
|
||||
}
|
||||
|
||||
@ApiOperation("详情")
|
||||
@GetMapping("/{id}")
|
||||
public SingleResponse<ArchivesReviewRecordCO> getInfoById(@PathVariable("id") Long id) {
|
||||
return SingleResponse.of(new ArchivesReviewRecordCO());
|
||||
}
|
||||
|
||||
@ApiOperation("删除")
|
||||
@DeleteMapping("/{id}")
|
||||
public Response remove(@PathVariable("id") Long id) {
|
||||
archivesReviewRecordService.remove(id);
|
||||
return SingleResponse.buildSuccess();
|
||||
}
|
||||
|
||||
@ApiOperation("删除多个")
|
||||
@DeleteMapping("/ids")
|
||||
public Response removeBatch(@RequestParam Long[] ids) {
|
||||
archivesReviewRecordService.removeBatch(ids);
|
||||
return SingleResponse.buildSuccess();
|
||||
}
|
||||
|
||||
@ApiOperation("修改")
|
||||
@PutMapping("/edit")
|
||||
public SingleResponse edit(@Validated @RequestBody ArchivesReviewRecordUpdateCmd archivesReviewRecordUpdateCmd) {
|
||||
archivesReviewRecordService.edit(archivesReviewRecordUpdateCmd);
|
||||
return SingleResponse.buildSuccess();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -7,12 +7,10 @@ import com.alibaba.cola.dto.Response;
|
|||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.zcloud.edu.api.study.ClassServiceI;
|
||||
import com.zcloud.edu.dto.clientobject.study.ClassCO;
|
||||
import com.zcloud.edu.dto.clientobject.study.StudentCO;
|
||||
import com.zcloud.edu.dto.data.study.ClassCountDTO;
|
||||
import com.zcloud.edu.dto.data.study.ClassQuestionDTO;
|
||||
import com.zcloud.edu.dto.study.ClassAddCmd;
|
||||
import com.zcloud.edu.dto.study.ClassPageQry;
|
||||
import com.zcloud.edu.dto.study.ClassPostponeCmd;
|
||||
import com.zcloud.edu.dto.study.ClassUpdateCmd;
|
||||
import com.zcloud.edu.dto.study.*;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
|
@ -72,6 +70,11 @@ public class ClassController {
|
|||
public MultiResponse<ClassCO> countClassStudent() {
|
||||
return MultiResponse.of(new ArrayList<ClassCO>());
|
||||
}
|
||||
@ApiOperation("统计人员班级数")
|
||||
@GetMapping("/countStuClass")
|
||||
public MultiResponse<StudentCO> countStuClass(@RequestBody ClassCountQry qry) {
|
||||
return classService.countStuClass(qry);
|
||||
}
|
||||
|
||||
@ApiOperation("详情")
|
||||
@GetMapping("/{id}")
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ public class ClassCurriculumController {
|
|||
}
|
||||
|
||||
@ApiOperation("所有数据")
|
||||
@GetMapping("/listAll")
|
||||
@PostMapping("/listAll")
|
||||
public MultiResponse<ClassCurriculumCO> listAll(@RequestBody ClassCurriculumQry qry) {
|
||||
return classCurriculumService.listAll(qry);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -58,6 +58,12 @@ public class StudentExamRecordController {
|
|||
return SingleResponse.of(new StudentExamRecordCO());
|
||||
}
|
||||
|
||||
@ApiOperation("查询考试记录")
|
||||
@GetMapping("/getInfoByStudentId/{studentId}")
|
||||
public SingleResponse<StudentExamRecordCO> getInfoByStudentId(@PathVariable("id") String studentId) {
|
||||
return studentExamRecordService.getInfoByStudentId(studentId);
|
||||
}
|
||||
|
||||
@ApiOperation("删除")
|
||||
@DeleteMapping("/{id}")
|
||||
public Response remove(@PathVariable("id") Long id) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,40 @@
|
|||
package com.zcloud.edu.command.archives;
|
||||
|
||||
import com.alibaba.cola.exception.BizException;
|
||||
import com.zcloud.edu.domain.gateway.archives.ArchivesReviewGateway;
|
||||
import com.zcloud.edu.domain.model.archives.ArchivesReviewE;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewAddCmd;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
||||
/**
|
||||
* web-app
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:34
|
||||
*/
|
||||
@Component
|
||||
@AllArgsConstructor
|
||||
public class ArchivesReviewAddExe {
|
||||
private final ArchivesReviewGateway archivesReviewGateway;
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean execute(ArchivesReviewAddCmd cmd) {
|
||||
ArchivesReviewE archivesReviewE = new ArchivesReviewE();
|
||||
BeanUtils.copyProperties(cmd, archivesReviewE);
|
||||
boolean res = false;
|
||||
try {
|
||||
res = archivesReviewGateway.add(archivesReviewE);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
if (!res) {
|
||||
throw new BizException("保存失败");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
package com.zcloud.edu.command.archives;
|
||||
|
||||
import com.alibaba.cola.exception.BizException;
|
||||
import com.zcloud.edu.domain.gateway.archives.ArchivesReviewRecordGateway;
|
||||
import com.zcloud.edu.domain.model.archives.ArchivesReviewRecordE;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewRecordAddCmd;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
||||
/**
|
||||
* web-app
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:36
|
||||
*/
|
||||
@Component
|
||||
@AllArgsConstructor
|
||||
public class ArchivesReviewRecordAddExe {
|
||||
private final ArchivesReviewRecordGateway archivesReviewRecordGateway;
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean execute(ArchivesReviewRecordAddCmd cmd) {
|
||||
ArchivesReviewRecordE archivesReviewRecordE = new ArchivesReviewRecordE();
|
||||
BeanUtils.copyProperties(cmd, archivesReviewRecordE);
|
||||
boolean res = false;
|
||||
try {
|
||||
res = archivesReviewRecordGateway.add(archivesReviewRecordE);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
if (!res) {
|
||||
throw new BizException("保存失败");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
package com.zcloud.edu.command.archives;
|
||||
|
||||
import com.alibaba.cola.exception.BizException;
|
||||
import com.zcloud.edu.domain.gateway.archives.ArchivesReviewRecordGateway;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
||||
/**
|
||||
* web-app
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:37
|
||||
*/
|
||||
@Component
|
||||
@AllArgsConstructor
|
||||
public class ArchivesReviewRecordRemoveExe {
|
||||
private final ArchivesReviewRecordGateway archivesReviewRecordGateway;
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean execute(Long id) {
|
||||
boolean res = archivesReviewRecordGateway.deletedArchivesReviewRecordById(id);
|
||||
if (!res) {
|
||||
throw new BizException("删除失败");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean execute(Long[] ids) {
|
||||
boolean res = archivesReviewRecordGateway.deletedArchivesReviewRecordByIds(ids);
|
||||
if (!res) {
|
||||
throw new BizException("删除失败");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
package com.zcloud.edu.command.archives;
|
||||
|
||||
import com.alibaba.cola.exception.BizException;
|
||||
import com.zcloud.edu.domain.gateway.archives.ArchivesReviewRecordGateway;
|
||||
import com.zcloud.edu.domain.model.archives.ArchivesReviewRecordE;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewRecordUpdateCmd;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
||||
/**
|
||||
* web-app
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:37
|
||||
*/
|
||||
@Component
|
||||
@AllArgsConstructor
|
||||
public class ArchivesReviewRecordUpdateExe {
|
||||
private final ArchivesReviewRecordGateway archivesReviewRecordGateway;
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void execute(ArchivesReviewRecordUpdateCmd archivesReviewRecordUpdateCmd) {
|
||||
ArchivesReviewRecordE archivesReviewRecordE = new ArchivesReviewRecordE();
|
||||
BeanUtils.copyProperties(archivesReviewRecordUpdateCmd, archivesReviewRecordE);
|
||||
boolean res = archivesReviewRecordGateway.update(archivesReviewRecordE);
|
||||
if (!res) {
|
||||
throw new BizException("修改失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
package com.zcloud.edu.command.archives;
|
||||
|
||||
import com.alibaba.cola.exception.BizException;
|
||||
import com.zcloud.edu.domain.gateway.archives.ArchivesReviewGateway;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
||||
/**
|
||||
* web-app
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:35
|
||||
*/
|
||||
@Component
|
||||
@AllArgsConstructor
|
||||
public class ArchivesReviewRemoveExe {
|
||||
private final ArchivesReviewGateway archivesReviewGateway;
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean execute(Long id) {
|
||||
boolean res = archivesReviewGateway.deletedArchivesReviewById(id);
|
||||
if (!res) {
|
||||
throw new BizException("删除失败");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean execute(Long[] ids) {
|
||||
boolean res = archivesReviewGateway.deletedArchivesReviewByIds(ids);
|
||||
if (!res) {
|
||||
throw new BizException("删除失败");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
package com.zcloud.edu.command.archives;
|
||||
|
||||
import com.alibaba.cola.exception.BizException;
|
||||
import com.zcloud.edu.domain.gateway.archives.ArchivesReviewGateway;
|
||||
import com.zcloud.edu.domain.model.archives.ArchivesReviewE;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewUpdateCmd;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
|
||||
/**
|
||||
* web-app
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:35
|
||||
*/
|
||||
@Component
|
||||
@AllArgsConstructor
|
||||
public class ArchivesReviewUpdateExe {
|
||||
private final ArchivesReviewGateway archivesReviewGateway;
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void execute(ArchivesReviewUpdateCmd archivesReviewUpdateCmd) {
|
||||
ArchivesReviewE archivesReviewE = new ArchivesReviewE();
|
||||
BeanUtils.copyProperties(archivesReviewUpdateCmd, archivesReviewE);
|
||||
boolean res = archivesReviewGateway.update(archivesReviewE);
|
||||
if (!res) {
|
||||
throw new BizException("修改失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
package com.zcloud.edu.command.convertor.archives;
|
||||
|
||||
import com.zcloud.edu.dto.clientobject.archives.ArchivesReviewCO;
|
||||
import com.zcloud.edu.persistence.dataobject.archives.ArchivesReviewDO;
|
||||
import org.mapstruct.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* web-app
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:34
|
||||
*/
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface ArchivesReviewCoConvertor {
|
||||
/**
|
||||
* @param archivesReviewDOs
|
||||
* @return
|
||||
*/
|
||||
List<ArchivesReviewCO> converDOsToCOs(List<ArchivesReviewDO> archivesReviewDOs);
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
package com.zcloud.edu.command.convertor.archives;
|
||||
|
||||
import com.zcloud.edu.dto.clientobject.archives.ArchivesReviewRecordCO;
|
||||
import com.zcloud.edu.persistence.dataobject.archives.ArchivesReviewRecordDO;
|
||||
import org.mapstruct.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* web-app
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:36
|
||||
*/
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface ArchivesReviewRecordCoConvertor {
|
||||
/**
|
||||
* @param archivesReviewRecordDOs
|
||||
* @return
|
||||
*/
|
||||
List<ArchivesReviewRecordCO> converDOsToCOs(List<ArchivesReviewRecordDO> archivesReviewRecordDOs);
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
package com.zcloud.edu.command.query.archives;
|
||||
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.zcloud.edu.command.convertor.archives.ArchivesReviewCoConvertor;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewPageQry;
|
||||
import com.zcloud.edu.dto.clientobject.archives.ArchivesReviewCO;
|
||||
import com.zcloud.edu.persistence.dataobject.archives.ArchivesReviewDO;
|
||||
import com.zcloud.edu.persistence.repository.archives.ArchivesReviewRepository;
|
||||
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
/**
|
||||
* web-app
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:35
|
||||
*/
|
||||
@Component
|
||||
@AllArgsConstructor
|
||||
public class ArchivesReviewQueryExe {
|
||||
private final ArchivesReviewRepository archivesReviewRepository;
|
||||
private final ArchivesReviewCoConvertor archivesReviewCoConvertor;
|
||||
|
||||
/**
|
||||
* 分页
|
||||
*
|
||||
* @param archivesReviewPageQry
|
||||
* @return
|
||||
*/
|
||||
public PageResponse<ArchivesReviewCO> execute(ArchivesReviewPageQry archivesReviewPageQry) {
|
||||
Map<String, Object> params = PageQueryHelper.toHashMap(archivesReviewPageQry);
|
||||
PageResponse<ArchivesReviewDO> pageResponse = archivesReviewRepository.listPage(params);
|
||||
List<ArchivesReviewCO> examCenterCOS = archivesReviewCoConvertor.converDOsToCOs(pageResponse.getData());
|
||||
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
package com.zcloud.edu.command.query.archives;
|
||||
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.zcloud.edu.command.convertor.archives.ArchivesReviewRecordCoConvertor;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewRecordPageQry;
|
||||
import com.zcloud.edu.dto.clientobject.archives.ArchivesReviewRecordCO;
|
||||
import com.zcloud.edu.persistence.dataobject.archives.ArchivesReviewRecordDO;
|
||||
import com.zcloud.edu.persistence.repository.archives.ArchivesReviewRecordRepository;
|
||||
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
/**
|
||||
* web-app
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:37
|
||||
*/
|
||||
@Component
|
||||
@AllArgsConstructor
|
||||
public class ArchivesReviewRecordQueryExe {
|
||||
private final ArchivesReviewRecordRepository archivesReviewRecordRepository;
|
||||
private final ArchivesReviewRecordCoConvertor archivesReviewRecordCoConvertor;
|
||||
|
||||
/**
|
||||
* 分页
|
||||
*
|
||||
* @param archivesReviewRecordPageQry
|
||||
* @return
|
||||
*/
|
||||
public PageResponse<ArchivesReviewRecordCO> execute(ArchivesReviewRecordPageQry archivesReviewRecordPageQry) {
|
||||
Map<String, Object> params = PageQueryHelper.toHashMap(archivesReviewRecordPageQry);
|
||||
PageResponse<ArchivesReviewRecordDO> pageResponse = archivesReviewRecordRepository.listPage(params);
|
||||
List<ArchivesReviewRecordCO> examCenterCOS = archivesReviewRecordCoConvertor.converDOsToCOs(pageResponse.getData());
|
||||
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -65,8 +65,8 @@ public class ClassCurriculumQueryExe {
|
|||
BeanUtils.copyProperties(classCurriculumDO, classCurriculumCO);
|
||||
List<ClassCurriculumChapterCO> classCurriculumChapterCOList = classCurriculumChapterCoConvertor.converDOsToCOs(classCurriculumChapterDOList);
|
||||
long videoCount = classCurriculumChapterCOList.stream().filter(bean -> !ObjectUtils.isEmpty(bean.getVideoCoursewareId())).count();
|
||||
Tools.buildEntityTree(classCurriculumChapterCOList, "classCurriculumChapterId", "parentId", "childCurriculumChapterCOList", "0");
|
||||
classCurriculumCO.setCurriculumChapterCOList(classCurriculumChapterCOList);
|
||||
List<ClassCurriculumChapterCO> resultList = Tools.buildEntityTree(classCurriculumChapterCOList, "classCurriculumChapterId", "parentId", "childCurriculumChapterCOList", "0");
|
||||
classCurriculumCO.setCurriculumChapterCOList(resultList);
|
||||
classCurriculumCO.setVideoCount(videoCount);
|
||||
return SingleResponse.of(classCurriculumCO);
|
||||
}
|
||||
|
|
@ -77,9 +77,9 @@ public class ClassCurriculumQueryExe {
|
|||
List<String> classCurriculumIds = curList.stream().map(ClassCurriculumDO::getClassCurriculumId).collect(Collectors.toList());
|
||||
List<ClassCurriculumChapterDO> chapterList = classCurriculumChapterRepository.listByClassCurriculumIds(classCurriculumIds);
|
||||
List<ClassCurriculumChapterCO> chapterCoList = classCurriculumChapterCoConvertor.converDOsToCOs(chapterList);
|
||||
Tools.buildEntityTree(chapterCoList, "classCurriculumChapterId", "parentId", "childCurriculumChapterCOList", "0");
|
||||
List<ClassCurriculumChapterCO> resultList = Tools.buildEntityTree(chapterCoList, "classCurriculumChapterId", "parentId", "childCurriculumChapterCOList", "0");
|
||||
|
||||
Map<String, List<ClassCurriculumChapterCO>> chapterMap = chapterCoList.stream().collect(Collectors.groupingBy(ClassCurriculumChapterCO::getClassCurriculumId));
|
||||
Map<String, List<ClassCurriculumChapterCO>> chapterMap = resultList.stream().collect(Collectors.groupingBy(ClassCurriculumChapterCO::getClassCurriculumId));
|
||||
List<ClassCurriculumCO> curriculumList = classCurriculumCoConvertor.converDOsToCOs(curList);
|
||||
curriculumList.stream().forEach(bean -> {
|
||||
bean.setCurriculumChapterCOList(chapterMap.get(bean.getClassCurriculumId()));
|
||||
|
|
|
|||
|
|
@ -1,15 +1,21 @@
|
|||
package com.zcloud.edu.command.query.study;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.alibaba.cola.dto.MultiResponse;
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.jjb.saas.framework.auth.model.SSOUser;
|
||||
import com.jjb.saas.framework.auth.utils.AuthContext;
|
||||
import com.zcloud.edu.command.convertor.study.ClassCoConvertor;
|
||||
import com.zcloud.edu.command.convertor.study.StudentCoConvertor;
|
||||
import com.zcloud.edu.dto.clientobject.study.ClassCO;
|
||||
import com.zcloud.edu.dto.clientobject.study.StudentCO;
|
||||
import com.zcloud.edu.dto.data.study.ClassCountDTO;
|
||||
import com.zcloud.edu.dto.data.study.ClassQuestionDTO;
|
||||
import com.zcloud.edu.dto.study.ClassCountQry;
|
||||
import com.zcloud.edu.dto.study.ClassPageQry;
|
||||
import com.zcloud.edu.persistence.dataobject.study.ClassDO;
|
||||
import com.zcloud.edu.persistence.dataobject.study.StudentDO;
|
||||
import com.zcloud.edu.persistence.mapper.po.study.ClassQuestionPO;
|
||||
import com.zcloud.edu.persistence.mapper.po.study.StudentCountPO;
|
||||
import com.zcloud.edu.persistence.repository.study.ClassRepository;
|
||||
|
|
@ -37,6 +43,7 @@ public class ClassQueryExe {
|
|||
private final ClassRepository classRepository;
|
||||
private final ClassCoConvertor classCoConvertor;
|
||||
private final StudentRepository studentRepository;
|
||||
private final StudentCoConvertor studentCoConvertor;
|
||||
|
||||
/**
|
||||
* 分页
|
||||
|
|
@ -124,5 +131,12 @@ public class ClassQueryExe {
|
|||
BeanUtils.copyProperties(classDO, classCO);
|
||||
return SingleResponse.of(classCO);
|
||||
}
|
||||
|
||||
public MultiResponse<StudentCO> executeCountStuClass(ClassCountQry qry){
|
||||
Map<String, Object> params = PageQueryHelper.toHashMap(qry);
|
||||
List<StudentDO> studentDOList = studentRepository.countStuClass(params);
|
||||
List<StudentCO> studentCOList = BeanUtil.copyToList(studentDOList, StudentCO.class);
|
||||
return MultiResponse.of(studentCOList);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,19 @@
|
|||
package com.zcloud.edu.command.query.study;
|
||||
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.zcloud.edu.command.convertor.study.StudentExamRecordCoConvertor;
|
||||
import com.zcloud.edu.command.convertor.study.StudentExamRecordItemCoConvertor;
|
||||
import com.zcloud.edu.dto.clientobject.study.StudentExamRecordCO;
|
||||
import com.zcloud.edu.dto.clientobject.study.StudentExamRecordItemCO;
|
||||
import com.zcloud.edu.dto.study.StudentExamRecordPageQry;
|
||||
import com.zcloud.edu.persistence.dataobject.study.StudentExamRecordDO;
|
||||
import com.zcloud.edu.persistence.dataobject.study.StudentExamRecordItemDO;
|
||||
import com.zcloud.edu.persistence.repository.study.StudentExamRecordItemRepository;
|
||||
import com.zcloud.edu.persistence.repository.study.StudentExamRecordRepository;
|
||||
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -25,6 +31,8 @@ import java.util.Map;
|
|||
public class StudentExamRecordQueryExe {
|
||||
private final StudentExamRecordRepository studentExamRecordRepository;
|
||||
private final StudentExamRecordCoConvertor studentExamRecordCoConvertor;
|
||||
private final StudentExamRecordItemRepository studentExamRecordItemRepository;
|
||||
private final StudentExamRecordItemCoConvertor studentExamRecordItemCoConvertor;
|
||||
|
||||
/**
|
||||
* 分页
|
||||
|
|
@ -38,5 +46,14 @@ public class StudentExamRecordQueryExe {
|
|||
List<StudentExamRecordCO> examCenterCOS = studentExamRecordCoConvertor.converDOsToCOs(pageResponse.getData());
|
||||
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
|
||||
}
|
||||
public SingleResponse<StudentExamRecordCO> executeGetInfoByStudentId(String studentId){
|
||||
StudentExamRecordDO studentExamRecordDO = studentExamRecordRepository.getInfoByStudentId(studentId);
|
||||
StudentExamRecordCO studentExamRecordCO = new StudentExamRecordCO();
|
||||
BeanUtils.copyProperties(studentExamRecordDO, studentExamRecordCO);
|
||||
List<StudentExamRecordItemDO> recordList = studentExamRecordItemRepository.listByExamRecordId(studentExamRecordDO.getStudentExamRecordId());
|
||||
List<StudentExamRecordItemCO> recordCoList = studentExamRecordItemCoConvertor.converDOsToCOs(recordList);
|
||||
studentExamRecordCO.setExamRecordItemList(recordCoList);
|
||||
return SingleResponse.of(studentExamRecordCO);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +1,23 @@
|
|||
package com.zcloud.edu.command.query.study;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.zcloud.edu.command.convertor.study.StudentCoConvertor;
|
||||
import com.zcloud.edu.domain.model.archives.PersonArchivesE;
|
||||
import com.zcloud.edu.domain.model.study.*;
|
||||
import com.zcloud.edu.dto.archives.ClassArchivesQry;
|
||||
import com.zcloud.edu.dto.clientobject.study.StudentCO;
|
||||
import com.zcloud.edu.dto.data.archives.PersonArchivesDTO;
|
||||
import com.zcloud.edu.dto.study.StudentPageQry;
|
||||
import com.zcloud.edu.persistence.dataobject.study.StudentDO;
|
||||
import com.zcloud.edu.persistence.repository.study.StudentRepository;
|
||||
import com.zcloud.edu.persistence.dataobject.study.*;
|
||||
import com.zcloud.edu.persistence.repository.study.*;
|
||||
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
|
@ -25,6 +33,10 @@ import java.util.Map;
|
|||
public class StudentQueryExe {
|
||||
private final StudentRepository studentRepository;
|
||||
private final StudentCoConvertor studentCoConvertor;
|
||||
private final ClassRepository classRepository;
|
||||
private final ClassCurriculumRepository classCurriculumRepository;
|
||||
private final ClassCurriculumChapterRepository classCurriculumChapterRepository;
|
||||
private final StudentSignRepository studentSignRepository;
|
||||
|
||||
/**
|
||||
* 分页
|
||||
|
|
@ -38,5 +50,89 @@ public class StudentQueryExe {
|
|||
List<StudentCO> examCenterCOS = studentCoConvertor.converDOsToCOs(pageResponse.getData());
|
||||
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
|
||||
}
|
||||
|
||||
public SingleResponse<PersonArchivesDTO> executeAttendanceRecord(ClassArchivesQry qry){
|
||||
StudentDO studentDO = studentRepository.getById(qry.getStuId());
|
||||
StudentE studentE = new StudentE();
|
||||
BeanUtils.copyProperties(studentDO, studentE);
|
||||
ClassDO classDO = classRepository.getByClassId(studentDO.getClassId());
|
||||
ClassE classE = new ClassE();
|
||||
BeanUtils.copyProperties(classDO, classE);
|
||||
|
||||
// 课程信息
|
||||
ClassCurriculumE classCurriculumE = new ClassCurriculumE();
|
||||
Map<String, Object> params = classCurriculumE.initListAllParams(studentDO.getClassId());
|
||||
List<ClassCurriculumDO> curEList = classCurriculumRepository.listAll(params);
|
||||
List<ClassCurriculumE> classCurList = BeanUtil.copyToList(curEList, ClassCurriculumE.class);
|
||||
|
||||
// 课件信息
|
||||
List<ClassCurriculumChapterDO> classChapterList = classCurriculumChapterRepository.listVideoByClassId(classE.getClassId());
|
||||
List<ClassCurriculumChapterE> classChapterEList = BeanUtil.copyToList(classChapterList, ClassCurriculumChapterE.class);
|
||||
|
||||
|
||||
PersonArchivesE personArchivesE = new PersonArchivesE();
|
||||
personArchivesE.initAttendanceRecord(studentE, classE, classChapterEList, classCurList);
|
||||
PersonArchivesDTO personArchivesDTO = new PersonArchivesDTO();
|
||||
BeanUtils.copyProperties(personArchivesE, personArchivesDTO);
|
||||
return SingleResponse.of(personArchivesDTO);
|
||||
}
|
||||
|
||||
public SingleResponse<PersonArchivesDTO> executeStudyArchives(ClassArchivesQry qry){
|
||||
// 学员信息
|
||||
StudentDO studentDO = studentRepository.getById(qry.getStuId());
|
||||
StudentDO studentUrl = studentRepository.findFaceUrlByPhone(studentDO.getPhone());
|
||||
StudentE studentE = new StudentE();
|
||||
studentE.setUserAvatarUrl(studentUrl.getUserAvatarUrl());
|
||||
BeanUtils.copyProperties(studentDO, studentE);
|
||||
// 班级信息
|
||||
ClassDO classDO = classRepository.getByClassId(studentDO.getClassId());
|
||||
ClassE classE = new ClassE();
|
||||
BeanUtils.copyProperties(classDO, classE);
|
||||
|
||||
// 课程信息
|
||||
ClassCurriculumE classCurriculumE = new ClassCurriculumE();
|
||||
Map<String, Object> params = classCurriculumE.initListAllParams(studentDO.getClassId());
|
||||
List<ClassCurriculumDO> curEList = classCurriculumRepository.listAll(params);
|
||||
List<ClassCurriculumE> classCurList = BeanUtil.copyToList(curEList, ClassCurriculumE.class);
|
||||
|
||||
PersonArchivesE personArchivesE = new PersonArchivesE();
|
||||
personArchivesE.init(studentE, classE, classCurList);
|
||||
|
||||
|
||||
PersonArchivesDTO personArchivesDTO = new PersonArchivesDTO();
|
||||
BeanUtils.copyProperties(personArchivesE, personArchivesDTO);
|
||||
|
||||
return SingleResponse.of(personArchivesDTO);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public SingleResponse<PersonArchivesDTO> executeStudyRecord(ClassArchivesQry qry){
|
||||
StudentDO studentDO = studentRepository.getById(qry.getStuId());
|
||||
StudentE studentE = new StudentE();
|
||||
BeanUtils.copyProperties(studentDO, studentE);
|
||||
ClassDO classDO = classRepository.getByClassId(studentDO.getClassId());
|
||||
ClassE classE = new ClassE();
|
||||
BeanUtils.copyProperties(classDO, classE);
|
||||
|
||||
// 课程信息
|
||||
ClassCurriculumE classCurriculumE = new ClassCurriculumE();
|
||||
Map<String, Object> params = classCurriculumE.initListAllParams(studentDO.getClassId());
|
||||
List<ClassCurriculumDO> curEList = classCurriculumRepository.listAll(params);
|
||||
List<ClassCurriculumE> classCurList = BeanUtil.copyToList(curEList, ClassCurriculumE.class);
|
||||
|
||||
// 签到照片
|
||||
params.put("studentId", studentDO.getStudentId());
|
||||
List<StudentSignDO> studentSignList = studentSignRepository.listAllByStudentId(params);
|
||||
List<StudentSignE> studentSignEList = BeanUtil.copyToList(studentSignList, StudentSignE.class);
|
||||
|
||||
|
||||
PersonArchivesE personArchivesE = new PersonArchivesE();
|
||||
personArchivesE.initStudyRecord(studentE, classE, studentSignEList, classCurList);
|
||||
PersonArchivesDTO personArchivesDTO = new PersonArchivesDTO();
|
||||
BeanUtils.copyProperties(personArchivesE, personArchivesDTO);
|
||||
return SingleResponse.of(personArchivesDTO);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,8 +3,10 @@ package com.zcloud.edu.command.query.study;
|
|||
import com.alibaba.cola.dto.MultiResponse;
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.Response;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.zcloud.edu.command.convertor.study.StudentSignCoConvertor;
|
||||
import com.zcloud.edu.domain.model.study.ClassE;
|
||||
import com.zcloud.edu.dto.clientobject.study.StudentCO;
|
||||
import com.zcloud.edu.dto.clientobject.study.StudentSignCO;
|
||||
import com.zcloud.edu.dto.study.ClassAppSignQry;
|
||||
import com.zcloud.edu.dto.study.StudentSignPageQry;
|
||||
|
|
@ -65,7 +67,7 @@ public class StudentSignQueryExe {
|
|||
}
|
||||
|
||||
|
||||
public Response executeVerify(StudentSignVerifyQry qry) {
|
||||
public SingleResponse<StudentCO> executeVerify(StudentSignVerifyQry qry) {
|
||||
ClassDO classDO = classRepository.getByClassId(qry.getClassId());
|
||||
ClassE classE = new ClassE();
|
||||
BeanUtils.copyProperties(classDO, classE);
|
||||
|
|
@ -78,7 +80,7 @@ public class StudentSignQueryExe {
|
|||
throw new RuntimeException("您已经完成此班级的学习");
|
||||
}
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("student_id", studentDO.getStudentId());
|
||||
params.put("studentId", studentDO.getStudentId());
|
||||
params.put("type", qry.getType());
|
||||
if (qry.getType() == 1){
|
||||
List<StudentSignDO> list = studentSignRepository.listAllByStudentId(params);
|
||||
|
|
@ -91,7 +93,9 @@ public class StudentSignQueryExe {
|
|||
throw new RuntimeException("您已经没有考试次数");
|
||||
}
|
||||
}
|
||||
return MultiResponse.buildSuccess();
|
||||
StudentCO studentCO = new StudentCO();
|
||||
BeanUtils.copyProperties(studentDO, studentCO);
|
||||
return SingleResponse.of(studentCO);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,9 +3,12 @@ package com.zcloud.edu.command.study;
|
|||
import com.alibaba.cola.exception.BizException;
|
||||
import com.zcloud.edu.domain.gateway.study.StudentSignGateway;
|
||||
import com.zcloud.edu.domain.model.study.StudentSignE;
|
||||
import com.zcloud.edu.dto.clientobject.study.StudentSignCO;
|
||||
import com.zcloud.edu.dto.study.StudentSignAddCmd;
|
||||
import com.zcloud.edu.persistence.dataobject.study.StudentDO;
|
||||
import com.zcloud.edu.persistence.repository.study.StudentRepository;
|
||||
import com.zcloud.gbscommon.utils.Base64Util;
|
||||
import com.zcloud.gbscommon.utils.Tools;
|
||||
import com.zcloud.gbscommon.zcloudimgfiles.facade.ZcloudImgFilesFacade;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
|
|
@ -14,6 +17,8 @@ import org.springframework.stereotype.Component;
|
|||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
|
||||
/**
|
||||
* web-app
|
||||
|
|
@ -30,33 +35,39 @@ public class StudentSignAddExe {
|
|||
private ZcloudImgFilesFacade zcloudImgFilesFacade;
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean execute(StudentSignAddCmd cmd) {
|
||||
|
||||
public StudentSignCO execute(StudentSignAddCmd cmd) {
|
||||
StudentDO stu = studentRepository.findInfoByStudentId(cmd.getStudentId());
|
||||
StudentSignE studentSignE = new StudentSignE();
|
||||
BeanUtils.copyProperties(cmd, studentSignE);
|
||||
StudentDO student = studentRepository.findFaceUrlByPhone(studentSignE.getPhone());
|
||||
StudentDO student = studentRepository.findFaceUrlByPhone(stu.getPhone());
|
||||
|
||||
if (student == null || ObjectUtils.isEmpty(student.getUserAvatarUrl())) {
|
||||
throw new RuntimeException("您还没有录入人脸");
|
||||
}
|
||||
String faceUrl = null;
|
||||
try {
|
||||
studentSignE.compareFace(student.getUserAvatarUrl());
|
||||
faceUrl = Base64Util.getBase64String(studentSignE.getFiles()[0]);
|
||||
studentSignE.compareFace(student.getUserAvatarUrl(), faceUrl);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
String path = studentSignE.getType() == 1 ? "clockSign" : "examSign";
|
||||
studentSignE.setFaceUrl(zcloudImgFilesFacade.saveFile(studentSignE.getFiles()[0], path));
|
||||
String fileName = Tools.get32UUID() + studentSignE.getFiles()[0].getOriginalFilename().substring(studentSignE.getFiles()[0].getOriginalFilename().lastIndexOf("."));
|
||||
studentSignE.setFaceUrl(zcloudImgFilesFacade.saveFile( faceUrl,fileName, path));
|
||||
studentSignE.init(stu.getStudentId(), stu.getClassId(), stu.getClassCorpinfoId());
|
||||
boolean res = false;
|
||||
StudentSignCO studentSignCO = new StudentSignCO();
|
||||
try {
|
||||
res = studentSignGateway.add(studentSignE);
|
||||
BeanUtils.copyProperties(studentSignE, studentSignCO);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
if (!res) {
|
||||
throw new BizException("保存失败");
|
||||
}
|
||||
return true;
|
||||
return studentSignCO;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,59 @@
|
|||
package com.zcloud.edu.service.archives;
|
||||
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.zcloud.edu.api.archives.ArchivesReviewRecordServiceI;
|
||||
import com.zcloud.edu.command.archives.ArchivesReviewRecordAddExe;
|
||||
import com.zcloud.edu.command.archives.ArchivesReviewRecordRemoveExe;
|
||||
import com.zcloud.edu.command.archives.ArchivesReviewRecordUpdateExe;
|
||||
import com.zcloud.edu.command.query.archives.ArchivesReviewRecordQueryExe;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewRecordAddCmd;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewRecordPageQry;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewRecordUpdateCmd;
|
||||
import com.zcloud.edu.dto.clientobject.archives.ArchivesReviewRecordCO;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* web-app
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:37
|
||||
*/
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
public class ArchivesReviewRecordServiceImpl implements ArchivesReviewRecordServiceI {
|
||||
private final ArchivesReviewRecordAddExe archivesReviewRecordAddExe;
|
||||
private final ArchivesReviewRecordUpdateExe archivesReviewRecordUpdateExe;
|
||||
private final ArchivesReviewRecordRemoveExe archivesReviewRecordRemoveExe;
|
||||
private final ArchivesReviewRecordQueryExe archivesReviewRecordQueryExe;
|
||||
|
||||
@Override
|
||||
public PageResponse<ArchivesReviewRecordCO> listPage(ArchivesReviewRecordPageQry qry) {
|
||||
|
||||
return archivesReviewRecordQueryExe.execute(qry);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SingleResponse add(ArchivesReviewRecordAddCmd cmd) {
|
||||
|
||||
archivesReviewRecordAddExe.execute(cmd);
|
||||
return SingleResponse.buildSuccess();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void edit(ArchivesReviewRecordUpdateCmd archivesReviewRecordUpdateCmd) {
|
||||
archivesReviewRecordUpdateExe.execute(archivesReviewRecordUpdateCmd);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove(Long id) {
|
||||
archivesReviewRecordRemoveExe.execute(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeBatch(Long[] ids) {
|
||||
archivesReviewRecordRemoveExe.execute(ids);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
package com.zcloud.edu.service.archives;
|
||||
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.zcloud.edu.api.archives.ArchivesReviewServiceI;
|
||||
import com.zcloud.edu.command.archives.ArchivesReviewAddExe;
|
||||
import com.zcloud.edu.command.archives.ArchivesReviewRemoveExe;
|
||||
import com.zcloud.edu.command.archives.ArchivesReviewUpdateExe;
|
||||
import com.zcloud.edu.command.query.archives.ArchivesReviewQueryExe;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewAddCmd;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewPageQry;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewUpdateCmd;
|
||||
import com.zcloud.edu.dto.clientobject.archives.ArchivesReviewCO;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* web-app
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:35
|
||||
*/
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
public class ArchivesReviewServiceImpl implements ArchivesReviewServiceI {
|
||||
private final ArchivesReviewAddExe archivesReviewAddExe;
|
||||
private final ArchivesReviewUpdateExe archivesReviewUpdateExe;
|
||||
private final ArchivesReviewRemoveExe archivesReviewRemoveExe;
|
||||
private final ArchivesReviewQueryExe archivesReviewQueryExe;
|
||||
|
||||
@Override
|
||||
public PageResponse<ArchivesReviewCO> listPage(ArchivesReviewPageQry qry) {
|
||||
|
||||
return archivesReviewQueryExe.execute(qry);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SingleResponse add(ArchivesReviewAddCmd cmd) {
|
||||
|
||||
archivesReviewAddExe.execute(cmd);
|
||||
return SingleResponse.buildSuccess();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void edit(ArchivesReviewUpdateCmd archivesReviewUpdateCmd) {
|
||||
archivesReviewUpdateExe.execute(archivesReviewUpdateCmd);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove(Long id) {
|
||||
archivesReviewRemoveExe.execute(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeBatch(Long[] ids) {
|
||||
archivesReviewRemoveExe.execute(ids);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -9,12 +9,10 @@ import com.zcloud.edu.command.study.ClassAddExe;
|
|||
import com.zcloud.edu.command.study.ClassRemoveExe;
|
||||
import com.zcloud.edu.command.study.ClassUpdateExe;
|
||||
import com.zcloud.edu.dto.clientobject.study.ClassCO;
|
||||
import com.zcloud.edu.dto.clientobject.study.StudentCO;
|
||||
import com.zcloud.edu.dto.data.study.ClassCountDTO;
|
||||
import com.zcloud.edu.dto.data.study.ClassQuestionDTO;
|
||||
import com.zcloud.edu.dto.study.ClassAddCmd;
|
||||
import com.zcloud.edu.dto.study.ClassPageQry;
|
||||
import com.zcloud.edu.dto.study.ClassPostponeCmd;
|
||||
import com.zcloud.edu.dto.study.ClassUpdateCmd;
|
||||
import com.zcloud.edu.dto.study.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
|
@ -85,5 +83,10 @@ public class ClassServiceImpl implements ClassServiceI {
|
|||
public SingleResponse<ClassCountDTO> statisticsCount(ClassPageQry qry) {
|
||||
return classQueryExe.executeStatisticsCount(qry);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MultiResponse<StudentCO> countStuClass(ClassCountQry qry) {
|
||||
return classQueryExe.executeCountStuClass(qry);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -55,5 +55,10 @@ public class StudentExamRecordServiceImpl implements StudentExamRecordServiceI {
|
|||
public void removeBatch(Long[] ids) {
|
||||
studentExamRecordRemoveExe.execute(ids);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SingleResponse<StudentExamRecordCO> getInfoByStudentId(String studentId) {
|
||||
return studentExamRecordQueryExe.executeGetInfoByStudentId(studentId);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,9 @@ import com.zcloud.edu.command.query.study.StudentQueryExe;
|
|||
import com.zcloud.edu.command.study.StudentAddExe;
|
||||
import com.zcloud.edu.command.study.StudentRemoveExe;
|
||||
import com.zcloud.edu.command.study.StudentUpdateExe;
|
||||
import com.zcloud.edu.dto.archives.ClassArchivesQry;
|
||||
import com.zcloud.edu.dto.clientobject.study.StudentCO;
|
||||
import com.zcloud.edu.dto.data.archives.PersonArchivesDTO;
|
||||
import com.zcloud.edu.dto.study.StudentAddCmd;
|
||||
import com.zcloud.edu.dto.study.StudentPageQry;
|
||||
import com.zcloud.edu.dto.study.StudentUpdateCmd;
|
||||
|
|
@ -57,5 +59,19 @@ public class StudentServiceImpl implements StudentServiceI {
|
|||
public void removeBatch(Long[] ids) {
|
||||
studentRemoveExe.execute(ids);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SingleResponse<PersonArchivesDTO> getAttendanceRecord(ClassArchivesQry qry) {
|
||||
return studentQueryExe.executeAttendanceRecord(qry);
|
||||
}
|
||||
@Override
|
||||
public SingleResponse<PersonArchivesDTO> getStudyArchives(ClassArchivesQry qry) {
|
||||
return studentQueryExe.executeStudyArchives(qry);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SingleResponse<PersonArchivesDTO> getStudyRecord(ClassArchivesQry qry) {
|
||||
return studentQueryExe.executeStudyRecord(qry);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import com.zcloud.edu.command.query.study.StudentSignQueryExe;
|
|||
import com.zcloud.edu.command.study.StudentSignAddExe;
|
||||
import com.zcloud.edu.command.study.StudentSignRemoveExe;
|
||||
import com.zcloud.edu.command.study.StudentSignUpdateExe;
|
||||
import com.zcloud.edu.dto.clientobject.study.StudentCO;
|
||||
import com.zcloud.edu.dto.clientobject.study.StudentSignCO;
|
||||
import com.zcloud.edu.dto.study.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
|
@ -35,10 +36,9 @@ public class StudentSignServiceImpl implements StudentSignServiceI {
|
|||
}
|
||||
|
||||
@Override
|
||||
public SingleResponse add(StudentSignAddCmd cmd) {
|
||||
public SingleResponse<StudentSignCO> add(StudentSignAddCmd cmd) {
|
||||
|
||||
studentSignAddExe.execute(cmd);
|
||||
return SingleResponse.buildSuccess();
|
||||
return SingleResponse.of(studentSignAddExe.execute(cmd));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -62,7 +62,7 @@ public class StudentSignServiceImpl implements StudentSignServiceI {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Response verify(StudentSignVerifyQry qry) {
|
||||
public SingleResponse<StudentCO> verify(StudentSignVerifyQry qry) {
|
||||
return studentSignQueryExe.executeVerify(qry);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
package com.zcloud.edu.api.archives;
|
||||
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewRecordAddCmd;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewRecordPageQry;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewRecordUpdateCmd;
|
||||
import com.zcloud.edu.dto.clientobject.archives.ArchivesReviewRecordCO;
|
||||
|
||||
/**
|
||||
* web-client
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:37
|
||||
*/
|
||||
public interface ArchivesReviewRecordServiceI {
|
||||
PageResponse<ArchivesReviewRecordCO> listPage(ArchivesReviewRecordPageQry qry);
|
||||
|
||||
SingleResponse<ArchivesReviewRecordCO> add(ArchivesReviewRecordAddCmd cmd);
|
||||
|
||||
void edit(ArchivesReviewRecordUpdateCmd cmd);
|
||||
|
||||
void remove(Long id);
|
||||
|
||||
void removeBatch(Long[] ids);
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
package com.zcloud.edu.api.archives;
|
||||
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewAddCmd;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewPageQry;
|
||||
import com.zcloud.edu.dto.archives.ArchivesReviewUpdateCmd;
|
||||
import com.zcloud.edu.dto.clientobject.archives.ArchivesReviewCO;
|
||||
|
||||
/**
|
||||
* web-client
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:35
|
||||
*/
|
||||
public interface ArchivesReviewServiceI {
|
||||
PageResponse<ArchivesReviewCO> listPage(ArchivesReviewPageQry qry);
|
||||
|
||||
SingleResponse<ArchivesReviewCO> add(ArchivesReviewAddCmd cmd);
|
||||
|
||||
void edit(ArchivesReviewUpdateCmd cmd);
|
||||
|
||||
void remove(Long id);
|
||||
|
||||
void removeBatch(Long[] ids);
|
||||
}
|
||||
|
||||
|
|
@ -4,12 +4,10 @@ import com.alibaba.cola.dto.MultiResponse;
|
|||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.zcloud.edu.dto.clientobject.study.ClassCO;
|
||||
import com.zcloud.edu.dto.clientobject.study.StudentCO;
|
||||
import com.zcloud.edu.dto.data.study.ClassCountDTO;
|
||||
import com.zcloud.edu.dto.data.study.ClassQuestionDTO;
|
||||
import com.zcloud.edu.dto.study.ClassAddCmd;
|
||||
import com.zcloud.edu.dto.study.ClassPageQry;
|
||||
import com.zcloud.edu.dto.study.ClassPostponeCmd;
|
||||
import com.zcloud.edu.dto.study.ClassUpdateCmd;
|
||||
import com.zcloud.edu.dto.study.*;
|
||||
|
||||
/**
|
||||
* web-client
|
||||
|
|
@ -40,5 +38,7 @@ public interface ClassServiceI {
|
|||
PageResponse<ClassCO> appListPage(ClassPageQry qry);
|
||||
|
||||
SingleResponse<ClassCountDTO> statisticsCount(ClassPageQry qry);
|
||||
|
||||
MultiResponse<StudentCO> countStuClass(ClassCountQry qry);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,5 +23,7 @@ public interface StudentExamRecordServiceI {
|
|||
void remove(Long id);
|
||||
|
||||
void removeBatch(Long[] ids);
|
||||
|
||||
SingleResponse<StudentExamRecordCO> getInfoByStudentId(String studentId);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,9 @@ package com.zcloud.edu.api.study;
|
|||
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.zcloud.edu.dto.archives.ClassArchivesQry;
|
||||
import com.zcloud.edu.dto.clientobject.study.StudentCO;
|
||||
import com.zcloud.edu.dto.data.archives.PersonArchivesDTO;
|
||||
import com.zcloud.edu.dto.study.StudentAddCmd;
|
||||
import com.zcloud.edu.dto.study.StudentPageQry;
|
||||
import com.zcloud.edu.dto.study.StudentUpdateCmd;
|
||||
|
|
@ -25,5 +27,11 @@ public interface StudentServiceI {
|
|||
void remove(Long id);
|
||||
|
||||
void removeBatch(Long[] ids);
|
||||
|
||||
SingleResponse<PersonArchivesDTO> getAttendanceRecord(ClassArchivesQry qry);
|
||||
|
||||
SingleResponse<PersonArchivesDTO> getStudyArchives(ClassArchivesQry qry);
|
||||
|
||||
SingleResponse<PersonArchivesDTO> getStudyRecord(ClassArchivesQry qry);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import com.alibaba.cola.dto.MultiResponse;
|
|||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.alibaba.cola.dto.Response;
|
||||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import com.zcloud.edu.dto.clientobject.study.StudentCO;
|
||||
import com.zcloud.edu.dto.clientobject.study.StudentSignCO;
|
||||
import com.zcloud.edu.dto.study.*;
|
||||
|
||||
|
|
@ -26,6 +27,6 @@ public interface StudentSignServiceI {
|
|||
|
||||
MultiResponse<StudentSignCO> listAll(ClassAppSignQry qry);
|
||||
|
||||
Response verify(StudentSignVerifyQry qry);
|
||||
SingleResponse<StudentCO> verify(StudentSignVerifyQry qry);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,77 @@
|
|||
package com.zcloud.edu.dto.archives;
|
||||
|
||||
import com.alibaba.cola.dto.Command;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* web-client
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:34
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class ArchivesReviewAddCmd extends Command {
|
||||
@ApiModelProperty(value = "业务id", name = "archivesReviewId", required = true)
|
||||
@NotEmpty(message = "业务id不能为空")
|
||||
private String archivesReviewId;
|
||||
|
||||
@ApiModelProperty(value = "课程id", name = "classCurriculumId", required = true)
|
||||
@NotEmpty(message = "课程id不能为空")
|
||||
private String classCurriculumId;
|
||||
|
||||
@ApiModelProperty(value = "班级id", name = "classId", required = true)
|
||||
@NotEmpty(message = "班级id不能为空")
|
||||
private String classId;
|
||||
|
||||
@ApiModelProperty(value = "初版书号", name = "bookNum", required = true)
|
||||
@NotEmpty(message = "初版书号不能为空")
|
||||
private String bookNum;
|
||||
|
||||
@ApiModelProperty(value = "班级所属企业id", name = "corpinfoId", required = true)
|
||||
@NotNull(message = "班级所属企业id不能为空")
|
||||
private Integer corpinfoId;
|
||||
|
||||
@ApiModelProperty(value = "编写单位", name = "corpName", required = true)
|
||||
@NotEmpty(message = "编写单位不能为空")
|
||||
private String corpName;
|
||||
|
||||
@ApiModelProperty(value = "编写时间", name = "writeDate", required = true)
|
||||
@NotNull(message = "编写时间不能为空")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDateTime writeDate;
|
||||
|
||||
@ApiModelProperty(value = "教材类型", name = "materialType", required = true)
|
||||
@NotEmpty(message = "教材类型不能为空")
|
||||
private String materialType;
|
||||
|
||||
@ApiModelProperty(value = "会审地点", name = "address", required = true)
|
||||
@NotEmpty(message = "会审地点不能为空")
|
||||
private String address;
|
||||
|
||||
@ApiModelProperty(value = "主持人", name = "compere", required = true)
|
||||
@NotEmpty(message = "主持人不能为空")
|
||||
private String compere;
|
||||
|
||||
@ApiModelProperty(value = "会审时间", name = "auditDate", required = true)
|
||||
@NotNull(message = "会审时间不能为空")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDateTime auditDate;
|
||||
|
||||
@ApiModelProperty(value = "会审意见", name = "reviewOpinions", required = true)
|
||||
@NotEmpty(message = "会审意见不能为空")
|
||||
private String reviewOpinions;
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
package com.zcloud.edu.dto.archives;
|
||||
|
||||
import com.alibaba.cola.dto.PageQuery;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
/**
|
||||
* web-client
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:35
|
||||
*/
|
||||
@Data
|
||||
public class ArchivesReviewPageQry extends PageQuery {
|
||||
|
||||
/**
|
||||
* 查询条件操作前缀,支持以下几种数据库查询操作:
|
||||
* - `like`: 模糊匹配查询,对应SQL的LIKE操作符
|
||||
* - `eq`: 等值查询,对应SQL的=操作符
|
||||
* - `gt`: 大于比较查询
|
||||
* - `lt`: 小于比较查询
|
||||
* - `ge`: 大于等于比较查询
|
||||
* - `le`: 小于等于比较查询
|
||||
* - `ne`: 不等比较查询,对应SQL的!=操作符
|
||||
*/
|
||||
private String likeArchivesReviewId;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
package com.zcloud.edu.dto.archives;
|
||||
|
||||
import com.alibaba.cola.dto.Command;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
|
||||
/**
|
||||
* web-client
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:36
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class ArchivesReviewRecordAddCmd extends Command {
|
||||
@ApiModelProperty(value = "业务id", name = "archivesReviewRecordId", required = true)
|
||||
@NotEmpty(message = "业务id不能为空")
|
||||
private String archivesReviewRecordId;
|
||||
|
||||
@ApiModelProperty(value = "会审表id", name = "archivesReviewId", required = true)
|
||||
@NotEmpty(message = "会审表id不能为空")
|
||||
private String archivesReviewId;
|
||||
|
||||
@ApiModelProperty(value = "会审人员", name = "reviewUser", required = true)
|
||||
@NotEmpty(message = "会审人员不能为空")
|
||||
private String reviewUser;
|
||||
|
||||
@ApiModelProperty(value = "工作部门", name = "department", required = true)
|
||||
@NotEmpty(message = "工作部门不能为空")
|
||||
private String department;
|
||||
|
||||
@ApiModelProperty(value = "职务/职称", name = "duties", required = true)
|
||||
@NotEmpty(message = "职务/职称不能为空")
|
||||
private String duties;
|
||||
|
||||
@ApiModelProperty(value = "审查意见", name = "checkOpinion", required = true)
|
||||
@NotEmpty(message = "审查意见不能为空")
|
||||
private String checkOpinion;
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
package com.zcloud.edu.dto.archives;
|
||||
|
||||
import com.alibaba.cola.dto.PageQuery;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
/**
|
||||
* web-client
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:37
|
||||
*/
|
||||
@Data
|
||||
public class ArchivesReviewRecordPageQry extends PageQuery {
|
||||
|
||||
/**
|
||||
* 查询条件操作前缀,支持以下几种数据库查询操作:
|
||||
* - `like`: 模糊匹配查询,对应SQL的LIKE操作符
|
||||
* - `eq`: 等值查询,对应SQL的=操作符
|
||||
* - `gt`: 大于比较查询
|
||||
* - `lt`: 小于比较查询
|
||||
* - `ge`: 大于等于比较查询
|
||||
* - `le`: 小于等于比较查询
|
||||
* - `ne`: 不等比较查询,对应SQL的!=操作符
|
||||
*/
|
||||
private String likeArchivesReviewRecordId;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
package com.zcloud.edu.dto.archives;
|
||||
|
||||
import com.alibaba.cola.dto.Command;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* web-client
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:37
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class ArchivesReviewRecordUpdateCmd extends Command {
|
||||
@ApiModelProperty(value = "主键", name = "id", required = true)
|
||||
@NotNull(message = "主键不能为空")
|
||||
private Long id;
|
||||
@ApiModelProperty(value = "业务id", name = "archivesReviewRecordId", required = true)
|
||||
@NotEmpty(message = "业务id不能为空")
|
||||
private String archivesReviewRecordId;
|
||||
@ApiModelProperty(value = "会审表id", name = "archivesReviewId", required = true)
|
||||
@NotEmpty(message = "会审表id不能为空")
|
||||
private String archivesReviewId;
|
||||
@ApiModelProperty(value = "会审人员", name = "reviewUser", required = true)
|
||||
@NotEmpty(message = "会审人员不能为空")
|
||||
private String reviewUser;
|
||||
@ApiModelProperty(value = "工作部门", name = "department", required = true)
|
||||
@NotEmpty(message = "工作部门不能为空")
|
||||
private String department;
|
||||
@ApiModelProperty(value = "职务/职称", name = "duties", required = true)
|
||||
@NotEmpty(message = "职务/职称不能为空")
|
||||
private String duties;
|
||||
@ApiModelProperty(value = "审查意见", name = "checkOpinion", required = true)
|
||||
@NotEmpty(message = "审查意见不能为空")
|
||||
private String checkOpinion;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
package com.zcloud.edu.dto.archives;
|
||||
|
||||
import com.alibaba.cola.dto.Command;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* web-client
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:35
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class ArchivesReviewUpdateCmd extends Command {
|
||||
@ApiModelProperty(value = "${column.comment}", name = "id", required = true)
|
||||
@NotNull(message = "${column.comment}不能为空")
|
||||
private Long id;
|
||||
@ApiModelProperty(value = "业务id", name = "archivesReviewId", required = true)
|
||||
@NotEmpty(message = "业务id不能为空")
|
||||
private String archivesReviewId;
|
||||
@ApiModelProperty(value = "课程id", name = "classCurriculumId", required = true)
|
||||
@NotEmpty(message = "课程id不能为空")
|
||||
private String classCurriculumId;
|
||||
@ApiModelProperty(value = "班级id", name = "classId", required = true)
|
||||
@NotEmpty(message = "班级id不能为空")
|
||||
private String classId;
|
||||
@ApiModelProperty(value = "初版书号", name = "bookNum", required = true)
|
||||
@NotEmpty(message = "初版书号不能为空")
|
||||
private String bookNum;
|
||||
@ApiModelProperty(value = "班级所属企业id", name = "corpinfoId", required = true)
|
||||
@NotNull(message = "班级所属企业id不能为空")
|
||||
private Integer corpinfoId;
|
||||
@ApiModelProperty(value = "编写单位", name = "corpName", required = true)
|
||||
@NotEmpty(message = "编写单位不能为空")
|
||||
private String corpName;
|
||||
@ApiModelProperty(value = "编写时间", name = "writeDate", required = true)
|
||||
@NotNull(message = "编写时间不能为空")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDateTime writeDate;
|
||||
@ApiModelProperty(value = "教材类型", name = "materialType", required = true)
|
||||
@NotEmpty(message = "教材类型不能为空")
|
||||
private String materialType;
|
||||
@ApiModelProperty(value = "会审地点", name = "address", required = true)
|
||||
@NotEmpty(message = "会审地点不能为空")
|
||||
private String address;
|
||||
@ApiModelProperty(value = "主持人", name = "compere", required = true)
|
||||
@NotEmpty(message = "主持人不能为空")
|
||||
private String compere;
|
||||
@ApiModelProperty(value = "会审时间", name = "auditDate", required = true)
|
||||
@NotNull(message = "会审时间不能为空")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDateTime auditDate;
|
||||
@ApiModelProperty(value = "会审意见", name = "reviewOpinions", required = true)
|
||||
@NotEmpty(message = "会审意见不能为空")
|
||||
private String reviewOpinions;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
package com.zcloud.edu.dto.archives;
|
||||
|
||||
import com.alibaba.cola.dto.PageQuery;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
/**
|
||||
* web-client
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-13 14:18:12
|
||||
*/
|
||||
@Data
|
||||
public class ClassArchivesQry {
|
||||
|
||||
/**
|
||||
* 查询条件操作前缀,支持以下几种数据库查询操作:
|
||||
* - `like`: 模糊匹配查询,对应SQL的LIKE操作符
|
||||
* - `eq`: 等值查询,对应SQL的=操作符
|
||||
* - `gt`: 大于比较查询
|
||||
* - `lt`: 小于比较查询
|
||||
* - `ge`: 大于等于比较查询
|
||||
* - `le`: 小于等于比较查询
|
||||
* - `ne`: 不等比较查询,对应SQL的!=操作符
|
||||
*/
|
||||
private Long stuId;
|
||||
private String studentId;
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,97 @@
|
|||
package com.zcloud.edu.dto.clientobject.archives;
|
||||
|
||||
import com.alibaba.cola.dto.ClientObject;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
|
||||
/**
|
||||
* web-client
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:34
|
||||
*/
|
||||
@Data
|
||||
public class ArchivesReviewCO extends ClientObject {
|
||||
private Long id;
|
||||
//业务id
|
||||
@ApiModelProperty(value = "业务id")
|
||||
private String archivesReviewId;
|
||||
//课程id
|
||||
@ApiModelProperty(value = "课程id")
|
||||
private String classCurriculumId;
|
||||
//班级id
|
||||
@ApiModelProperty(value = "班级id")
|
||||
private String classId;
|
||||
//初版书号
|
||||
@ApiModelProperty(value = "初版书号")
|
||||
private String bookNum;
|
||||
//班级所属企业id
|
||||
@ApiModelProperty(value = "班级所属企业id")
|
||||
private Integer corpinfoId;
|
||||
//编写单位
|
||||
@ApiModelProperty(value = "编写单位")
|
||||
private String corpName;
|
||||
//编写时间
|
||||
@ApiModelProperty(value = "编写时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDateTime writeDate;
|
||||
//教材类型
|
||||
@ApiModelProperty(value = "教材类型")
|
||||
private String materialType;
|
||||
//会审地点
|
||||
@ApiModelProperty(value = "会审地点")
|
||||
private String address;
|
||||
//主持人
|
||||
@ApiModelProperty(value = "主持人")
|
||||
private String compere;
|
||||
//会审时间
|
||||
@ApiModelProperty(value = "会审时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDateTime auditDate;
|
||||
//会审意见
|
||||
@ApiModelProperty(value = "会审意见")
|
||||
private String reviewOpinions;
|
||||
//删除标识true false
|
||||
@ApiModelProperty(value = "删除标识true false")
|
||||
private String deleteEnum;
|
||||
//备注
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String remarks;
|
||||
//创建人姓名
|
||||
@ApiModelProperty(value = "创建人姓名")
|
||||
private String createName;
|
||||
//更新人姓名
|
||||
@ApiModelProperty(value = "更新人姓名")
|
||||
private String updateName;
|
||||
//租户id
|
||||
@ApiModelProperty(value = "租户id")
|
||||
private Long tenantId;
|
||||
//单位id
|
||||
@ApiModelProperty(value = "单位id")
|
||||
private Long orgId;
|
||||
//版本
|
||||
@ApiModelProperty(value = "版本")
|
||||
private Integer version;
|
||||
//创建时间
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDateTime createTime;
|
||||
//修改时间
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDateTime updateTime;
|
||||
//创建人id
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
private Long createId;
|
||||
//修改人id
|
||||
@ApiModelProperty(value = "修改人id")
|
||||
private Long updateId;
|
||||
//环境
|
||||
@ApiModelProperty(value = "环境")
|
||||
private String env;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
package com.zcloud.edu.dto.clientobject.archives;
|
||||
|
||||
import com.alibaba.cola.dto.ClientObject;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
|
||||
/**
|
||||
* web-client
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:36
|
||||
*/
|
||||
@Data
|
||||
public class ArchivesReviewRecordCO extends ClientObject {
|
||||
//主键
|
||||
@ApiModelProperty(value = "主键")
|
||||
private Long id;
|
||||
//业务id
|
||||
@ApiModelProperty(value = "业务id")
|
||||
private String archivesReviewRecordId;
|
||||
//会审表id
|
||||
@ApiModelProperty(value = "会审表id")
|
||||
private String archivesReviewId;
|
||||
//会审人员
|
||||
@ApiModelProperty(value = "会审人员")
|
||||
private String reviewUser;
|
||||
//工作部门
|
||||
@ApiModelProperty(value = "工作部门")
|
||||
private String department;
|
||||
//职务/职称
|
||||
@ApiModelProperty(value = "职务/职称")
|
||||
private String duties;
|
||||
//审查意见
|
||||
@ApiModelProperty(value = "审查意见")
|
||||
private String checkOpinion;
|
||||
//删除标识true false
|
||||
@ApiModelProperty(value = "删除标识true false")
|
||||
private String deleteEnum;
|
||||
//备注
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String remarks;
|
||||
//创建人姓名
|
||||
@ApiModelProperty(value = "创建人姓名")
|
||||
private String createName;
|
||||
//更新人姓名
|
||||
@ApiModelProperty(value = "更新人姓名")
|
||||
private String updateName;
|
||||
//租户id
|
||||
@ApiModelProperty(value = "租户id")
|
||||
private Long tenantId;
|
||||
//单位id
|
||||
@ApiModelProperty(value = "单位id")
|
||||
private Long orgId;
|
||||
//版本
|
||||
@ApiModelProperty(value = "版本")
|
||||
private Integer version;
|
||||
//创建时间
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDateTime createTime;
|
||||
//修改时间
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDateTime updateTime;
|
||||
//创建人id
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
private Long createId;
|
||||
//修改人id
|
||||
@ApiModelProperty(value = "修改人id")
|
||||
private Long updateId;
|
||||
//环境
|
||||
@ApiModelProperty(value = "环境")
|
||||
private String env;
|
||||
}
|
||||
|
||||
|
|
@ -64,6 +64,14 @@ public class ClassCO extends ClientObject {
|
|||
//考试次数只有考试时候有用
|
||||
@ApiModelProperty(value = "考试次数只有考试时候有用")
|
||||
private Integer numberofexams;
|
||||
|
||||
|
||||
@ApiModelProperty(value = "学员id(雪花)")
|
||||
private Long stuId;
|
||||
|
||||
@ApiModelProperty(value = "学员id(uuid)")
|
||||
private String studentId;
|
||||
|
||||
//删除标识true false
|
||||
@ApiModelProperty(value = "删除标识true false")
|
||||
private String deleteEnum;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.zcloud.edu.dto.clientobject.study;
|
||||
|
||||
import com.alibaba.cola.dto.ClientObject;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
|
@ -95,6 +96,18 @@ public class StudentCO extends ClientObject {
|
|||
//项目名称集合
|
||||
@ApiModelProperty(value = "项目名称集合")
|
||||
private String projectNames;
|
||||
|
||||
|
||||
|
||||
@ApiModelProperty(value = "班级数")
|
||||
@TableField(exist = false)
|
||||
private Integer classCount;
|
||||
|
||||
@ApiModelProperty(value = "完成班级数")
|
||||
@TableField(exist = false)
|
||||
private Integer completeClassCount;
|
||||
|
||||
|
||||
//环境
|
||||
@ApiModelProperty(value = "环境")
|
||||
private String env;
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
|
|||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -59,6 +60,13 @@ public class StudentExamRecordCO extends ClientObject {
|
|||
//考试结果 0 -不通过 1-通过
|
||||
@ApiModelProperty(value = "考试结果 0 -不通过 1-通过")
|
||||
private Integer result;
|
||||
|
||||
@ApiModelProperty(value = "考试签字")
|
||||
private String signUrl;
|
||||
|
||||
@ApiModelProperty(value = "试题集合")
|
||||
private List<StudentExamRecordItemCO> examRecordItemList;
|
||||
|
||||
//环境
|
||||
@ApiModelProperty(value = "环境")
|
||||
private String env;
|
||||
|
|
|
|||
|
|
@ -35,6 +35,11 @@ public class StudentSignCO extends ClientObject {
|
|||
//签到人脸路径
|
||||
@ApiModelProperty(value = "签到人脸路径")
|
||||
private String faceUrl;
|
||||
|
||||
//打卡签字路径
|
||||
@ApiModelProperty(value = "打卡签字路径")
|
||||
private String signUrl;
|
||||
|
||||
//签到类型 1-打卡签到 2-人脸签到
|
||||
@ApiModelProperty(value = "签到类型 1-打卡签到 2-人脸签到")
|
||||
private Integer type;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,139 @@
|
|||
package com.zcloud.edu.dto.data.archives;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @author zhangyue
|
||||
* @date 2026/1/26 16:56
|
||||
*/
|
||||
@Data
|
||||
public class PersonArchivesDTO {
|
||||
private Long stuId;
|
||||
//业务id
|
||||
@ApiModelProperty(value = "业务id")
|
||||
private String studentId;
|
||||
//学员userid
|
||||
@ApiModelProperty(value = "学员userid")
|
||||
private Integer userId;
|
||||
//班级id
|
||||
@ApiModelProperty(value = "班级id")
|
||||
private String classId;
|
||||
//学员姓名
|
||||
@ApiModelProperty(value = "学员姓名")
|
||||
private String name;
|
||||
//学员所属班级的企业id
|
||||
@ApiModelProperty(value = "学员所属班级的企业id")
|
||||
private Long classCorpinfoId;
|
||||
//手机号
|
||||
@ApiModelProperty(value = "手机号")
|
||||
private String phone;
|
||||
//身份证号
|
||||
@ApiModelProperty(value = "身份证号")
|
||||
private String userIdCard;
|
||||
//民族编码
|
||||
@ApiModelProperty(value = "民族编码")
|
||||
private String nation;
|
||||
//民族名称
|
||||
@ApiModelProperty(value = "民族名称")
|
||||
private String nationName;
|
||||
//人脸照片url
|
||||
@ApiModelProperty(value = "人脸照片url")
|
||||
private String userAvatarUrl;
|
||||
//现住址
|
||||
@ApiModelProperty(value = "现住址")
|
||||
private String currentAddress;
|
||||
//户口所在地
|
||||
@ApiModelProperty(value = "户口所在地")
|
||||
private String locationAddress;
|
||||
//文化程度 数据字典
|
||||
@ApiModelProperty(value = "文化程度 数据字典")
|
||||
private String culturalLevel;
|
||||
//文化程度名称
|
||||
@ApiModelProperty(value = "文化程度名称")
|
||||
private String culturalLevelName;
|
||||
//婚姻状态
|
||||
@ApiModelProperty(value = "婚姻状态")
|
||||
private String maritalStatus;
|
||||
//婚姻状态名称
|
||||
@ApiModelProperty(value = "婚姻状态名称")
|
||||
private String maritalStatusName;
|
||||
//政治面貌
|
||||
@ApiModelProperty(value = "政治面貌")
|
||||
private String politicalAffiliation;
|
||||
//政治面貌名称
|
||||
@ApiModelProperty(value = "政治面貌名称")
|
||||
private String politicalAffiliationName;
|
||||
//岗位名称
|
||||
@ApiModelProperty(value = "岗位名称")
|
||||
private String postName;
|
||||
//签到状态 0-未签到 1-已签到
|
||||
@ApiModelProperty(value = "签到状态 0-未签到 1-已签到")
|
||||
private Integer signFlag;
|
||||
//考试签到状态 0-未签到 1-已签到
|
||||
@ApiModelProperty(value = "考试签到状态 0-未签到 1-已签到")
|
||||
private Integer examSignFlag;
|
||||
//学员状态 0-未学习 1-已签到 2-考试通过 3-未签到 4-考试未通过
|
||||
@ApiModelProperty(value = "学员状态 0-未学习 1-已签到 2-考试通过 3-未签到 4-考试未通过")
|
||||
private Integer state;
|
||||
|
||||
|
||||
//班级名称
|
||||
@ApiModelProperty(value = "班级名称")
|
||||
private String className;
|
||||
//培训日期 开始时间
|
||||
@ApiModelProperty(value = "培训日期 开始时间")
|
||||
private String startTime;
|
||||
//培训日期 结束日期
|
||||
@ApiModelProperty(value = "培训日期 结束日期")
|
||||
private String endTime;
|
||||
//培训教师id
|
||||
@ApiModelProperty(value = "培训教师id")
|
||||
private Long teacherId;
|
||||
//教师名称
|
||||
@ApiModelProperty(value = "教师名称")
|
||||
private String teacherName;
|
||||
//培训行业类型
|
||||
@ApiModelProperty(value = "培训行业类型")
|
||||
private String trainType;
|
||||
//培训行业类型名称
|
||||
@ApiModelProperty(value = "培训行业类型名称")
|
||||
private String trainTypeName;
|
||||
//培训地点
|
||||
@ApiModelProperty(value = "培训地点")
|
||||
private String trainingLocation;
|
||||
//机构ID
|
||||
@ApiModelProperty(value = "机构ID")
|
||||
private Long corpinfoId;
|
||||
//状态:1-未申请 2-待开班 3- 培训中 4-培训结束
|
||||
@ApiModelProperty(value = "状态:1-未申请 2-待开班 3- 培训中 4-培训结束 ")
|
||||
private Integer classState;
|
||||
//培训有效期日期 开始时间
|
||||
@ApiModelProperty(value = "培训有效期日期 开始时间")
|
||||
private String validStartTime;
|
||||
//培训有效期日期 结束时间
|
||||
@ApiModelProperty(value = "培训有效期日期 结束时间")
|
||||
private String validEndTime;
|
||||
//1考试0不考试
|
||||
@ApiModelProperty(value = "1考试0不考试")
|
||||
private Integer examination;
|
||||
//考试次数只有考试时候有用
|
||||
@ApiModelProperty(value = "考试次数只有考试时候有用")
|
||||
private Integer numberofexams;
|
||||
@ApiModelProperty(value = "培训时长")
|
||||
private Long trainDurationTime;
|
||||
@ApiModelProperty(value = "培训科目")
|
||||
private String trainSubject;
|
||||
|
||||
@ApiModelProperty(value = "视频时长")
|
||||
private BigDecimal videoTotalTime;
|
||||
@ApiModelProperty(value = "课件数")
|
||||
private Integer videoCount;
|
||||
|
||||
@ApiModelProperty(value = "打卡签到人脸图片路径")
|
||||
private String signFaceUrl;
|
||||
@ApiModelProperty(value = "考试签到人脸图片路径")
|
||||
private String examSignFaceUrl;
|
||||
}
|
||||
|
|
@ -25,6 +25,8 @@ public class ClassAppSignQry {
|
|||
*/
|
||||
private String classId;
|
||||
private String phone;
|
||||
private Long stuId;
|
||||
private String studentId;
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
package com.zcloud.edu.dto.study;
|
||||
|
||||
import com.alibaba.cola.dto.PageQuery;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* web-client
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-13 14:18:12
|
||||
*/
|
||||
@Data
|
||||
public class ClassCountQry {
|
||||
|
||||
/**
|
||||
* 查询条件操作前缀,支持以下几种数据库查询操作:
|
||||
* - `like`: 模糊匹配查询,对应SQL的LIKE操作符
|
||||
* - `eq`: 等值查询,对应SQL的=操作符
|
||||
* - `gt`: 大于比较查询
|
||||
* - `lt`: 小于比较查询
|
||||
* - `ge`: 大于等于比较查询
|
||||
* - `le`: 小于等于比较查询
|
||||
* - `ne`: 不等比较查询,对应SQL的!=操作符
|
||||
*/
|
||||
private List<String> phones;
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -24,9 +24,11 @@ import javax.validation.constraints.NotNull;
|
|||
public class StudentSignAddCmd extends Command {
|
||||
|
||||
@ApiModelProperty(value = "班级id", name = "classId", required = true)
|
||||
@NotEmpty(message = "班级id不能为空")
|
||||
private String classId;
|
||||
|
||||
@ApiModelProperty(value = "学员id", name = "studentId", required = true)
|
||||
private String studentId;
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -35,7 +37,6 @@ public class StudentSignAddCmd extends Command {
|
|||
private Integer type;
|
||||
|
||||
@ApiModelProperty(value = "手机号", name = "phone", required = true)
|
||||
@NotEmpty(message = "手机号不能为空")
|
||||
private String phone;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
package com.zcloud.edu.domain.gateway.archives;
|
||||
|
||||
|
||||
import com.zcloud.edu.domain.model.archives.ArchivesReviewE;
|
||||
|
||||
/**
|
||||
* web-domain
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:35
|
||||
*/
|
||||
public interface ArchivesReviewGateway {
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*/
|
||||
Boolean add(ArchivesReviewE archivesReviewE);
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*/
|
||||
Boolean update(ArchivesReviewE archivesReviewE);
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
Boolean deletedArchivesReviewById(Long id);
|
||||
|
||||
Boolean deletedArchivesReviewByIds(Long[] id);
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
package com.zcloud.edu.domain.gateway.archives;
|
||||
|
||||
|
||||
import com.zcloud.edu.domain.model.archives.ArchivesReviewRecordE;
|
||||
|
||||
/**
|
||||
* web-domain
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:37
|
||||
*/
|
||||
public interface ArchivesReviewRecordGateway {
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*/
|
||||
Boolean add(ArchivesReviewRecordE archivesReviewRecordE);
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*/
|
||||
Boolean update(ArchivesReviewRecordE archivesReviewRecordE);
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
Boolean deletedArchivesReviewRecordById(Long id);
|
||||
|
||||
Boolean deletedArchivesReviewRecordByIds(Long[] id);
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
package com.zcloud.edu.domain.model.archives;
|
||||
|
||||
import com.jjb.saas.framework.domain.model.BaseE;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* web-domain
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:34
|
||||
*/
|
||||
@Data
|
||||
public class ArchivesReviewE extends BaseE {
|
||||
private Long id;
|
||||
//业务id
|
||||
private String archivesReviewId;
|
||||
//课程id
|
||||
private String classCurriculumId;
|
||||
//班级id
|
||||
private String classId;
|
||||
//初版书号
|
||||
private String bookNum;
|
||||
//班级所属企业id
|
||||
private Integer corpinfoId;
|
||||
//编写单位
|
||||
private String corpName;
|
||||
//编写时间
|
||||
private LocalDateTime writeDate;
|
||||
//教材类型
|
||||
private String materialType;
|
||||
//会审地点
|
||||
private String address;
|
||||
//主持人
|
||||
private String compere;
|
||||
//会审时间
|
||||
private LocalDateTime auditDate;
|
||||
//会审意见
|
||||
private String reviewOpinions;
|
||||
//删除标识true false
|
||||
private String deleteEnum;
|
||||
//备注
|
||||
private String remarks;
|
||||
//创建人姓名
|
||||
private String createName;
|
||||
//更新人姓名
|
||||
private String updateName;
|
||||
//租户id
|
||||
private Long tenantId;
|
||||
//单位id
|
||||
private Long orgId;
|
||||
//版本
|
||||
private Integer version;
|
||||
//创建时间
|
||||
private LocalDateTime createTime;
|
||||
//修改时间
|
||||
private LocalDateTime updateTime;
|
||||
//创建人id
|
||||
private Long createId;
|
||||
//修改人id
|
||||
private Long updateId;
|
||||
//环境
|
||||
private String env;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
package com.zcloud.edu.domain.model.archives;
|
||||
|
||||
import com.jjb.saas.framework.domain.model.BaseE;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* web-domain
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:36
|
||||
*/
|
||||
@Data
|
||||
public class ArchivesReviewRecordE extends BaseE {
|
||||
//主键
|
||||
private Long id;
|
||||
//业务id
|
||||
private String archivesReviewRecordId;
|
||||
//会审表id
|
||||
private String archivesReviewId;
|
||||
//会审人员
|
||||
private String reviewUser;
|
||||
//工作部门
|
||||
private String department;
|
||||
//职务/职称
|
||||
private String duties;
|
||||
//审查意见
|
||||
private String checkOpinion;
|
||||
//删除标识true false
|
||||
private String deleteEnum;
|
||||
//备注
|
||||
private String remarks;
|
||||
//创建人姓名
|
||||
private String createName;
|
||||
//更新人姓名
|
||||
private String updateName;
|
||||
//租户id
|
||||
private Long tenantId;
|
||||
//单位id
|
||||
private Long orgId;
|
||||
//版本
|
||||
private Integer version;
|
||||
//创建时间
|
||||
private LocalDateTime createTime;
|
||||
//修改时间
|
||||
private LocalDateTime updateTime;
|
||||
//创建人id
|
||||
private Long createId;
|
||||
//修改人id
|
||||
private Long updateId;
|
||||
//环境
|
||||
private String env;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,232 @@
|
|||
package com.zcloud.edu.domain.model.archives;
|
||||
|
||||
import com.jjb.saas.framework.domain.model.BaseE;
|
||||
import com.zcloud.edu.domain.model.study.*;
|
||||
import com.zcloud.gbscommon.utils.DateUtil;
|
||||
import groovy.lang.BenchmarkInterceptor;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author zhangyue
|
||||
* @date 2026/1/26 17:38
|
||||
*/
|
||||
@Data
|
||||
public class PersonArchivesE extends BaseE {
|
||||
|
||||
private Long stuId;
|
||||
//业务id
|
||||
@ApiModelProperty(value = "业务id")
|
||||
private String studentId;
|
||||
//学员userid
|
||||
@ApiModelProperty(value = "学员userid")
|
||||
private Integer userId;
|
||||
//班级id
|
||||
@ApiModelProperty(value = "班级id")
|
||||
private String classId;
|
||||
//学员姓名
|
||||
@ApiModelProperty(value = "学员姓名")
|
||||
private String name;
|
||||
//学员所属班级的企业id
|
||||
@ApiModelProperty(value = "学员所属班级的企业id")
|
||||
private Long classCorpinfoId;
|
||||
//手机号
|
||||
@ApiModelProperty(value = "手机号")
|
||||
private String phone;
|
||||
//身份证号
|
||||
@ApiModelProperty(value = "身份证号")
|
||||
private String userIdCard;
|
||||
//民族编码
|
||||
@ApiModelProperty(value = "民族编码")
|
||||
private String nation;
|
||||
//民族名称
|
||||
@ApiModelProperty(value = "民族名称")
|
||||
private String nationName;
|
||||
//人脸照片url
|
||||
@ApiModelProperty(value = "人脸照片url")
|
||||
private String userAvatarUrl;
|
||||
//现住址
|
||||
@ApiModelProperty(value = "现住址")
|
||||
private String currentAddress;
|
||||
//户口所在地
|
||||
@ApiModelProperty(value = "户口所在地")
|
||||
private String locationAddress;
|
||||
//文化程度 数据字典
|
||||
@ApiModelProperty(value = "文化程度 数据字典")
|
||||
private String culturalLevel;
|
||||
//文化程度名称
|
||||
@ApiModelProperty(value = "文化程度名称")
|
||||
private String culturalLevelName;
|
||||
//婚姻状态
|
||||
@ApiModelProperty(value = "婚姻状态")
|
||||
private String maritalStatus;
|
||||
//婚姻状态名称
|
||||
@ApiModelProperty(value = "婚姻状态名称")
|
||||
private String maritalStatusName;
|
||||
//政治面貌
|
||||
@ApiModelProperty(value = "政治面貌")
|
||||
private String politicalAffiliation;
|
||||
//政治面貌名称
|
||||
@ApiModelProperty(value = "政治面貌名称")
|
||||
private String politicalAffiliationName;
|
||||
//岗位名称
|
||||
@ApiModelProperty(value = "岗位名称")
|
||||
private String postName;
|
||||
//签到状态 0-未签到 1-已签到
|
||||
@ApiModelProperty(value = "签到状态 0-未签到 1-已签到")
|
||||
private Integer signFlag;
|
||||
//考试签到状态 0-未签到 1-已签到
|
||||
@ApiModelProperty(value = "考试签到状态 0-未签到 1-已签到")
|
||||
private Integer examSignFlag;
|
||||
//学员状态 0-未学习 1-已签到 2-考试通过 3-未签到 4-考试未通过
|
||||
@ApiModelProperty(value = "学员状态 0-未学习 1-已签到 2-考试通过 3-未签到 4-考试未通过")
|
||||
private Integer state;
|
||||
|
||||
|
||||
//班级名称
|
||||
@ApiModelProperty(value = "班级名称")
|
||||
private String className;
|
||||
//培训日期 开始时间
|
||||
@ApiModelProperty(value = "培训日期 开始时间")
|
||||
private String startTime;
|
||||
//培训日期 结束日期
|
||||
@ApiModelProperty(value = "培训日期 结束日期")
|
||||
private String endTime;
|
||||
//培训教师id
|
||||
@ApiModelProperty(value = "培训教师id")
|
||||
private Long teacherId;
|
||||
//教师名称
|
||||
@ApiModelProperty(value = "教师名称")
|
||||
private String teacherName;
|
||||
//培训行业类型
|
||||
@ApiModelProperty(value = "培训行业类型")
|
||||
private String trainType;
|
||||
//培训行业类型名称
|
||||
@ApiModelProperty(value = "培训行业类型名称")
|
||||
private String trainTypeName;
|
||||
//培训地点
|
||||
@ApiModelProperty(value = "培训地点")
|
||||
private String trainingLocation;
|
||||
//机构ID
|
||||
@ApiModelProperty(value = "机构ID")
|
||||
private Long corpinfoId;
|
||||
//状态:1-未申请 2-待开班 3- 培训中 4-培训结束
|
||||
@ApiModelProperty(value = "状态:1-未申请 2-待开班 3- 培训中 4-培训结束 ")
|
||||
private Integer classState;
|
||||
//培训有效期日期 开始时间
|
||||
@ApiModelProperty(value = "培训有效期日期 开始时间")
|
||||
private String validStartTime;
|
||||
//培训有效期日期 结束时间
|
||||
@ApiModelProperty(value = "培训有效期日期 结束时间")
|
||||
private String validEndTime;
|
||||
//1考试0不考试
|
||||
@ApiModelProperty(value = "1考试0不考试")
|
||||
private Integer examination;
|
||||
//考试次数只有考试时候有用
|
||||
@ApiModelProperty(value = "考试次数只有考试时候有用")
|
||||
private Integer numberofexams;
|
||||
@ApiModelProperty(value = "培训时长")
|
||||
private Long trainDurationTime;
|
||||
@ApiModelProperty(value = "培训科目")
|
||||
private String trainSubject;
|
||||
@ApiModelProperty(value = "视频时长")
|
||||
private BigDecimal videoTotalTime;
|
||||
@ApiModelProperty(value = "课件数")
|
||||
private Integer videoCount;
|
||||
@ApiModelProperty(value = "打卡签到人脸图片路径")
|
||||
private String signFaceUrl;
|
||||
@ApiModelProperty(value = "考试签到人脸图片路径")
|
||||
private String examSignFaceUrl;
|
||||
|
||||
public void init(StudentE studentE, ClassE classE, List<ClassCurriculumE> classCurList) {
|
||||
BeanUtils.copyProperties(studentE, this);
|
||||
setStuId(studentE.getId());
|
||||
setClassName(classE.getName());
|
||||
setStartTime(classE.getStartTime());
|
||||
setEndTime(classE.getEndTime());
|
||||
setTeacherId(classE.getTeacherId());
|
||||
setTeacherName(classE.getTeacherName());
|
||||
setTrainType(classE.getTrainType());
|
||||
setTrainTypeName(classE.getTrainTypeName());
|
||||
setTrainingLocation(classE.getTrainingLocation());
|
||||
setCorpinfoId(classE.getCorpinfoId());
|
||||
setClassState(classE.getState());
|
||||
setValidStartTime(classE.getValidStartTime());
|
||||
setValidEndTime(classE.getValidEndTime());
|
||||
setExamination(classE.getExamination());
|
||||
setNumberofexams(classE.getNumberofexams());
|
||||
String trainSubject = classCurList.stream().map(ClassCurriculumE::getCurriculumName).collect(Collectors.joining(","));
|
||||
setTrainSubject(trainSubject);
|
||||
setTrainDurationTime(DateUtil.getMinuteSub(classE.getStartTime(), classE.getEndTime()));
|
||||
}
|
||||
|
||||
public void initAttendanceRecord(StudentE studentE, ClassE classE, List<ClassCurriculumChapterE> chapterEList, List<ClassCurriculumE> classCurList) {
|
||||
BeanUtils.copyProperties(studentE, this);
|
||||
setStuId(studentE.getId());
|
||||
setClassName(classE.getName());
|
||||
setStartTime(classE.getStartTime());
|
||||
setEndTime(classE.getEndTime());
|
||||
setTeacherId(classE.getTeacherId());
|
||||
setTeacherName(classE.getTeacherName());
|
||||
setTrainType(classE.getTrainType());
|
||||
setTrainTypeName(classE.getTrainTypeName());
|
||||
setTrainingLocation(classE.getTrainingLocation());
|
||||
setCorpinfoId(classE.getCorpinfoId());
|
||||
setClassState(classE.getState());
|
||||
setValidStartTime(classE.getValidStartTime());
|
||||
setValidEndTime(classE.getValidEndTime());
|
||||
setExamination(classE.getExamination());
|
||||
setNumberofexams(classE.getNumberofexams());
|
||||
setVideoCount(chapterEList.size());
|
||||
BigDecimal videoTotalTime = classCurList.stream()
|
||||
.map(ClassCurriculumE::getVideoTotalTime) // 假设getBigDecimalField是获取BigDecimal字段的方法
|
||||
.filter(bigDecimal -> bigDecimal != null) // 过滤null值,防止空指针异常
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
setVideoTotalTime(videoTotalTime);
|
||||
}
|
||||
public void initStudyRecord(StudentE studentE, ClassE classE, List<StudentSignE> studentSignEList, List<ClassCurriculumE> classCurList) {
|
||||
BeanUtils.copyProperties(studentE, this);
|
||||
setStuId(studentE.getId());
|
||||
setClassName(classE.getName());
|
||||
setStartTime(classE.getStartTime());
|
||||
setEndTime(classE.getEndTime());
|
||||
setTeacherId(classE.getTeacherId());
|
||||
setTeacherName(classE.getTeacherName());
|
||||
setTrainType(classE.getTrainType());
|
||||
setTrainTypeName(classE.getTrainTypeName());
|
||||
setTrainingLocation(classE.getTrainingLocation());
|
||||
setCorpinfoId(classE.getCorpinfoId());
|
||||
setClassState(classE.getState());
|
||||
setValidStartTime(classE.getValidStartTime());
|
||||
setValidEndTime(classE.getValidEndTime());
|
||||
setExamination(classE.getExamination());
|
||||
setNumberofexams(classE.getNumberofexams());
|
||||
BigDecimal videoTotalTime = classCurList.stream()
|
||||
.map(ClassCurriculumE::getVideoTotalTime) // 假设getBigDecimalField是获取BigDecimal字段的方法
|
||||
.filter(bigDecimal -> bigDecimal != null) // 过滤null值,防止空指针异常
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
String trainSubject = classCurList.stream().map(ClassCurriculumE::getCurriculumName).collect(Collectors.joining(","));
|
||||
setTrainSubject(trainSubject);
|
||||
setVideoTotalTime(videoTotalTime);
|
||||
if (studentSignEList != null && studentSignEList.size() > 0){
|
||||
for (StudentSignE studentSignE : studentSignEList){
|
||||
if(studentSignE.getType() == 1
|
||||
&& !ObjectUtils.isEmpty(studentSignE.getFaceUrl())
|
||||
&& ObjectUtils.isEmpty(this.getSignFaceUrl()) ){
|
||||
this.setSignFaceUrl(studentSignE.getFaceUrl());
|
||||
}
|
||||
if(studentSignE.getType() == 2
|
||||
&& !ObjectUtils.isEmpty(studentSignE.getFaceUrl())
|
||||
&& ObjectUtils.isEmpty(this.getExamSignFaceUrl()) ){
|
||||
this.setExamSignFaceUrl(studentSignE.getFaceUrl());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -100,5 +100,11 @@ public class ClassCurriculumE extends BaseE {
|
|||
});
|
||||
}
|
||||
|
||||
public HashMap<String, Object> initListAllParams(String classId){
|
||||
HashMap<String, Object> params = new HashMap<String, Object>();
|
||||
params.put("classId", classId);
|
||||
return params;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ public class ClassE extends BaseE {
|
|||
public void isBegin(){
|
||||
if(DateUtil.isBeforeThan(this.startTime)){
|
||||
throw new RuntimeException("班级未开班");
|
||||
} else if(DateUtil.isBeforeThan(this.endTime)){
|
||||
} else if(DateUtil.isAfter(this.endTime)){
|
||||
throw new RuntimeException("班级已结束");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import com.zcloud.gbscommon.utils.Base64Util;
|
|||
import com.zcloud.gbscommon.utils.FaceUtil;
|
||||
import com.zcloud.gbscommon.utils.Tools;
|
||||
import com.zcloud.gbscommon.zcloudimgfiles.facade.ZcloudImgFilesFacade;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.apache.tomcat.util.http.fileupload.ByteArrayOutputStream;
|
||||
|
|
@ -39,6 +40,8 @@ public class StudentSignE extends BaseE {
|
|||
private Long corpinfoId;
|
||||
//签到人脸路径
|
||||
private String faceUrl;
|
||||
//打卡签字路径
|
||||
private String signUrl;
|
||||
//签到类型 1-打卡签到 2-人脸签到
|
||||
private Integer type;
|
||||
|
||||
|
|
@ -73,8 +76,7 @@ public class StudentSignE extends BaseE {
|
|||
@DubboReference
|
||||
private ZcloudImgFilesFacade zcloudImgFilesFacade;
|
||||
|
||||
public void compareFace(String templateFaceUrl) throws Exception {
|
||||
String faceUrl = Base64Util.getBase64String(files[0]);
|
||||
public void compareFace(String templateFaceUrl, String faceUrl) throws Exception {
|
||||
String templateFace = Base64Util.urlToBase64(prefixUrl + templateFaceUrl);
|
||||
String confidence = FaceUtil.compareFace(templateFace, faceUrl);
|
||||
|
||||
|
|
@ -83,6 +85,10 @@ public class StudentSignE extends BaseE {
|
|||
}
|
||||
this.setStudentSignId(Tools.get32UUID());
|
||||
}
|
||||
|
||||
public void init(String studentId, String classId, long corpinfoId){
|
||||
this.setStudentId(studentId);
|
||||
this.setClassId(classId);
|
||||
this.setCorpinfoId(corpinfoId);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,50 @@
|
|||
package com.zcloud.edu.gatewayimpl.archives;
|
||||
|
||||
import com.zcloud.edu.domain.gateway.archives.ArchivesReviewGateway;
|
||||
import com.zcloud.edu.domain.model.archives.ArchivesReviewE;
|
||||
import com.zcloud.edu.persistence.dataobject.archives.ArchivesReviewDO;
|
||||
import com.zcloud.edu.persistence.repository.archives.ArchivesReviewRepository;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* web-infrastructure
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:35
|
||||
*/
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
public class ArchivesReviewGatewayImpl implements ArchivesReviewGateway {
|
||||
private final ArchivesReviewRepository archivesReviewRepository;
|
||||
|
||||
@Override
|
||||
public Boolean add(ArchivesReviewE archivesReviewE) {
|
||||
ArchivesReviewDO d = new ArchivesReviewDO();
|
||||
BeanUtils.copyProperties(archivesReviewE, d);
|
||||
archivesReviewRepository.save(d);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean update(ArchivesReviewE archivesReviewE) {
|
||||
ArchivesReviewDO d = new ArchivesReviewDO();
|
||||
BeanUtils.copyProperties(archivesReviewE, d);
|
||||
archivesReviewRepository.updateById(d);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean deletedArchivesReviewById(Long id) {
|
||||
return archivesReviewRepository.removeById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean deletedArchivesReviewByIds(Long[] ids) {
|
||||
return archivesReviewRepository.removeByIds(Arrays.asList(ids));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
package com.zcloud.edu.gatewayimpl.archives;
|
||||
|
||||
import com.zcloud.edu.domain.gateway.archives.ArchivesReviewRecordGateway;
|
||||
import com.zcloud.edu.domain.model.archives.ArchivesReviewRecordE;
|
||||
import com.zcloud.edu.persistence.dataobject.archives.ArchivesReviewRecordDO;
|
||||
import com.zcloud.edu.persistence.repository.archives.ArchivesReviewRecordRepository;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
/**
|
||||
* web-infrastructure
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:37
|
||||
*/
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
public class ArchivesReviewRecordGatewayImpl implements ArchivesReviewRecordGateway {
|
||||
private final ArchivesReviewRecordRepository archivesReviewRecordRepository;
|
||||
|
||||
@Override
|
||||
public Boolean add(ArchivesReviewRecordE archivesReviewRecordE) {
|
||||
ArchivesReviewRecordDO d = new ArchivesReviewRecordDO();
|
||||
BeanUtils.copyProperties(archivesReviewRecordE, d);
|
||||
archivesReviewRecordRepository.save(d);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean update(ArchivesReviewRecordE archivesReviewRecordE) {
|
||||
ArchivesReviewRecordDO d = new ArchivesReviewRecordDO();
|
||||
BeanUtils.copyProperties(archivesReviewRecordE, d);
|
||||
archivesReviewRecordRepository.updateById(d);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean deletedArchivesReviewRecordById(Long id) {
|
||||
return archivesReviewRecordRepository.removeById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean deletedArchivesReviewRecordByIds(Long[] ids) {
|
||||
return archivesReviewRecordRepository.removeByIds(Collections.singletonList(ids));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -26,6 +26,7 @@ public class StudentSignGatewayImpl implements StudentSignGateway {
|
|||
StudentSignDO d = new StudentSignDO();
|
||||
BeanUtils.copyProperties(studentSignE, d);
|
||||
studentSignRepository.save(d);
|
||||
studentSignE.setId(d.getId());
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,62 @@
|
|||
package com.zcloud.edu.persistence.dataobject.archives;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.jjb.saas.framework.repository.basedo.BaseDO;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* web-infrastructure
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:34
|
||||
*/
|
||||
@Data
|
||||
@TableName("archives_review")
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class ArchivesReviewDO extends BaseDO {
|
||||
//业务id
|
||||
@ApiModelProperty(value = "业务id")
|
||||
private String archivesReviewId;
|
||||
//课程id
|
||||
@ApiModelProperty(value = "课程id")
|
||||
private String classCurriculumId;
|
||||
//班级id
|
||||
@ApiModelProperty(value = "班级id")
|
||||
private String classId;
|
||||
//初版书号
|
||||
@ApiModelProperty(value = "初版书号")
|
||||
private String bookNum;
|
||||
//班级所属企业id
|
||||
@ApiModelProperty(value = "班级所属企业id")
|
||||
private Integer corpinfoId;
|
||||
//编写单位
|
||||
@ApiModelProperty(value = "编写单位")
|
||||
private String corpName;
|
||||
//编写时间
|
||||
@ApiModelProperty(value = "编写时间")
|
||||
private LocalDateTime writeDate;
|
||||
//教材类型
|
||||
@ApiModelProperty(value = "教材类型")
|
||||
private String materialType;
|
||||
//会审地点
|
||||
@ApiModelProperty(value = "会审地点")
|
||||
private String address;
|
||||
//主持人
|
||||
@ApiModelProperty(value = "主持人")
|
||||
private String compere;
|
||||
//会审时间
|
||||
@ApiModelProperty(value = "会审时间")
|
||||
private LocalDateTime auditDate;
|
||||
//会审意见
|
||||
@ApiModelProperty(value = "会审意见")
|
||||
private String reviewOpinions;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
package com.zcloud.edu.persistence.dataobject.archives;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.jjb.saas.framework.repository.basedo.BaseDO;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* web-infrastructure
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:37
|
||||
*/
|
||||
@Data
|
||||
@TableName("archives_review_record")
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class ArchivesReviewRecordDO extends BaseDO {
|
||||
//业务id
|
||||
@ApiModelProperty(value = "业务id")
|
||||
private String archivesReviewRecordId;
|
||||
//会审表id
|
||||
@ApiModelProperty(value = "会审表id")
|
||||
private String archivesReviewId;
|
||||
//会审人员
|
||||
@ApiModelProperty(value = "会审人员")
|
||||
private String reviewUser;
|
||||
//工作部门
|
||||
@ApiModelProperty(value = "工作部门")
|
||||
private String department;
|
||||
//职务/职称
|
||||
@ApiModelProperty(value = "职务/职称")
|
||||
private String duties;
|
||||
//审查意见
|
||||
@ApiModelProperty(value = "审查意见")
|
||||
private String checkOpinion;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -75,5 +75,15 @@ public class ClassDO extends BaseDO {
|
|||
@TableField(exist = false)
|
||||
private Integer finishCount = 0;
|
||||
|
||||
@ApiModelProperty(value = "学员id(雪花)")
|
||||
@TableField(exist = false)
|
||||
private Long stuId;
|
||||
|
||||
@ApiModelProperty(value = "学员id(uuid)")
|
||||
@TableField(exist = false)
|
||||
private String studentId;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -97,5 +97,13 @@ public class StudentDO extends BaseDO {
|
|||
@ApiModelProperty(value = "项目名称集合")
|
||||
private String projectNames;
|
||||
|
||||
@ApiModelProperty(value = "班级数")
|
||||
@TableField(exist = false)
|
||||
private Integer classCount;
|
||||
|
||||
@ApiModelProperty(value = "完成班级数")
|
||||
@TableField(exist = false)
|
||||
private Integer completeClassCount;
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.zcloud.edu.persistence.dataobject.study;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.jjb.saas.framework.repository.basedo.BaseDO;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
|
@ -61,6 +62,13 @@ public class StudentExamRecordDO extends BaseDO {
|
|||
@ApiModelProperty(value = "考试结果 0 -不通过 1-通过")
|
||||
private Integer result;
|
||||
|
||||
@ApiModelProperty(value = "学员考试签到id")
|
||||
private String studentSignId;
|
||||
|
||||
@ApiModelProperty(value = "考试签字")
|
||||
@TableField(exist = false)
|
||||
private String signUrl;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -46,6 +46,10 @@ public class StudentSignDO extends BaseDO {
|
|||
@ApiModelProperty(value = "签到人脸路径")
|
||||
private String faceUrl;
|
||||
|
||||
//打卡签字路径
|
||||
@ApiModelProperty(value = "打卡签字路径")
|
||||
private String signUrl;
|
||||
|
||||
//签到类型 1-打卡签到 2-人脸签到
|
||||
@ApiModelProperty(value = "签到类型 1-打卡签到 2-人脸签到")
|
||||
private Integer type;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
package com.zcloud.edu.persistence.mapper.archives;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.zcloud.edu.persistence.dataobject.archives.ArchivesReviewDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* web-infrastructure
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:35
|
||||
*/
|
||||
@Mapper
|
||||
public interface ArchivesReviewMapper extends BaseMapper<ArchivesReviewDO> {
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
package com.zcloud.edu.persistence.mapper.archives;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.zcloud.edu.persistence.dataobject.archives.ArchivesReviewRecordDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* web-infrastructure
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:37
|
||||
*/
|
||||
@Mapper
|
||||
public interface ArchivesReviewRecordMapper extends BaseMapper<ArchivesReviewRecordDO> {
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -3,6 +3,7 @@ package com.zcloud.edu.persistence.mapper.study;
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.zcloud.edu.persistence.dataobject.study.StudentExamRecordDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* web-infrastructure
|
||||
|
|
@ -12,6 +13,7 @@ import org.apache.ibatis.annotations.Mapper;
|
|||
*/
|
||||
@Mapper
|
||||
public interface StudentExamRecordMapper extends BaseMapper<StudentExamRecordDO> {
|
||||
StudentExamRecordDO getInfoByStudentId(@Param("studentId") String studentId);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -25,5 +25,8 @@ public interface StudentMapper extends BaseMapper<StudentDO> {
|
|||
StudentDO findByClassIdAndPhone(@Param("classId") String classId, @Param("phone") String phone);
|
||||
StudentDO findFaceUrlByPhone(@Param("phone") String phone);
|
||||
|
||||
List<StudentDO> countStuClass(@Param("params") Map<String, Object> params);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
package com.zcloud.edu.persistence.repository.archives;
|
||||
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.jjb.saas.framework.repository.repo.BaseRepository;
|
||||
import com.zcloud.edu.persistence.dataobject.archives.ArchivesReviewRecordDO;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* web-infrastructure
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:37
|
||||
*/
|
||||
public interface ArchivesReviewRecordRepository extends BaseRepository<ArchivesReviewRecordDO> {
|
||||
PageResponse<ArchivesReviewRecordDO> listPage(Map<String, Object> params);
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package com.zcloud.edu.persistence.repository.archives;
|
||||
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.jjb.saas.framework.repository.repo.BaseRepository;
|
||||
import com.zcloud.edu.persistence.dataobject.archives.ArchivesReviewDO;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* web-infrastructure
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:35
|
||||
*/
|
||||
public interface ArchivesReviewRepository extends BaseRepository<ArchivesReviewDO> {
|
||||
PageResponse<ArchivesReviewDO> listPage(Map<String, Object> params);
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
package com.zcloud.edu.persistence.repository.impl.archives;
|
||||
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.jjb.saas.framework.repository.common.PageHelper;
|
||||
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
|
||||
import com.zcloud.edu.persistence.dataobject.archives.ArchivesReviewRecordDO;
|
||||
import com.zcloud.edu.persistence.mapper.archives.ArchivesReviewRecordMapper;
|
||||
import com.zcloud.edu.persistence.repository.archives.ArchivesReviewRecordRepository;
|
||||
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
||||
import com.zcloud.gbscommon.utils.Query;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* web-infrastructure
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:37
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class ArchivesReviewRecordRepositoryImpl extends BaseRepositoryImpl<ArchivesReviewRecordMapper, ArchivesReviewRecordDO> implements ArchivesReviewRecordRepository {
|
||||
private final ArchivesReviewRecordMapper archivesReviewRecordMapper;
|
||||
|
||||
@Override
|
||||
public PageResponse<ArchivesReviewRecordDO> listPage(Map<String, Object> params) {
|
||||
IPage<ArchivesReviewRecordDO> iPage = new Query<ArchivesReviewRecordDO>().getPage(params);
|
||||
QueryWrapper<ArchivesReviewRecordDO> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params);
|
||||
queryWrapper.orderByDesc("create_time");
|
||||
IPage<ArchivesReviewRecordDO> result = archivesReviewRecordMapper.selectPage(iPage, queryWrapper);
|
||||
return PageHelper.pageToResponse(result, result.getRecords());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
package com.zcloud.edu.persistence.repository.impl.archives;
|
||||
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.jjb.saas.framework.repository.common.PageHelper;
|
||||
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
|
||||
import com.zcloud.edu.persistence.dataobject.archives.ArchivesReviewDO;
|
||||
import com.zcloud.edu.persistence.mapper.archives.ArchivesReviewMapper;
|
||||
import com.zcloud.edu.persistence.repository.archives.ArchivesReviewRepository;
|
||||
import com.zcloud.gbscommon.utils.PageQueryHelper;
|
||||
import com.zcloud.gbscommon.utils.Query;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* web-infrastructure
|
||||
*
|
||||
* @Author zhangyue
|
||||
* @Date 2026-01-26 10:59:35
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class ArchivesReviewRepositoryImpl extends BaseRepositoryImpl<ArchivesReviewMapper, ArchivesReviewDO> implements ArchivesReviewRepository {
|
||||
private final ArchivesReviewMapper archivesReviewMapper;
|
||||
|
||||
@Override
|
||||
public PageResponse<ArchivesReviewDO> listPage(Map<String, Object> params) {
|
||||
IPage<ArchivesReviewDO> iPage = new Query<ArchivesReviewDO>().getPage(params);
|
||||
QueryWrapper<ArchivesReviewDO> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params);
|
||||
queryWrapper.orderByDesc("create_time");
|
||||
IPage<ArchivesReviewDO> result = archivesReviewMapper.selectPage(iPage, queryWrapper);
|
||||
return PageHelper.pageToResponse(result, result.getRecords());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -70,5 +70,15 @@ public class ClassCurriculumChapterRepositoryImpl extends BaseRepositoryImpl<Cla
|
|||
return classCurriculumChapterMapper.selectList(queryWrapper);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ClassCurriculumChapterDO> listVideoByClassId(String classId) {
|
||||
QueryWrapper<ClassCurriculumChapterDO> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("class_id", classId);
|
||||
queryWrapper.isNotNull("video_courseware_id");
|
||||
queryWrapper.ne("video_courseware_id", "");
|
||||
queryWrapper.eq("delete_enum", "FALSE");
|
||||
return classCurriculumChapterMapper.selectList(queryWrapper);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import com.zcloud.gbscommon.utils.Query;
|
|||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
|
|
@ -54,5 +55,14 @@ public class StudentExamRecordItemRepositoryImpl extends BaseRepositoryImpl<Stud
|
|||
updateWrapper.set("delete_enum", "TRUE");
|
||||
return studentExamRecordItemMapper.delete(updateWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StudentExamRecordItemDO> listByExamRecordId(String examRecordId) {
|
||||
QueryWrapper<StudentExamRecordItemDO> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("exam_record_id", examRecordId);
|
||||
queryWrapper.eq("delete_enum", "FALSE");
|
||||
queryWrapper.orderByDesc("create_time");
|
||||
return studentExamRecordItemMapper.selectList(queryWrapper);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -63,5 +63,10 @@ public class StudentExamRecordRepositoryImpl extends BaseRepositoryImpl<StudentE
|
|||
queryWrapper.eq("delete_enum", "FALSE");
|
||||
return studentExamRecordMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public StudentExamRecordDO getInfoByStudentId(String studentId) {
|
||||
return studentExamRecordMapper.getInfoByStudentId(studentId);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -84,5 +84,18 @@ public class StudentRepositoryImpl extends BaseRepositoryImpl<StudentMapper, Stu
|
|||
return studentMapper.findFaceUrlByPhone(phone);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StudentDO> countStuClass(Map<String, Object> params) {
|
||||
return studentMapper.countStuClass(params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public StudentDO findInfoByStudentId(String studentId) {
|
||||
QueryWrapper<StudentDO> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("student_id", studentId);
|
||||
queryWrapper.eq("delete_enum", "FALSE");
|
||||
return studentMapper.selectOne(queryWrapper);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ import com.zcloud.gbscommon.utils.PageQueryHelper;
|
|||
import com.zcloud.gbscommon.utils.Query;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
|
@ -59,7 +60,13 @@ public class StudentSignRepositoryImpl extends BaseRepositoryImpl<StudentSignMap
|
|||
QueryWrapper queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("student_id", params.get("studentId"));
|
||||
queryWrapper.eq("delete_enum", "FALSE");
|
||||
queryWrapper.eq("type", params.get("type"));
|
||||
if (!ObjectUtils.isEmpty(params.get("type"))){
|
||||
queryWrapper.eq("type", params.get("type"));
|
||||
}
|
||||
if (!ObjectUtils.isEmpty(params.get("orderCreateTime"))){
|
||||
queryWrapper.orderByDesc("create_time");
|
||||
}
|
||||
queryWrapper.isNotNull("sign_url");
|
||||
return studentSignMapper.selectList(queryWrapper);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,5 +23,7 @@ public interface ClassCurriculumChapterRepository extends BaseRepository<ClassCu
|
|||
Integer deleteByClassId(String classId);
|
||||
|
||||
List<ClassCurriculumChapterDO> listByClassCurriculumIds(List<String> classCurriculumIds);
|
||||
|
||||
List<ClassCurriculumChapterDO> listVideoByClassId(String classId);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import com.jjb.saas.framework.repository.repo.BaseRepository;
|
|||
import com.zcloud.edu.persistence.dataobject.study.StudentExamRecordItemDO;
|
||||
import io.swagger.models.auth.In;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
|
|
@ -19,5 +20,7 @@ public interface StudentExamRecordItemRepository extends BaseRepository<StudentE
|
|||
void deleteByStudentId(String studentId);
|
||||
|
||||
Integer deleteByClassId(String classId);
|
||||
|
||||
List<StudentExamRecordItemDO> listByExamRecordId(String examRecordId);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -21,5 +21,7 @@ public interface StudentExamRecordRepository extends BaseRepository<StudentExamR
|
|||
Integer deleteByClassId(String classId);
|
||||
|
||||
List<StudentExamRecordDO> listAllByStudentId(String studentId);
|
||||
|
||||
StudentExamRecordDO getInfoByStudentId(String studentId);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -31,6 +31,11 @@ public interface StudentRepository extends BaseRepository<StudentDO> {
|
|||
|
||||
StudentDO findFaceUrlByPhone(String phone);
|
||||
|
||||
List<StudentDO> countStuClass(Map<String, Object> params);
|
||||
|
||||
|
||||
StudentDO findInfoByStudentId(String studentId);
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -23,5 +23,6 @@ public interface StudentSignRepository extends BaseRepository<StudentSignDO> {
|
|||
|
||||
List<StudentSignDO> listAllByStudentId(Map<String, Object> params);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
|
||||
<mapper namespace="com.zcloud.edu.persistence.mapper.archives.ArchivesReviewMapper">
|
||||
|
||||
</mapper>
|
||||
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
|
||||
<mapper namespace="com.zcloud.edu.persistence.mapper.archives.ArchivesReviewRecordMapper">
|
||||
|
||||
</mapper>
|
||||
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
<select id="listByClassCurriculumId" resultType="com.zcloud.edu.persistence.dataobject.study.ClassCurriculumChapterDO">
|
||||
SELECT
|
||||
c.id,
|
||||
c.curriculum_chapter_id,
|
||||
c.class_curriculum_chapter_id,
|
||||
c.class_id,
|
||||
c.corpinfo_id,
|
||||
c.class_curriculum_id,
|
||||
|
|
@ -33,7 +33,7 @@
|
|||
<select id="listByClassCurriculumIds" resultType="com.zcloud.edu.persistence.dataobject.study.ClassCurriculumChapterDO">
|
||||
SELECT
|
||||
c.id,
|
||||
c.curriculum_chapter_id,
|
||||
c.class_curriculum_chapter_id,
|
||||
c.class_id,
|
||||
c.corpinfo_id,
|
||||
c.class_curriculum_id,
|
||||
|
|
|
|||
|
|
@ -97,17 +97,25 @@
|
|||
c.valid_start_time,
|
||||
c.valid_end_time,
|
||||
c.examination,
|
||||
c.numberofexams
|
||||
c.numberofexams,
|
||||
s.student_id,
|
||||
s.id stu_id
|
||||
FROM
|
||||
class c
|
||||
student s
|
||||
left join class c on c.class_id = s.class_id
|
||||
left join training_type t on t.training_type_id = c.train_type
|
||||
left join corp_info ci on ci.id = c.corpinfo_id
|
||||
WHERE
|
||||
c.class_id IN (SELECT s.class_id FROM student s WHERE s.phone = #{params.phone} AND s.delete_enum = 'FALSE')
|
||||
<where>
|
||||
AND s.phone = #{params.phone}
|
||||
AND s.delete_enum = 'FALSE'
|
||||
AND c.delete_enum = 'FALSE'
|
||||
<if test="params.likeName != null and params.likeName !='' ">
|
||||
and c.name like concat('%',#{params.likeName},'%')
|
||||
</if>
|
||||
<if test="params.eqCorpinfoId != null and params.eqCorpinfoId !='' ">
|
||||
and c.corpinfo_id = #{params.eqCorpinfoId}
|
||||
</if>
|
||||
</where>
|
||||
order by
|
||||
c.state,
|
||||
c.create_time desc
|
||||
|
|
|
|||
|
|
@ -3,6 +3,35 @@
|
|||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
|
||||
<mapper namespace="com.zcloud.edu.persistence.mapper.study.StudentExamRecordMapper">
|
||||
|
||||
<select id="getInfoByStudentId" resultType="com.zcloud.edu.persistence.dataobject.study.StudentExamRecordDO">
|
||||
SELECT
|
||||
er.id,
|
||||
er.student_exam_record_id,
|
||||
er.user_id,
|
||||
er.student_id,
|
||||
er.class_id,
|
||||
er.corpinfo_id,
|
||||
er.student_sign_id,
|
||||
er.class_exam_paper_id,
|
||||
er.exam_paper_id,
|
||||
er.exam_time_begin,
|
||||
er.exam_time_end,
|
||||
er.exam_question_num,
|
||||
er.exam_question_right,
|
||||
er.exam_question_wrong,
|
||||
er.exam_score,
|
||||
er.result,
|
||||
ss.sign_url
|
||||
FROM
|
||||
student_exam_record er
|
||||
left join student_sign ss on ss.student_sign_id = er.student_sign_id
|
||||
<where>
|
||||
er.delete_enum = 'FALSE'
|
||||
and er.student_id = #{studentId}
|
||||
</where>
|
||||
ORDER BY
|
||||
er.result desc, er.exam_score desc, er.create_time desc
|
||||
limit 1
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
|
|
|
|||
|
|
@ -70,5 +70,25 @@
|
|||
create_time desc
|
||||
limit 1
|
||||
</select>
|
||||
|
||||
<select id="countStuClass" resultType="com.zcloud.edu.persistence.dataobject.study.StudentDO">
|
||||
SELECT
|
||||
s.phone,
|
||||
count(*) class_count,
|
||||
count(CASE WHEN s.state = 1 THEN 1 END) complete_class_count
|
||||
FROM
|
||||
student s
|
||||
<where>
|
||||
<if test="params.inCorpinfoId != null">
|
||||
AND s.phone in
|
||||
<foreach collection="params.phones" item="phone" open="(" close=")" separator=",">
|
||||
#{phone}
|
||||
</foreach>
|
||||
</if>
|
||||
and s.delete_enum = 'FALSE'
|
||||
</where>
|
||||
group by s.phone
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
|
|
|
|||
|
|
@ -13,12 +13,11 @@
|
|||
ss.face_url
|
||||
FROM
|
||||
student_sign ss
|
||||
LEFT JOIN student s ON ss.student_id = ss.student_id
|
||||
LEFT JOIN class cl ON cl.class_id = s.class_id
|
||||
LEFT JOIN student s ON ss.student_id = ss.student_id
|
||||
LEFT JOIN class cl ON cl.class_id = s.class_id
|
||||
WHERE
|
||||
s.phone = #{params.phone}
|
||||
AND s.class_id = #{params.classId}
|
||||
AND ss.delete_enum = 'FALSE'
|
||||
ss.student_id = #{params.studentId}
|
||||
AND ss.delete_enum = 'FALSE'
|
||||
</select>
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue