|
@@ -41,139 +41,144 @@ import com.qmth.teachcloud.mark.service.ScanPackageService;
|
|
*/
|
|
*/
|
|
@Service
|
|
@Service
|
|
public class ScanPackageServiceImpl extends ServiceImpl<ScanPackageMapper, ScanPackage> implements ScanPackageService {
|
|
public class ScanPackageServiceImpl extends ServiceImpl<ScanPackageMapper, ScanPackage> implements ScanPackageService {
|
|
- @Autowired
|
|
|
|
- private MarkFileService markFileService;
|
|
|
|
- @Autowired
|
|
|
|
- private ScanFilePropertyService scanFilePropertyService;
|
|
|
|
- @Autowired
|
|
|
|
- private MarkPaperService markPaperService;
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private MarkFileService markFileService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private ScanFilePropertyService scanFilePropertyService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private MarkPaperService markPaperService;
|
|
|
|
|
|
- @Override
|
|
|
|
- public int getCount(Long examId) {
|
|
|
|
- QueryWrapper<ScanPackage> wrapper = new QueryWrapper<>();
|
|
|
|
- LambdaQueryWrapper<ScanPackage> lw = wrapper.lambda();
|
|
|
|
- lw.eq(ScanPackage::getExamId, examId);
|
|
|
|
- return baseMapper.selectCount(wrapper);
|
|
|
|
- }
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public int getCount(Long examId) {
|
|
|
|
+ QueryWrapper<ScanPackage> wrapper = new QueryWrapper<>();
|
|
|
|
+ LambdaQueryWrapper<ScanPackage> lw = wrapper.lambda();
|
|
|
|
+ lw.eq(ScanPackage::getExamId, examId);
|
|
|
|
+ return baseMapper.selectCount(wrapper);
|
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
|
- public List<ScanPackage> listByExamIdAndCoursePaperIdAndPackageCode(Long examId, String coursePaperId,
|
|
|
|
- String packageCode) {
|
|
|
|
- QueryWrapper<ScanPackage> queryWrapper = new QueryWrapper<>();
|
|
|
|
- LambdaQueryWrapper<ScanPackage> lambdaQueryWrapper = queryWrapper.lambda();
|
|
|
|
- lambdaQueryWrapper.eq(ScanPackage::getExamId, examId).eq(ScanPackage::getCoursePaperId, coursePaperId);
|
|
|
|
- if (StringUtils.isNotBlank(packageCode)) {
|
|
|
|
- lambdaQueryWrapper.eq(ScanPackage::getPackageCode, packageCode).orderByAsc(ScanPackage::getPackageCode);
|
|
|
|
- }
|
|
|
|
- lambdaQueryWrapper.orderByAsc(ScanPackage::getPackageNo);
|
|
|
|
- return this.list(queryWrapper);
|
|
|
|
- }
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public List<ScanPackage> listByExamIdAndCoursePaperIdAndPackageCode(Long examId, String coursePaperId,
|
|
|
|
+ String packageCode) {
|
|
|
|
+ QueryWrapper<ScanPackage> queryWrapper = new QueryWrapper<>();
|
|
|
|
+ LambdaQueryWrapper<ScanPackage> lambdaQueryWrapper = queryWrapper.lambda();
|
|
|
|
+ lambdaQueryWrapper.eq(ScanPackage::getExamId, examId).eq(ScanPackage::getCoursePaperId, coursePaperId);
|
|
|
|
+ if (StringUtils.isNotBlank(packageCode)) {
|
|
|
|
+ lambdaQueryWrapper.eq(ScanPackage::getPackageCode, packageCode).orderByAsc(ScanPackage::getPackageCode);
|
|
|
|
+ }
|
|
|
|
+ lambdaQueryWrapper.orderByAsc(ScanPackage::getPackageNo);
|
|
|
|
+ return this.list(queryWrapper);
|
|
|
|
+ }
|
|
|
|
|
|
- @Transactional
|
|
|
|
- @Override
|
|
|
|
- public SheetUploadVo imageUpload(Long examId, String packageCode, Integer packageNo, MultipartFile file,
|
|
|
|
- String md5) {
|
|
|
|
- SheetUploadVo vo = null;
|
|
|
|
- List<MarkPaper> mps = markPaperService.listByExamAndPackage(examId, packageCode);
|
|
|
|
- if (CollectionUtils.isEmpty(mps)) {
|
|
|
|
- throw new ParameterException("未找到科目信息");
|
|
|
|
- }
|
|
|
|
- for (MarkPaper mp : mps) {
|
|
|
|
- String coursePaperId = mp.getCoursePaperId();
|
|
|
|
- try {
|
|
|
|
- String path = markFileService.uploadPackage(file.getInputStream(), md5, examId, coursePaperId, packageCode,
|
|
|
|
- packageNo);
|
|
|
|
- if (vo == null) {
|
|
|
|
- vo = SheetUploadVo.create(path);
|
|
|
|
- }
|
|
|
|
- ScanPackage sp = getByExamIdAndCoursePaperIdAndPackageCodeAndPackageNo(examId, coursePaperId,
|
|
|
|
- packageCode, packageNo);
|
|
|
|
- if (sp == null) {
|
|
|
|
- sp = new ScanPackage();
|
|
|
|
- sp.setExamId(examId);
|
|
|
|
- sp.setCoursePaperId(coursePaperId);
|
|
|
|
- sp.setPackageCode(packageCode);
|
|
|
|
- sp.setPackageNo(packageNo);
|
|
|
|
- sp.setAssigned(false);
|
|
|
|
- }
|
|
|
|
- sp.setMd5(md5);
|
|
|
|
- sp.setPath(path);
|
|
|
|
- scanFilePropertyService.save(examId, path, md5, file.getSize());
|
|
|
|
- this.saveOrUpdate(sp);
|
|
|
|
- } catch (Exception e) {
|
|
|
|
- log.error("原图上传失败,examId=" + examId + ", coursePaperId=" + coursePaperId + ",packageCode=" + packageCode
|
|
|
|
- + ", packageNo=" + packageNo, e);
|
|
|
|
- throw new ParameterException("扫描图上传失败", e);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return vo;
|
|
|
|
- }
|
|
|
|
|
|
+ @Transactional
|
|
|
|
+ @Override
|
|
|
|
+ public SheetUploadVo imageUpload(Long examId, String packageCode, Integer packageNo, MultipartFile file,
|
|
|
|
+ String md5) {
|
|
|
|
+ SheetUploadVo vo = null;
|
|
|
|
+ List<MarkPaper> mps = markPaperService.listByExamAndPackage(examId, packageCode);
|
|
|
|
+ if (CollectionUtils.isEmpty(mps)) {
|
|
|
|
+ throw new ParameterException("未找到科目信息");
|
|
|
|
+ }
|
|
|
|
+ for (MarkPaper mp : mps) {
|
|
|
|
+ String coursePaperId = mp.getCoursePaperId();
|
|
|
|
+ try {
|
|
|
|
+ String path = markFileService.uploadPackage(file.getInputStream(), md5, examId, coursePaperId, packageCode,
|
|
|
|
+ packageNo);
|
|
|
|
+ if (vo == null) {
|
|
|
|
+ vo = SheetUploadVo.create(path);
|
|
|
|
+ }
|
|
|
|
+ ScanPackage sp = getByExamIdAndCoursePaperIdAndPackageCodeAndPackageNo(examId, coursePaperId,
|
|
|
|
+ packageCode, packageNo);
|
|
|
|
+ if (sp == null) {
|
|
|
|
+ sp = new ScanPackage();
|
|
|
|
+ sp.setExamId(examId);
|
|
|
|
+ sp.setCoursePaperId(coursePaperId);
|
|
|
|
+ sp.setPackageCode(packageCode);
|
|
|
|
+ sp.setPackageNo(packageNo);
|
|
|
|
+ sp.setAssigned(false);
|
|
|
|
+ }
|
|
|
|
+ sp.setMd5(md5);
|
|
|
|
+ sp.setPath(path);
|
|
|
|
+ scanFilePropertyService.save(examId, path, md5, file.getSize());
|
|
|
|
+ this.saveOrUpdate(sp);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.error("原图上传失败,examId=" + examId + ", coursePaperId=" + coursePaperId + ",packageCode=" + packageCode
|
|
|
|
+ + ", packageNo=" + packageNo, e);
|
|
|
|
+ throw new ParameterException("扫描图上传失败", e);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return vo;
|
|
|
|
+ }
|
|
|
|
|
|
- private ScanPackage getByExamIdAndCoursePaperIdAndPackageCodeAndPackageNo(Long examId, String coursePaperId,
|
|
|
|
- String packageCode, Integer packageNo) {
|
|
|
|
- QueryWrapper<ScanPackage> wrapper = new QueryWrapper<>();
|
|
|
|
- LambdaQueryWrapper<ScanPackage> lw = wrapper.lambda();
|
|
|
|
- lw.eq(ScanPackage::getExamId, examId);
|
|
|
|
- lw.eq(ScanPackage::getCoursePaperId, coursePaperId);
|
|
|
|
- lw.eq(ScanPackage::getPackageCode, packageCode);
|
|
|
|
- lw.eq(ScanPackage::getPackageNo, packageNo);
|
|
|
|
- wrapper.last("LIMIT 1");
|
|
|
|
- return this.getOne(wrapper);
|
|
|
|
- }
|
|
|
|
|
|
+ private ScanPackage getByExamIdAndCoursePaperIdAndPackageCodeAndPackageNo(Long examId, String coursePaperId,
|
|
|
|
+ String packageCode, Integer packageNo) {
|
|
|
|
+ QueryWrapper<ScanPackage> wrapper = new QueryWrapper<>();
|
|
|
|
+ LambdaQueryWrapper<ScanPackage> lw = wrapper.lambda();
|
|
|
|
+ lw.eq(ScanPackage::getExamId, examId);
|
|
|
|
+ lw.eq(ScanPackage::getCoursePaperId, coursePaperId);
|
|
|
|
+ lw.eq(ScanPackage::getPackageCode, packageCode);
|
|
|
|
+ lw.eq(ScanPackage::getPackageNo, packageNo);
|
|
|
|
+ wrapper.last("LIMIT 1");
|
|
|
|
+ return this.getOne(wrapper);
|
|
|
|
+ }
|
|
|
|
|
|
- private List<ScanPackage> getByExamIdAndCoursePaperId(Long examId, String coursePaperId) {
|
|
|
|
- QueryWrapper<ScanPackage> wrapper = new QueryWrapper<>();
|
|
|
|
- LambdaQueryWrapper<ScanPackage> lw = wrapper.lambda();
|
|
|
|
- lw.eq(ScanPackage::getExamId, examId);
|
|
|
|
- lw.eq(ScanPackage::getCoursePaperId, coursePaperId);
|
|
|
|
- lw.orderByAsc(ScanPackage::getPackageNo);
|
|
|
|
- return this.list(wrapper);
|
|
|
|
- }
|
|
|
|
|
|
+ private List<ScanPackage> getByExamIdAndCoursePaperId(Long examId, String coursePaperId) {
|
|
|
|
+ QueryWrapper<ScanPackage> wrapper = new QueryWrapper<>();
|
|
|
|
+ LambdaQueryWrapper<ScanPackage> lw = wrapper.lambda();
|
|
|
|
+ lw.eq(ScanPackage::getExamId, examId);
|
|
|
|
+ lw.eq(ScanPackage::getCoursePaperId, coursePaperId);
|
|
|
|
+ lw.orderByAsc(ScanPackage::getPackageNo);
|
|
|
|
+ return this.list(wrapper);
|
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
|
- public IPage<ScanPackageVo> imagePage(ScanPackageQuery query) {
|
|
|
|
- IPage<ScanPackageVo> iPage = this.baseMapper.page(new Page<>(query.getPageNumber(), query.getPageSize()), query);
|
|
|
|
- if(CollectionUtils.isNotEmpty(iPage.getRecords())) {
|
|
|
|
- List<ScanPackage> sps=getByExamIdAndCoursePaperId(query.getExamId(), query.getCoursePaperId());
|
|
|
|
- if(CollectionUtils.isNotEmpty(sps)) {
|
|
|
|
- Map<String,List<String>> map=new HashMap<>();
|
|
|
|
- for(ScanPackage sp:sps) {
|
|
|
|
- List<String> tem=map.get(sp.getPackageCode());
|
|
|
|
- if(tem==null) {
|
|
|
|
- tem=new ArrayList<>();
|
|
|
|
- map.put(sp.getPackageCode(), tem);
|
|
|
|
- }
|
|
|
|
- tem.add(sp.getPath());
|
|
|
|
- }
|
|
|
|
- for(ScanPackageVo vo:iPage.getRecords()) {
|
|
|
|
- List<String> pages=map.get(vo.getPackageCode());
|
|
|
|
- vo.setPages(pages);
|
|
|
|
- vo.setPagesCount(pages.size());
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return iPage;
|
|
|
|
- }
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public IPage<ScanPackageVo> imagePage(ScanPackageQuery query) {
|
|
|
|
+ IPage<ScanPackageVo> iPage = this.baseMapper.page(new Page<>(query.getPageNumber(), query.getPageSize()), query);
|
|
|
|
+ if (CollectionUtils.isNotEmpty(iPage.getRecords())) {
|
|
|
|
+ List<ScanPackage> sps = getByExamIdAndCoursePaperId(query.getExamId(), query.getCoursePaperId());
|
|
|
|
+ if (CollectionUtils.isNotEmpty(sps)) {
|
|
|
|
+ Map<String, List<String>> map = new HashMap<>();
|
|
|
|
+ for (ScanPackage sp : sps) {
|
|
|
|
+ List<String> tem = map.get(sp.getPackageCode());
|
|
|
|
+ if (tem == null) {
|
|
|
|
+ tem = new ArrayList<>();
|
|
|
|
+ map.put(sp.getPackageCode(), tem);
|
|
|
|
+ }
|
|
|
|
+ tem.add(sp.getPath());
|
|
|
|
+ }
|
|
|
|
+ for (ScanPackageVo vo : iPage.getRecords()) {
|
|
|
|
+ List<String> pages = map.get(vo.getPackageCode());
|
|
|
|
+ vo.setPages(pages);
|
|
|
|
+ vo.setPagesCount(pages.size());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return iPage;
|
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
|
- public ScanPackageFindVo find(Long examId, String packageCode) {
|
|
|
|
- // TODO
|
|
|
|
- return null;
|
|
|
|
- }
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public ScanPackageFindVo find(Long examId, String packageCode) {
|
|
|
|
+ List<MarkPaper> markPaperList = markPaperService.listByExamAndPackage(examId, packageCode);
|
|
|
|
+ ScanPackageFindVo scanPackageFindVo = new ScanPackageFindVo();
|
|
|
|
+ if (CollectionUtils.isNotEmpty(markPaperList)) {
|
|
|
|
+ scanPackageFindVo.setExamId(examId);
|
|
|
|
+ scanPackageFindVo.setPackageCode(packageCode);
|
|
|
|
+ }
|
|
|
|
+ return scanPackageFindVo;
|
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
|
- public List<String> imageGet(Long examId, String coursePaperId, String packageCode) {
|
|
|
|
- List<String> ret=new ArrayList<>();
|
|
|
|
- QueryWrapper<ScanPackage> wrapper = new QueryWrapper<>();
|
|
|
|
- LambdaQueryWrapper<ScanPackage> lw = wrapper.lambda();
|
|
|
|
- lw.eq(ScanPackage::getExamId, examId);
|
|
|
|
- lw.eq(ScanPackage::getCoursePaperId, coursePaperId);
|
|
|
|
- lw.eq(ScanPackage::getPackageCode, packageCode);
|
|
|
|
- lw.orderByAsc(ScanPackage::getPackageNo);
|
|
|
|
- List<ScanPackage> list=this.list(wrapper);
|
|
|
|
- if(CollectionUtils.isNotEmpty(list)) {
|
|
|
|
- ret=list.stream().map(e->e.getPath()).collect(Collectors.toList());
|
|
|
|
- }
|
|
|
|
- return ret;
|
|
|
|
- }
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public List<String> imageGet(Long examId, String coursePaperId, String packageCode) {
|
|
|
|
+ List<String> ret = new ArrayList<>();
|
|
|
|
+ QueryWrapper<ScanPackage> wrapper = new QueryWrapper<>();
|
|
|
|
+ LambdaQueryWrapper<ScanPackage> lw = wrapper.lambda();
|
|
|
|
+ lw.eq(ScanPackage::getExamId, examId);
|
|
|
|
+ lw.eq(ScanPackage::getCoursePaperId, coursePaperId);
|
|
|
|
+ lw.eq(ScanPackage::getPackageCode, packageCode);
|
|
|
|
+ lw.orderByAsc(ScanPackage::getPackageNo);
|
|
|
|
+ List<ScanPackage> list = this.list(wrapper);
|
|
|
|
+ if (CollectionUtils.isNotEmpty(list)) {
|
|
|
|
+ ret = list.stream().map(e -> e.getPath()).collect(Collectors.toList());
|
|
|
|
+ }
|
|
|
|
+ return ret;
|
|
|
|
+ }
|
|
}
|
|
}
|