|
@@ -39,6 +39,7 @@ import java.time.LocalDateTime;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.StringJoiner;
|
|
|
+import java.util.regex.Pattern;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -111,25 +112,39 @@ public class PaperLibraryServiceImpl extends ServiceImpl<PaperLibraryMapper, Pap
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<String> listStudentPicture(Long paperScanTaskDetailId) {
|
|
|
+ public List<PaperLibraryResult> listStudentPicture(Long paperScanTaskDetailId) {
|
|
|
Long schoolId = SystemConstant.convertIdToLong(String.valueOf(ServletUtil.getRequestHeaderSchoolId()));
|
|
|
QueryWrapper<PaperLibrary> queryWrapper = new QueryWrapper<>();
|
|
|
queryWrapper.lambda().eq(PaperLibrary::getSchoolId, schoolId)
|
|
|
.eq(PaperLibrary::getPaperScanTaskDetailId, paperScanTaskDetailId)
|
|
|
.orderByAsc(PaperLibrary::getSequence);
|
|
|
List<PaperLibrary> paperLibraryList = this.list(queryWrapper);
|
|
|
- List<String> fileUrls = new ArrayList<>();
|
|
|
+ List<PaperLibraryResult> paperLibraryResultList = new ArrayList<>();
|
|
|
for (PaperLibrary paperLibrary : paperLibraryList) {
|
|
|
+ PaperLibraryResult paperLibraryResult = new PaperLibraryResult();
|
|
|
+ BeanUtils.copyProperties(paperLibrary, paperLibraryResult);
|
|
|
String fileUrl = paperLibrary.getPath();
|
|
|
if (StringUtils.isBlank(fileUrl)) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("未找到图片路径");
|
|
|
}
|
|
|
List<JSONObject> objectList = JSON.parseArray(fileUrl, JSONObject.class);
|
|
|
+ List<String> fileUrls = new ArrayList<>();
|
|
|
for (JSONObject jsonObject : objectList) {
|
|
|
fileUrls.add(paperLibraryCommonService.preViewPath(jsonObject.getString(SystemConstant.PATH), jsonObject.getString(SystemConstant.UPLOAD_TYPE), jsonObject.getString(SystemConstant.TYPE), false));
|
|
|
}
|
|
|
+ PaperScanTaskResult paperScanTaskResult = paperScanTaskService.getByPaperScanTaskId(paperLibrary.getPaperScanTaskId());
|
|
|
+ if (paperScanTaskResult != null) {
|
|
|
+ paperLibraryResult.setSemesterName(paperScanTaskResult.getSemesterName());
|
|
|
+ paperLibraryResult.setPaperArchivesName(paperScanTaskResult.getArchivesName());
|
|
|
+ paperLibraryResult.setPaperScanTaskName(paperScanTaskResult.getScanTaskName());
|
|
|
+ paperLibraryResult.setCourseName(paperScanTaskResult.getCourseName());
|
|
|
+ paperLibraryResult.setTeacherName(paperScanTaskResult.getTeacherName());
|
|
|
+ paperLibraryResult.setTeachClazzName(paperScanTaskResult.getTeachClazzName());
|
|
|
+ }
|
|
|
+ paperLibraryResult.setFileUrls(fileUrls);
|
|
|
+ paperLibraryResultList.add(paperLibraryResult);
|
|
|
}
|
|
|
- return fileUrls;
|
|
|
+ return paperLibraryResultList;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -198,14 +213,13 @@ public class PaperLibraryServiceImpl extends ServiceImpl<PaperLibraryMapper, Pap
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public String ocr(Long paperLibraryId, Integer index, Integer x, Integer y, Integer width, Integer height) {
|
|
|
+ public List<String> ocr(Long paperLibraryId, Integer index, Integer x, Integer y, Integer width, Integer height) {
|
|
|
QueryWrapper<PaperLibrary> queryWrapper = new QueryWrapper<>();
|
|
|
queryWrapper.lambda().eq(PaperLibrary::getId, paperLibraryId);
|
|
|
PaperLibrary paperLibrary = this.getOne(queryWrapper);
|
|
|
List<JSONObject> objectList = JSON.parseArray(paperLibrary.getPath(), JSONObject.class);
|
|
|
JSONObject jsonObject = objectList.get(index);
|
|
|
|
|
|
-
|
|
|
StringJoiner stringJoiner = new StringJoiner("");
|
|
|
stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
|
|
|
LocalDateTime nowTime = LocalDateTime.now();
|
|
@@ -224,22 +238,28 @@ public class PaperLibraryServiceImpl extends ServiceImpl<PaperLibraryMapper, Pap
|
|
|
if (subFile == null) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("识别区域图片生成失败");
|
|
|
}
|
|
|
+
|
|
|
+ List<String> stringList = new ArrayList<>();
|
|
|
try {
|
|
|
org.json.JSONObject callHandwriting = ocrUtil.callHandwriting(subFile.getPath());
|
|
|
JSONArray jsonArray = callHandwriting.getJSONArray(SystemConstant.OCR_WORDS_RESULT);
|
|
|
if (jsonArray.length() == 0) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("未正确识别出内容");
|
|
|
- } else if (jsonArray.length() != 1) {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("检测出多条数据,请重新设置识别区");
|
|
|
} else {
|
|
|
- org.json.JSONObject object = jsonArray.getJSONObject(0);
|
|
|
- if (object.has(SystemConstant.OCR_WORDS)) {
|
|
|
- // 保存识别数据
|
|
|
- UpdateWrapper<PaperLibrary> updateWrapper = new UpdateWrapper<>();
|
|
|
- updateWrapper.lambda().set(PaperLibrary::getWordsResult, jsonArray.toString()).eq(PaperLibrary::getId, paperLibraryId);
|
|
|
- this.updateById(paperLibrary);
|
|
|
- return object.getString(SystemConstant.OCR_WORDS);
|
|
|
- }
|
|
|
+ // 保存识别数据
|
|
|
+ UpdateWrapper<PaperLibrary> updateWrapper = new UpdateWrapper<>();
|
|
|
+ updateWrapper.lambda().set(PaperLibrary::getWordsResult, jsonArray.toString()).eq(PaperLibrary::getId, paperLibraryId);
|
|
|
+ this.updateById(paperLibrary);
|
|
|
+
|
|
|
+ // 过滤掉非学号类型的数据
|
|
|
+ jsonArray.forEach(m -> {
|
|
|
+ org.json.JSONObject object = (org.json.JSONObject) m;
|
|
|
+ if (object.has(SystemConstant.OCR_WORDS)) {
|
|
|
+ String string = object.getString(SystemConstant.OCR_WORDS);
|
|
|
+// if (Pattern.matches(SystemConstant.REGULAR_EXPRESSION_OF_NUMBER_LETTER, string))
|
|
|
+ stringList.add(string);
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
} catch (JSONException e) {
|
|
|
throw ExceptionResultEnum.ERROR.exception(e.getMessage());
|
|
@@ -247,7 +267,7 @@ public class PaperLibraryServiceImpl extends ServiceImpl<PaperLibraryMapper, Pap
|
|
|
file.delete();
|
|
|
subFile.delete();
|
|
|
}
|
|
|
- return null;
|
|
|
+ return stringList;
|
|
|
}
|
|
|
|
|
|
private List<PaperLibrary> createBindData(Long userId, Long schoolId) {
|