|
@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
|
|
import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.google.common.reflect.TypeToken;
|
|
import com.google.common.reflect.TypeToken;
|
|
import com.qmth.themis.business.bean.admin.OpenRecordAnswerTempBean;
|
|
import com.qmth.themis.business.bean.admin.OpenRecordAnswerTempBean;
|
|
import com.qmth.themis.business.bean.admin.OpenRecordNeedMarkBean;
|
|
import com.qmth.themis.business.bean.admin.OpenRecordNeedMarkBean;
|
|
@@ -59,6 +60,7 @@ import java.util.stream.Collectors;
|
|
*/
|
|
*/
|
|
@Service
|
|
@Service
|
|
public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
|
|
+
|
|
private final static Logger log = LoggerFactory.getLogger(TempleteLogicServiceImpl.class);
|
|
private final static Logger log = LoggerFactory.getLogger(TempleteLogicServiceImpl.class);
|
|
|
|
|
|
@Resource
|
|
@Resource
|
|
@@ -115,7 +117,8 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
@Transactional
|
|
@Transactional
|
|
- public Map<String, Object> execImportExamStudentLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map) throws UnsupportedEncodingException {
|
|
|
|
|
|
+ public Map<String, Object> execImportExamStudentLogic(List<LinkedMultiValueMap<Integer, Object>> finalList,
|
|
|
|
+ Map<String, Object> map) throws UnsupportedEncodingException {
|
|
Long orgId = Long.parseLong(String.valueOf(map.get(SystemConstant.ORG_ID)));
|
|
Long orgId = Long.parseLong(String.valueOf(map.get(SystemConstant.ORG_ID)));
|
|
Long examId = Long.parseLong(String.valueOf(map.get(SystemConstant.EXAM_ID)));
|
|
Long examId = Long.parseLong(String.valueOf(map.get(SystemConstant.EXAM_ID)));
|
|
Long createId = Long.parseLong(String.valueOf(map.get(SystemConstant.CREATE_ID)));
|
|
Long createId = Long.parseLong(String.valueOf(map.get(SystemConstant.CREATE_ID)));
|
|
@@ -127,7 +130,8 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
Map<String, String> courseCodeMap = (Map<String, String>) map.get("courseCodeMap");
|
|
Map<String, String> courseCodeMap = (Map<String, String>) map.get("courseCodeMap");
|
|
QueryWrapper<TEExamCourse> teExamCourseQueryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<TEExamCourse> teExamCourseQueryWrapper = new QueryWrapper<>();
|
|
Set<String> courseCodeSet = courseCodeMap.keySet().stream().collect(Collectors.toSet());
|
|
Set<String> courseCodeSet = courseCodeMap.keySet().stream().collect(Collectors.toSet());
|
|
- teExamCourseQueryWrapper.lambda().in(TEExamCourse::getCourseCode, courseCodeSet).eq(TEExamCourse::getExamId, examId);
|
|
|
|
|
|
+ teExamCourseQueryWrapper.lambda().in(TEExamCourse::getCourseCode, courseCodeSet)
|
|
|
|
+ .eq(TEExamCourse::getExamId, examId);
|
|
List<TEExamCourse> teExamCourseList = teExamCourseService.list(teExamCourseQueryWrapper);
|
|
List<TEExamCourse> teExamCourseList = teExamCourseService.list(teExamCourseQueryWrapper);
|
|
if (Objects.nonNull(teExamCourseList) && teExamCourseList.size() > 0) {
|
|
if (Objects.nonNull(teExamCourseList) && teExamCourseList.size() > 0) {
|
|
teExamCourseList.forEach(s -> {
|
|
teExamCourseList.forEach(s -> {
|
|
@@ -149,9 +153,12 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
for (int i = 0; i < finalList.size(); i++) {
|
|
for (int i = 0; i < finalList.size(); i++) {
|
|
LinkedMultiValueMap<Integer, Object> finalMap = finalList.get(i);
|
|
LinkedMultiValueMap<Integer, Object> finalMap = finalList.get(i);
|
|
List<Object> examStudentImportDtoList = finalMap.get(i);
|
|
List<Object> examStudentImportDtoList = finalMap.get(i);
|
|
- List<ExamStudentImportDto> gsonList = GsonUtil.fromJson(GsonUtil.toJson(examStudentImportDtoList), new TypeToken<List<ExamStudentImportDto>>() {
|
|
|
|
- }.getType());
|
|
|
|
- ExamStudentImportForkJoin myTask = new ExamStudentImportForkJoin(0, examStudentImportDtoList.size() - 1, gsonList, modeEnum, teExamActivityMap, examId, orgId, createId);
|
|
|
|
|
|
+ List<ExamStudentImportDto> gsonList = GsonUtil.fromJson(GsonUtil.toJson(examStudentImportDtoList),
|
|
|
|
+ new TypeToken<List<ExamStudentImportDto>>() {
|
|
|
|
+
|
|
|
|
+ }.getType());
|
|
|
|
+ ExamStudentImportForkJoin myTask = new ExamStudentImportForkJoin(0, examStudentImportDtoList.size() - 1,
|
|
|
|
+ gsonList, modeEnum, teExamActivityMap, examId, orgId, createId);
|
|
ForkJoinTask<Set<String>> forkJoinTask = forkJoinThreadPool.taskForkJoinPool().submit(myTask);
|
|
ForkJoinTask<Set<String>> forkJoinTask = forkJoinThreadPool.taskForkJoinPool().submit(myTask);
|
|
roomCodeAndNameSet = forkJoinTask.join();
|
|
roomCodeAndNameSet = forkJoinTask.join();
|
|
txtList = this.importProgress(gsonList.size(), 0, gsonList.size(), txtList, tbTaskHistory);
|
|
txtList = this.importProgress(gsonList.size(), 0, gsonList.size(), txtList, tbTaskHistory);
|
|
@@ -159,30 +166,39 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
map.put("line", line);
|
|
map.put("line", line);
|
|
//考场创建
|
|
//考场创建
|
|
if (Objects.nonNull(roomCodeAndNameSet) && roomCodeAndNameSet.size() > 0) {
|
|
if (Objects.nonNull(roomCodeAndNameSet) && roomCodeAndNameSet.size() > 0) {
|
|
- Map<String, TBExamInvigilateUser> tbExamInvigilateUserMap = (Map<String, TBExamInvigilateUser>) map.get("tbExamInvigilateUserMap");
|
|
|
|
|
|
+ Map<String, TBExamInvigilateUser> tbExamInvigilateUserMap = (Map<String, TBExamInvigilateUser>) map.get(
|
|
|
|
+ "tbExamInvigilateUserMap");
|
|
AtomicInteger count = new AtomicInteger(0);
|
|
AtomicInteger count = new AtomicInteger(0);
|
|
Map<String, String> roomCodeAndNameMap = new HashMap<>(roomCodeAndNameSet.size());
|
|
Map<String, String> roomCodeAndNameMap = new HashMap<>(roomCodeAndNameSet.size());
|
|
roomCodeAndNameSet.forEach(s -> {
|
|
roomCodeAndNameSet.forEach(s -> {
|
|
- if (Objects.isNull(tbExamInvigilateUserMap) || (Objects.nonNull(tbExamInvigilateUserMap) && Objects.isNull(tbExamInvigilateUserMap.get(s)))) {
|
|
|
|
|
|
+ if (Objects.isNull(tbExamInvigilateUserMap) || (Objects.nonNull(tbExamInvigilateUserMap)
|
|
|
|
+ && Objects.isNull(tbExamInvigilateUserMap.get(s)))) {
|
|
String[] strs = s.split(":");
|
|
String[] strs = s.split(":");
|
|
if (!roomCodeAndNameMap.containsKey(strs[0] + ":" + strs[1])) {
|
|
if (!roomCodeAndNameMap.containsKey(strs[0] + ":" + strs[1])) {
|
|
- TBExamInvigilateUser tbExamInvigilateUser = new TBExamInvigilateUser(Long.parseLong(strs[0]), orgId, strs[1], strs[2]);
|
|
|
|
|
|
+ TBExamInvigilateUser tbExamInvigilateUser = new TBExamInvigilateUser(Long.parseLong(strs[0]),
|
|
|
|
+ orgId, strs[1], strs[2]);
|
|
tbExamInvigilateUserList.add(tbExamInvigilateUser);
|
|
tbExamInvigilateUserList.add(tbExamInvigilateUser);
|
|
|
|
|
|
QueryWrapper<TBExamInvigilateUserTemp> tbExamInvigilateUserTempQueryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<TBExamInvigilateUserTemp> tbExamInvigilateUserTempQueryWrapper = new QueryWrapper<>();
|
|
- tbExamInvigilateUserTempQueryWrapper.lambda().eq(TBExamInvigilateUserTemp::getExamId, Long.parseLong(strs[0]))
|
|
|
|
|
|
+ tbExamInvigilateUserTempQueryWrapper.lambda()
|
|
|
|
+ .eq(TBExamInvigilateUserTemp::getExamId, Long.parseLong(strs[0]))
|
|
.eq(TBExamInvigilateUserTemp::getOrgId, orgId)
|
|
.eq(TBExamInvigilateUserTemp::getOrgId, orgId)
|
|
.eq(TBExamInvigilateUserTemp::getRoomCode, strs[1])
|
|
.eq(TBExamInvigilateUserTemp::getRoomCode, strs[1])
|
|
.eq(TBExamInvigilateUserTemp::getRoomName, strs[2]);
|
|
.eq(TBExamInvigilateUserTemp::getRoomName, strs[2]);
|
|
|
|
|
|
map.put("dataRemark", "编码:" + strs[1] + ",名称:" + strs[2]);
|
|
map.put("dataRemark", "编码:" + strs[1] + ",名称:" + strs[2]);
|
|
- TBExamInvigilateUserTemp tbExamInvigilateUserTemp = tbExamInvigilateUserTempService.getOne(tbExamInvigilateUserTempQueryWrapper);
|
|
|
|
- tbExamInvigilateUserTemp = Objects.isNull(tbExamInvigilateUserTemp) ? new TBExamInvigilateUserTemp(Long.parseLong(strs[0]), orgId, strs[1], strs[2]) : tbExamInvigilateUserTemp;
|
|
|
|
|
|
+ TBExamInvigilateUserTemp tbExamInvigilateUserTemp = tbExamInvigilateUserTempService.getOne(
|
|
|
|
+ tbExamInvigilateUserTempQueryWrapper);
|
|
|
|
+ tbExamInvigilateUserTemp = Objects.isNull(tbExamInvigilateUserTemp) ?
|
|
|
|
+ new TBExamInvigilateUserTemp(Long.parseLong(strs[0]), orgId, strs[1], strs[2]) :
|
|
|
|
+ tbExamInvigilateUserTemp;
|
|
tbExamInvigilateUserTempService.saveOrUpdate(tbExamInvigilateUserTemp);
|
|
tbExamInvigilateUserTempService.saveOrUpdate(tbExamInvigilateUserTemp);
|
|
count.getAndIncrement();
|
|
count.getAndIncrement();
|
|
roomCodeAndNameMap.put(strs[0] + ":" + strs[1], strs[2]);
|
|
roomCodeAndNameMap.put(strs[0] + ":" + strs[1], strs[2]);
|
|
} else {
|
|
} else {
|
|
- throw new BusinessException("考场代码'" + strs[1] + "'下考场名称不一致" + "[" + roomCodeAndNameMap.get(strs[0] + ":" + strs[1]) + "," + strs[2] + "]");
|
|
|
|
|
|
+ throw new BusinessException(
|
|
|
|
+ "考场代码'" + strs[1] + "'下考场名称不一致" + "[" + roomCodeAndNameMap.get(strs[0] + ":" + strs[1])
|
|
|
|
+ + "," + strs[2] + "]");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
});
|
|
@@ -205,7 +221,8 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
@Transactional
|
|
@Transactional
|
|
- public Map<String, Object> execImportRoomCodeLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map) throws UnsupportedEncodingException {
|
|
|
|
|
|
+ public Map<String, Object> execImportRoomCodeLogic(List<LinkedMultiValueMap<Integer, Object>> finalList,
|
|
|
|
+ Map<String, Object> map) throws UnsupportedEncodingException {
|
|
Long orgId = null;
|
|
Long orgId = null;
|
|
if (Objects.nonNull(map.get(SystemConstant.ORG_ID))) {
|
|
if (Objects.nonNull(map.get(SystemConstant.ORG_ID))) {
|
|
orgId = Long.parseLong(String.valueOf(map.get(SystemConstant.ORG_ID)));
|
|
orgId = Long.parseLong(String.valueOf(map.get(SystemConstant.ORG_ID)));
|
|
@@ -217,8 +234,8 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
Set<TBUserRole> tbUserRoleList = new HashSet<>();
|
|
Set<TBUserRole> tbUserRoleList = new HashSet<>();
|
|
Set<TBExamInvigilateUser> tbExamInvigilateUserList = new HashSet<>();
|
|
Set<TBExamInvigilateUser> tbExamInvigilateUserList = new HashSet<>();
|
|
TBTaskHistory tbTaskHistory = (TBTaskHistory) map.get("tbTaskHistory");
|
|
TBTaskHistory tbTaskHistory = (TBTaskHistory) map.get("tbTaskHistory");
|
|
- Set<String> roomCodeSet = new HashSet<>();
|
|
|
|
- Set<String> roomNameSet = new HashSet<>();
|
|
|
|
|
|
+ List<String> roomCodeList = new ArrayList<>();
|
|
|
|
+ List<String> roomNameList = new ArrayList<>();
|
|
//保存用户
|
|
//保存用户
|
|
int line = 0;
|
|
int line = 0;
|
|
for (int i = 0; i < finalList.size(); i++) {
|
|
for (int i = 0; i < finalList.size(); i++) {
|
|
@@ -234,14 +251,23 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
for (int y = 0; y < subList.size(); y++) {
|
|
for (int y = 0; y < subList.size(); y++) {
|
|
line++;
|
|
line++;
|
|
RoomCodeImportDto roomCodeImportDto = (RoomCodeImportDto) subList.get(y);
|
|
RoomCodeImportDto roomCodeImportDto = (RoomCodeImportDto) subList.get(y);
|
|
- roomCodeSet.add(roomCodeImportDto.getRoomCode());
|
|
|
|
- roomNameSet.add(roomCodeImportDto.getRoomName());
|
|
|
|
- map.put("dataRemark", "编码:" + roomCodeImportDto.getRoomCode() + ",名称:" + roomCodeImportDto.getRoomName());
|
|
|
|
- dataVerify(examId, roomCodeImportDto.getTeacher1(), roomCodeImportDto.getTeacher1Pwd(), roomCodeImportDto.getRoomCode(), roomCodeImportDto.getRoomName(), orgId, createId, tbUserList, tbUserRoleList, tbExamInvigilateUserList);
|
|
|
|
- map.put("dataRemark", "编码:" + roomCodeImportDto.getRoomCode() + ",名称:" + roomCodeImportDto.getRoomName());
|
|
|
|
- dataVerify(examId, roomCodeImportDto.getTeacher2(), roomCodeImportDto.getTeacher2Pwd(), roomCodeImportDto.getRoomCode(), roomCodeImportDto.getRoomName(), orgId, createId, tbUserList, tbUserRoleList, tbExamInvigilateUserList);
|
|
|
|
- map.put("dataRemark", "编码:" + roomCodeImportDto.getRoomCode() + ",名称:" + roomCodeImportDto.getRoomName());
|
|
|
|
- dataVerify(examId, roomCodeImportDto.getTeacher3(), roomCodeImportDto.getTeacher3Pwd(), roomCodeImportDto.getRoomCode(), roomCodeImportDto.getRoomName(), orgId, createId, tbUserList, tbUserRoleList, tbExamInvigilateUserList);
|
|
|
|
|
|
+ roomCodeList.add(roomCodeImportDto.getRoomCode());
|
|
|
|
+ roomNameList.add(roomCodeImportDto.getRoomName());
|
|
|
|
+ map.put("dataRemark",
|
|
|
|
+ "编码:" + roomCodeImportDto.getRoomCode() + ",名称:" + roomCodeImportDto.getRoomName());
|
|
|
|
+ dataVerify(examId, roomCodeImportDto.getTeacher1(), roomCodeImportDto.getTeacher1Pwd(),
|
|
|
|
+ roomCodeImportDto.getRoomCode(), roomCodeImportDto.getRoomName(), orgId, createId,
|
|
|
|
+ tbUserList, tbUserRoleList, tbExamInvigilateUserList);
|
|
|
|
+ map.put("dataRemark",
|
|
|
|
+ "编码:" + roomCodeImportDto.getRoomCode() + ",名称:" + roomCodeImportDto.getRoomName());
|
|
|
|
+ dataVerify(examId, roomCodeImportDto.getTeacher2(), roomCodeImportDto.getTeacher2Pwd(),
|
|
|
|
+ roomCodeImportDto.getRoomCode(), roomCodeImportDto.getRoomName(), orgId, createId,
|
|
|
|
+ tbUserList, tbUserRoleList, tbExamInvigilateUserList);
|
|
|
|
+ map.put("dataRemark",
|
|
|
|
+ "编码:" + roomCodeImportDto.getRoomCode() + ",名称:" + roomCodeImportDto.getRoomName());
|
|
|
|
+ dataVerify(examId, roomCodeImportDto.getTeacher3(), roomCodeImportDto.getTeacher3Pwd(),
|
|
|
|
+ roomCodeImportDto.getRoomCode(), roomCodeImportDto.getRoomName(), orgId, createId,
|
|
|
|
+ tbUserList, tbUserRoleList, tbExamInvigilateUserList);
|
|
}
|
|
}
|
|
txtList = this.importProgress(max, min, size, txtList, tbTaskHistory);
|
|
txtList = this.importProgress(max, min, size, txtList, tbTaskHistory);
|
|
if (max == size) {
|
|
if (max == size) {
|
|
@@ -254,12 +280,7 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if (!CollectionUtils.isEmpty(roomCodeSet)) {
|
|
|
|
- List<String> roomCodeList = new ArrayList<>();
|
|
|
|
- roomCodeList.addAll(roomCodeSet);
|
|
|
|
- List<String> roomNameList = new ArrayList<>();
|
|
|
|
- roomNameList.addAll(roomNameSet);
|
|
|
|
-
|
|
|
|
|
|
+ if (!CollectionUtils.isEmpty(roomCodeList)) {
|
|
for (int i = 0; i < roomCodeList.size(); i++) {
|
|
for (int i = 0; i < roomCodeList.size(); i++) {
|
|
if (!checkRoomCodeExist(examId, roomCodeList.get(i), orgId, roomNameList.get(i))) {
|
|
if (!checkRoomCodeExist(examId, roomCodeList.get(i), orgId, roomNameList.get(i))) {
|
|
throw new BusinessException("考场代码 " + roomCodeList.get(i) + " 不存在");
|
|
throw new BusinessException("考场代码 " + roomCodeList.get(i) + " 不存在");
|
|
@@ -267,10 +288,8 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
QueryWrapper<TBExamInvigilateUser> wrapper = new QueryWrapper<>();
|
|
QueryWrapper<TBExamInvigilateUser> wrapper = new QueryWrapper<>();
|
|
- wrapper.lambda().eq(TBExamInvigilateUser::getOrgId, orgId)
|
|
|
|
- .in(TBExamInvigilateUser::getRoomCode, roomCodeSet)
|
|
|
|
- .eq(TBExamInvigilateUser::getExamId, examId)
|
|
|
|
- .in(TBExamInvigilateUser::getRoomName, roomNameSet);
|
|
|
|
|
|
+ wrapper.lambda().eq(TBExamInvigilateUser::getOrgId, orgId).in(TBExamInvigilateUser::getRoomCode, roomCodeList)
|
|
|
|
+ .eq(TBExamInvigilateUser::getExamId, examId).in(TBExamInvigilateUser::getRoomName, roomNameList);
|
|
tbExamInvigilateUserService.remove(wrapper);
|
|
tbExamInvigilateUserService.remove(wrapper);
|
|
|
|
|
|
if (!CollectionUtils.isEmpty(tbUserList)) {
|
|
if (!CollectionUtils.isEmpty(tbUserList)) {
|
|
@@ -281,6 +300,15 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
}
|
|
}
|
|
if (!CollectionUtils.isEmpty(tbExamInvigilateUserList)) {
|
|
if (!CollectionUtils.isEmpty(tbExamInvigilateUserList)) {
|
|
tbExamInvigilateUserService.saveOrUpdateBatch(tbExamInvigilateUserList);
|
|
tbExamInvigilateUserService.saveOrUpdateBatch(tbExamInvigilateUserList);
|
|
|
|
+
|
|
|
|
+ for (TBExamInvigilateUser t : tbExamInvigilateUserList) {
|
|
|
|
+ UpdateWrapper<TBExamInvigilateUser> updateWrapper = new UpdateWrapper<>();
|
|
|
|
+ updateWrapper.lambda().set(TBExamInvigilateUser::getRoomName, t.getRoomName())
|
|
|
|
+ .eq(TBExamInvigilateUser::getRoomCode, t.getRoomCode())
|
|
|
|
+ .eq(TBExamInvigilateUser::getExamId, t.getExamId())
|
|
|
|
+ .eq(TBExamInvigilateUser::getOrgId, t.getOrgId());
|
|
|
|
+ tbExamInvigilateUserService.update(updateWrapper);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
map.put("line", line);
|
|
map.put("line", line);
|
|
return map;
|
|
return map;
|
|
@@ -337,13 +365,17 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
//先推送考试
|
|
//先推送考试
|
|
ExamCacheBean examCacheBean = teExamService.getExamCacheBean(examId);
|
|
ExamCacheBean examCacheBean = teExamService.getExamCacheBean(examId);
|
|
TBTaskHistory tbTaskHistory = (TBTaskHistory) map.get("tbTaskHistory");
|
|
TBTaskHistory tbTaskHistory = (TBTaskHistory) map.get("tbTaskHistory");
|
|
- JSONObject jsonObject = Objects.nonNull(tbTaskHistory.getRemark()) ? JSONObject.parseObject(tbTaskHistory.getRemark()) : null;
|
|
|
|
|
|
+ JSONObject jsonObject = Objects.nonNull(tbTaskHistory.getRemark()) ?
|
|
|
|
+ JSONObject.parseObject(tbTaskHistory.getRemark()) :
|
|
|
|
+ null;
|
|
Integer totalTaskSize = 1, currentTaskSize = 1, jsTotalTaskSize = 0, jsCurrentTaskSize = 0;
|
|
Integer totalTaskSize = 1, currentTaskSize = 1, jsTotalTaskSize = 0, jsCurrentTaskSize = 0;
|
|
Long cloudMarkExamId = null;
|
|
Long cloudMarkExamId = null;
|
|
|
|
|
|
TEExam teExam = teExamService.cacheConvert(examCacheBean);
|
|
TEExam teExam = teExamService.cacheConvert(examCacheBean);
|
|
if (Objects.isNull(tbTaskHistory.getEntityId())) {
|
|
if (Objects.isNull(tbTaskHistory.getEntityId())) {
|
|
- cloudMarkExamId = cloudMarkUtil.callExamSaveApi(new SaveExamParams(orgId, null, examCode, examCacheBean.getName(), DateUtil.format(new Date(examCacheBean.getStartTime()), Constants.DEFAULT_DATE_PATTERN)));
|
|
|
|
|
|
+ cloudMarkExamId = cloudMarkUtil.callExamSaveApi(
|
|
|
|
+ new SaveExamParams(orgId, null, examCode, examCacheBean.getName(),
|
|
|
|
+ DateUtil.format(new Date(examCacheBean.getStartTime()), Constants.DEFAULT_DATE_PATTERN)));
|
|
teExam.setUpdateTime(System.currentTimeMillis());
|
|
teExam.setUpdateTime(System.currentTimeMillis());
|
|
teExam.setThirdExamId(String.valueOf(cloudMarkExamId));
|
|
teExam.setThirdExamId(String.valueOf(cloudMarkExamId));
|
|
teExamService.updateById(teExam);
|
|
teExamService.updateById(teExam);
|
|
@@ -367,22 +399,26 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
tbTaskHistoryService.updateById(tbTaskHistory);
|
|
tbTaskHistoryService.updateById(tbTaskHistory);
|
|
|
|
|
|
//推送试卷科目
|
|
//推送试卷科目
|
|
- Set<Long> examPaperIdSet = pushExamPaperLogic(map, jsonObject, totalTaskSize, jsCurrentTaskSize, currentTaskSize, cloudMarkExamId);
|
|
|
|
|
|
+ Set<Long> examPaperIdSet = pushExamPaperLogic(map, jsonObject, totalTaskSize, jsCurrentTaskSize,
|
|
|
|
+ currentTaskSize, cloudMarkExamId);
|
|
if (CollectionUtils.isEmpty(examPaperIdSet)) {
|
|
if (CollectionUtils.isEmpty(examPaperIdSet)) {
|
|
throw new BusinessException("没有考试试卷信息");
|
|
throw new BusinessException("没有考试试卷信息");
|
|
}
|
|
}
|
|
|
|
|
|
//获取所有待阅卷的考生
|
|
//获取所有待阅卷的考生
|
|
- List<TEExamStudent> teExamStudentList = getExamStudentNeedMarkAll(map, jsonObject, teExam, examPaperIdSet, jsTotalTaskSize, jsCurrentTaskSize);
|
|
|
|
|
|
+ List<TEExamStudent> teExamStudentList = getExamStudentNeedMarkAll(map, jsonObject, teExam, examPaperIdSet,
|
|
|
|
+ jsTotalTaskSize, jsCurrentTaskSize);
|
|
|
|
|
|
//获取只有一次考试记录的考生
|
|
//获取只有一次考试记录的考生
|
|
List<TOeExamRecord> tOeExamRecordList = getExamRecordOnce(map, jsonObject, examPaperIdSet);
|
|
List<TOeExamRecord> tOeExamRecordList = getExamRecordOnce(map, jsonObject, examPaperIdSet);
|
|
|
|
|
|
//获取多次考试记录的考试
|
|
//获取多次考试记录的考试
|
|
Boolean examStudentBreachPush = (Boolean) map.get(SystemConstant.EXAM_STUDENT_BREACH_PUSH);
|
|
Boolean examStudentBreachPush = (Boolean) map.get(SystemConstant.EXAM_STUDENT_BREACH_PUSH);
|
|
- List<TOeExamRecord> tOeExamRecordManyList = tOeExamRecordService.findExamRecordNeedMarkAll(examId, examPaperIdSet, true, examStudentBreachPush);
|
|
|
|
|
|
+ List<TOeExamRecord> tOeExamRecordManyList = tOeExamRecordService.findExamRecordNeedMarkAll(examId,
|
|
|
|
+ examPaperIdSet, true, examStudentBreachPush);
|
|
if (!CollectionUtils.isEmpty(tOeExamRecordManyList)) {
|
|
if (!CollectionUtils.isEmpty(tOeExamRecordManyList)) {
|
|
- Set<Long> manyExamStudentIdSet = tOeExamRecordManyList.stream().map(s -> s.getExamStudentId()).collect(Collectors.toSet());
|
|
|
|
|
|
+ Set<Long> manyExamStudentIdSet = tOeExamRecordManyList.stream().map(s -> s.getExamStudentId())
|
|
|
|
+ .collect(Collectors.toSet());
|
|
jsonObject.put("examRecordManyListSize", manyExamStudentIdSet.size());
|
|
jsonObject.put("examRecordManyListSize", manyExamStudentIdSet.size());
|
|
tbTaskHistory.setRemark(jsonObject.toJSONString());
|
|
tbTaskHistory.setRemark(jsonObject.toJSONString());
|
|
tbTaskHistoryService.updateById(tbTaskHistory);
|
|
tbTaskHistoryService.updateById(tbTaskHistory);
|
|
@@ -391,11 +427,7 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
}
|
|
}
|
|
|
|
|
|
//推送考试记录的考生开始
|
|
//推送考试记录的考生开始
|
|
- pushExamStudentLogic(map,
|
|
|
|
- jsonObject,
|
|
|
|
- teExamStudentList,
|
|
|
|
- tOeExamRecordList,
|
|
|
|
- jsCurrentTaskSize,
|
|
|
|
|
|
+ pushExamStudentLogic(map, jsonObject, teExamStudentList, tOeExamRecordList, jsCurrentTaskSize,
|
|
cloudMarkExamId);
|
|
cloudMarkExamId);
|
|
}
|
|
}
|
|
return pushDataSuccess(map, jsonObject);
|
|
return pushDataSuccess(map, jsonObject);
|
|
@@ -408,8 +440,7 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
* @param jsonObject
|
|
* @param jsonObject
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
- private Map<String, Object> pushDataSuccess(Map<String, Object> map,
|
|
|
|
- JSONObject jsonObject) {
|
|
|
|
|
|
+ private Map<String, Object> pushDataSuccess(Map<String, Object> map, JSONObject jsonObject) {
|
|
TBTaskHistory tbTaskHistory = (TBTaskHistory) map.get("tbTaskHistory");
|
|
TBTaskHistory tbTaskHistory = (TBTaskHistory) map.get("tbTaskHistory");
|
|
List<String> txtList = (List<String>) map.get("txtList");
|
|
List<String> txtList = (List<String>) map.get("txtList");
|
|
StringJoiner stringJoiner = new StringJoiner("");
|
|
StringJoiner stringJoiner = new StringJoiner("");
|
|
@@ -433,13 +464,13 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
* @param examPaperIdSet
|
|
* @param examPaperIdSet
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
- private List<TOeExamRecord> getExamRecordOnce(Map<String, Object> map,
|
|
|
|
- JSONObject jsonObject,
|
|
|
|
- Set<Long> examPaperIdSet) {
|
|
|
|
|
|
+ private List<TOeExamRecord> getExamRecordOnce(Map<String, Object> map, JSONObject jsonObject,
|
|
|
|
+ Set<Long> examPaperIdSet) {
|
|
Long examId = (Long) map.get(SystemConstant.EXAM_ID);
|
|
Long examId = (Long) map.get(SystemConstant.EXAM_ID);
|
|
TBTaskHistory tbTaskHistory = (TBTaskHistory) map.get("tbTaskHistory");
|
|
TBTaskHistory tbTaskHistory = (TBTaskHistory) map.get("tbTaskHistory");
|
|
Boolean examStudentBreachPush = (Boolean) map.get(SystemConstant.EXAM_STUDENT_BREACH_PUSH);
|
|
Boolean examStudentBreachPush = (Boolean) map.get(SystemConstant.EXAM_STUDENT_BREACH_PUSH);
|
|
- List<TOeExamRecord> tOeExamRecordList = tOeExamRecordService.findExamRecordNeedMarkAll(examId, examPaperIdSet, false, examStudentBreachPush);
|
|
|
|
|
|
+ List<TOeExamRecord> tOeExamRecordList = tOeExamRecordService.findExamRecordNeedMarkAll(examId, examPaperIdSet,
|
|
|
|
+ false, examStudentBreachPush);
|
|
if (!CollectionUtils.isEmpty(tOeExamRecordList)) {
|
|
if (!CollectionUtils.isEmpty(tOeExamRecordList)) {
|
|
jsonObject.put("examRecordListSize", tOeExamRecordList.size());
|
|
jsonObject.put("examRecordListSize", tOeExamRecordList.size());
|
|
|
|
|
|
@@ -448,8 +479,10 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
|
|
|
|
BigDecimal progress = BigDecimal.valueOf(0);
|
|
BigDecimal progress = BigDecimal.valueOf(0);
|
|
BigDecimal b = BigDecimal.valueOf(100);
|
|
BigDecimal b = BigDecimal.valueOf(100);
|
|
- progress = BigDecimal.valueOf(currentTaskSize).divide(BigDecimal.valueOf(totalTaskSize), 2, BigDecimal.ROUND_HALF_UP).multiply(b);
|
|
|
|
- if (Objects.isNull(tbTaskHistory.getProgress()) || (Objects.nonNull(tbTaskHistory.getProgress()) && tbTaskHistory.getProgress().doubleValue() < progress.doubleValue())) {
|
|
|
|
|
|
+ progress = BigDecimal.valueOf(currentTaskSize)
|
|
|
|
+ .divide(BigDecimal.valueOf(totalTaskSize), 2, BigDecimal.ROUND_HALF_UP).multiply(b);
|
|
|
|
+ if (Objects.isNull(tbTaskHistory.getProgress()) || (Objects.nonNull(tbTaskHistory.getProgress())
|
|
|
|
+ && tbTaskHistory.getProgress().doubleValue() < progress.doubleValue())) {
|
|
tbTaskHistory.setProgress(progress.doubleValue());
|
|
tbTaskHistory.setProgress(progress.doubleValue());
|
|
tbTaskHistoryService.updateById(tbTaskHistory);
|
|
tbTaskHistoryService.updateById(tbTaskHistory);
|
|
}
|
|
}
|
|
@@ -471,23 +504,21 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
* @param jsCurrentTaskSize
|
|
* @param jsCurrentTaskSize
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
- private List<TEExamStudent> getExamStudentNeedMarkAll(Map<String, Object> map,
|
|
|
|
- JSONObject jsonObject,
|
|
|
|
- TEExam teExam,
|
|
|
|
- Set<Long> examPaperIdSet,
|
|
|
|
- Integer jsTotalTaskSize,
|
|
|
|
- Integer jsCurrentTaskSize) {
|
|
|
|
|
|
+ private List<TEExamStudent> getExamStudentNeedMarkAll(Map<String, Object> map, JSONObject jsonObject, TEExam teExam,
|
|
|
|
+ Set<Long> examPaperIdSet, Integer jsTotalTaskSize, Integer jsCurrentTaskSize) {
|
|
Long examId = (Long) map.get(SystemConstant.EXAM_ID);
|
|
Long examId = (Long) map.get(SystemConstant.EXAM_ID);
|
|
TBTaskHistory tbTaskHistory = (TBTaskHistory) map.get("tbTaskHistory");
|
|
TBTaskHistory tbTaskHistory = (TBTaskHistory) map.get("tbTaskHistory");
|
|
Boolean examStudentBreachPush = (Boolean) map.get(SystemConstant.EXAM_STUDENT_BREACH_PUSH);
|
|
Boolean examStudentBreachPush = (Boolean) map.get(SystemConstant.EXAM_STUDENT_BREACH_PUSH);
|
|
- List<TEExamStudent> teExamStudentList = teExamStudentService.findExamStudentNeedMarkAll(examId, examPaperIdSet, examStudentBreachPush);
|
|
|
|
|
|
+ List<TEExamStudent> teExamStudentList = teExamStudentService.findExamStudentNeedMarkAll(examId, examPaperIdSet,
|
|
|
|
+ examStudentBreachPush);
|
|
if (CollectionUtils.isEmpty(teExamStudentList)) {
|
|
if (CollectionUtils.isEmpty(teExamStudentList)) {
|
|
throw new BusinessException("没有待阅卷的考生");
|
|
throw new BusinessException("没有待阅卷的考生");
|
|
}
|
|
}
|
|
Integer totalTaskSize = jsonObject.getInteger("totalTaskSize");
|
|
Integer totalTaskSize = jsonObject.getInteger("totalTaskSize");
|
|
Integer currentTaskSize = jsonObject.getInteger("currentTaskSize");
|
|
Integer currentTaskSize = jsonObject.getInteger("currentTaskSize");
|
|
totalTaskSize = totalTaskSize.intValue() + teExamStudentList.size();
|
|
totalTaskSize = totalTaskSize.intValue() + teExamStudentList.size();
|
|
- if (jsCurrentTaskSize.intValue() > currentTaskSize.intValue() && jsTotalTaskSize.intValue() > 0 && jsTotalTaskSize.intValue() != totalTaskSize.intValue()) {
|
|
|
|
|
|
+ if (jsCurrentTaskSize.intValue() > currentTaskSize.intValue() && jsTotalTaskSize.intValue() > 0
|
|
|
|
+ && jsTotalTaskSize.intValue() != totalTaskSize.intValue()) {
|
|
teExam.setUpdateTime(System.currentTimeMillis());
|
|
teExam.setUpdateTime(System.currentTimeMillis());
|
|
teExam.setThirdExamId(null);
|
|
teExam.setThirdExamId(null);
|
|
teExamService.updateById(teExam);
|
|
teExamService.updateById(teExam);
|
|
@@ -510,12 +541,9 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
* @param jsCurrentTaskSize
|
|
* @param jsCurrentTaskSize
|
|
* @param cloudMarkExamId
|
|
* @param cloudMarkExamId
|
|
*/
|
|
*/
|
|
- private void pushExamStudentLogic(Map<String, Object> map,
|
|
|
|
- JSONObject jsonObject,
|
|
|
|
- List<TEExamStudent> teExamStudentList,
|
|
|
|
- List<TOeExamRecord> tOeExamRecordList,
|
|
|
|
- Integer jsCurrentTaskSize,
|
|
|
|
- Long cloudMarkExamId) throws IOException {
|
|
|
|
|
|
+ private void pushExamStudentLogic(Map<String, Object> map, JSONObject jsonObject,
|
|
|
|
+ List<TEExamStudent> teExamStudentList, List<TOeExamRecord> tOeExamRecordList, Integer jsCurrentTaskSize,
|
|
|
|
+ Long cloudMarkExamId) throws IOException {
|
|
Long orgId = Long.parseLong(String.valueOf(map.get(SystemConstant.ORG_ID)));
|
|
Long orgId = Long.parseLong(String.valueOf(map.get(SystemConstant.ORG_ID)));
|
|
TBTaskHistory tbTaskHistory = (TBTaskHistory) map.get("tbTaskHistory");
|
|
TBTaskHistory tbTaskHistory = (TBTaskHistory) map.get("tbTaskHistory");
|
|
Boolean objectiveScorePush = (Boolean) map.get(SystemConstant.OBJECTIVE_SCORE_PUSH);
|
|
Boolean objectiveScorePush = (Boolean) map.get(SystemConstant.OBJECTIVE_SCORE_PUSH);
|
|
@@ -527,8 +555,8 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
Integer totalTaskSize = jsonObject.getInteger("totalTaskSize");
|
|
Integer totalTaskSize = jsonObject.getInteger("totalTaskSize");
|
|
Integer currentTaskSize = jsonObject.getInteger("currentTaskSize");
|
|
Integer currentTaskSize = jsonObject.getInteger("currentTaskSize");
|
|
|
|
|
|
-// Map<Long, TOeExamRecord> tOeExamRecordMap = tOeExamRecordList.stream().collect(
|
|
|
|
-// Collectors.toMap(TOeExamRecord::getExamStudentId, Function.identity(), (dto1, dto2) -> dto1));
|
|
|
|
|
|
+ // Map<Long, TOeExamRecord> tOeExamRecordMap = tOeExamRecordList.stream().collect(
|
|
|
|
+ // Collectors.toMap(TOeExamRecord::getExamStudentId, Function.identity(), (dto1, dto2) -> dto1));
|
|
LinkedMultiValueMap<Long, TOeExamRecord> tOeExamRecordMap = new LinkedMultiValueMap<>();
|
|
LinkedMultiValueMap<Long, TOeExamRecord> tOeExamRecordMap = new LinkedMultiValueMap<>();
|
|
for (TOeExamRecord t : tOeExamRecordList) {
|
|
for (TOeExamRecord t : tOeExamRecordList) {
|
|
tOeExamRecordMap.add(t.getExamStudentId(), t);
|
|
tOeExamRecordMap.add(t.getExamStudentId(), t);
|
|
@@ -559,31 +587,39 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
}
|
|
}
|
|
for (TOeExamRecord tOeExamRecord : tOeExamRecordExamStudentList) {
|
|
for (TOeExamRecord tOeExamRecord : tOeExamRecordExamStudentList) {
|
|
String courseCode = t.getCourseCode() + SystemConstant.JOINT_MARK + tOeExamRecord.getPaperId();
|
|
String courseCode = t.getCourseCode() + SystemConstant.JOINT_MARK + tOeExamRecord.getPaperId();
|
|
- cloudMarkUtil.callStudentSaveApi(new SaveStudentParams(orgId, cloudMarkExamId, String.valueOf(tOeExamRecord.getId()),
|
|
|
|
- t.getIdentity(),
|
|
|
|
- t.getName(),
|
|
|
|
- tbOrg.getName(),
|
|
|
|
- Objects.isNull(t.getClassNo()) ? SystemConstant.VALUE_OF_BLANK_REQUIRED_FIELD : t.getClassNo(),
|
|
|
|
- SystemConstant.VALUE_OF_BLANK_REQUIRED_FIELD,
|
|
|
|
- courseCode,
|
|
|
|
- t.getCourseName()));
|
|
|
|
-
|
|
|
|
- OpenRecordNeedMarkBean openRecordNeedMarkBean = GsonUtil.fromJson(GsonUtil.toJson(tOeExamRecord), OpenRecordNeedMarkBean.class);
|
|
|
|
- List<OpenRecordAnswerTempBean> answersTemp = examAnswerService.findByExamRecordId(tOeExamRecord.getId());
|
|
|
|
- openRecordNeedMarkBean = SystemConstant.filterAnswer(openRecordNeedMarkBean, answersTemp, paperStructMap);
|
|
|
|
|
|
+ cloudMarkUtil.callStudentSaveApi(
|
|
|
|
+ new SaveStudentParams(orgId, cloudMarkExamId, String.valueOf(tOeExamRecord.getId()),
|
|
|
|
+ t.getIdentity(), t.getName(), tbOrg.getName(), Objects.isNull(t.getClassNo()) ?
|
|
|
|
+ SystemConstant.VALUE_OF_BLANK_REQUIRED_FIELD :
|
|
|
|
+ t.getClassNo(), SystemConstant.VALUE_OF_BLANK_REQUIRED_FIELD, courseCode,
|
|
|
|
+ t.getCourseName()));
|
|
|
|
+
|
|
|
|
+ OpenRecordNeedMarkBean openRecordNeedMarkBean = GsonUtil.fromJson(
|
|
|
|
+ GsonUtil.toJson(tOeExamRecord), OpenRecordNeedMarkBean.class);
|
|
|
|
+ List<OpenRecordAnswerTempBean> answersTemp = examAnswerService.findByExamRecordId(
|
|
|
|
+ tOeExamRecord.getId());
|
|
|
|
+ openRecordNeedMarkBean = SystemConstant.filterAnswer(openRecordNeedMarkBean, answersTemp,
|
|
|
|
+ paperStructMap);
|
|
if (!CollectionUtils.isEmpty(openRecordNeedMarkBean.getAnswers())) {
|
|
if (!CollectionUtils.isEmpty(openRecordNeedMarkBean.getAnswers())) {
|
|
- File fileAnswerJson = new File(SystemConstant.TEMP_FILES_DIR + File.separator + CloudMarkFileUploadTypeEnum.ANSWER.getCode() + File.separator + SystemConstant.getNanoId() + SystemConstant.JSON_PREFIX);
|
|
|
|
|
|
+ File fileAnswerJson = new File(SystemConstant.TEMP_FILES_DIR + File.separator
|
|
|
|
+ + CloudMarkFileUploadTypeEnum.ANSWER.getCode() + File.separator
|
|
|
|
+ + SystemConstant.getNanoId() + SystemConstant.JSON_PREFIX);
|
|
if (!fileAnswerJson.exists()) {
|
|
if (!fileAnswerJson.exists()) {
|
|
fileAnswerJson.getParentFile().mkdirs();
|
|
fileAnswerJson.getParentFile().mkdirs();
|
|
fileAnswerJson.createNewFile();
|
|
fileAnswerJson.createNewFile();
|
|
}
|
|
}
|
|
- IOUtils.write(JacksonUtil.parseJson(openRecordNeedMarkBean.getAnswers()).getBytes(SystemConstant.CHARSET_NAME), new FileOutputStream(fileAnswerJson));
|
|
|
|
|
|
+ IOUtils.write(JacksonUtil.parseJson(openRecordNeedMarkBean.getAnswers())
|
|
|
|
+ .getBytes(SystemConstant.CHARSET_NAME), new FileOutputStream(fileAnswerJson));
|
|
recordJsonList.add(fileAnswerJson);
|
|
recordJsonList.add(fileAnswerJson);
|
|
- cloudMarkUtil.callFileUploadApi(new FileUploadParams(orgId, cloudMarkExamId, String.valueOf(tOeExamRecord.getId()), fileAnswerJson, CloudMarkFileUploadTypeEnum.JSON));
|
|
|
|
|
|
+ cloudMarkUtil.callFileUploadApi(
|
|
|
|
+ new FileUploadParams(orgId, cloudMarkExamId, String.valueOf(tOeExamRecord.getId()),
|
|
|
|
+ fileAnswerJson, CloudMarkFileUploadTypeEnum.JSON));
|
|
}
|
|
}
|
|
|
|
|
|
if (Objects.nonNull(objectiveScorePush) && objectiveScorePush) {
|
|
if (Objects.nonNull(objectiveScorePush) && objectiveScorePush) {
|
|
- cloudMarkUtil.callStudentObjectiveScoreApi(new StudentObjectiveScoreParams(orgId, cloudMarkExamId, String.valueOf(tOeExamRecord.getId()), tOeExamRecord.getObjectiveScore()));
|
|
|
|
|
|
+ cloudMarkUtil.callStudentObjectiveScoreApi(
|
|
|
|
+ new StudentObjectiveScoreParams(orgId, cloudMarkExamId,
|
|
|
|
+ String.valueOf(tOeExamRecord.getId()), tOeExamRecord.getObjectiveScore()));
|
|
}
|
|
}
|
|
jsonObject.put("currentTaskSize", currentTaskSize);
|
|
jsonObject.put("currentTaskSize", currentTaskSize);
|
|
currentTaskSize++;
|
|
currentTaskSize++;
|
|
@@ -591,8 +627,10 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- progress = BigDecimal.valueOf(currentTaskSize).divide(BigDecimal.valueOf(totalTaskSize), 2, BigDecimal.ROUND_HALF_UP).multiply(b);
|
|
|
|
- if (Objects.isNull(tbTaskHistory.getProgress()) || (Objects.nonNull(tbTaskHistory.getProgress()) && tbTaskHistory.getProgress().doubleValue() < progress.doubleValue())) {
|
|
|
|
|
|
+ progress = BigDecimal.valueOf(currentTaskSize)
|
|
|
|
+ .divide(BigDecimal.valueOf(totalTaskSize), 2, BigDecimal.ROUND_HALF_UP).multiply(b);
|
|
|
|
+ if (Objects.isNull(tbTaskHistory.getProgress()) || (Objects.nonNull(tbTaskHistory.getProgress())
|
|
|
|
+ && tbTaskHistory.getProgress().doubleValue() < progress.doubleValue())) {
|
|
tbTaskHistory.setProgress(progress.doubleValue());
|
|
tbTaskHistory.setProgress(progress.doubleValue());
|
|
tbTaskHistoryService.updateById(tbTaskHistory);
|
|
tbTaskHistoryService.updateById(tbTaskHistory);
|
|
}
|
|
}
|
|
@@ -651,31 +689,35 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
switch (teExam.getRecordSelectStrategy()) {
|
|
switch (teExam.getRecordSelectStrategy()) {
|
|
- case HIGHEST_OBJECTIVE_SCORE:
|
|
|
|
- if (subjective) {
|
|
|
|
- final long time = maxFinishTime;
|
|
|
|
- finalResult.addAll(v.stream().filter(bean -> bean.getFinishTime() == time).collect(Collectors.toList()));
|
|
|
|
|
|
+ case HIGHEST_OBJECTIVE_SCORE:
|
|
|
|
+ if (subjective) {
|
|
|
|
+ final long time = maxFinishTime;
|
|
|
|
+ finalResult.addAll(
|
|
|
|
+ v.stream().filter(bean -> bean.getFinishTime() == time).collect(Collectors.toList()));
|
|
|
|
+ } else {
|
|
|
|
+ //客观分最高,客观分相同则全部提交阅卷
|
|
|
|
+ final double score = highestObjectiveScore;
|
|
|
|
+ List<TOeExamRecord> temoRecordResult = tempResult.stream()
|
|
|
|
+ .filter(bean -> bean.getObjectiveScore() == score).collect(Collectors.toList());
|
|
|
|
+ if (temoRecordResult.size() > 1) {
|
|
|
|
+ TOeExamRecord tOeExamRecord = temoRecordResult.stream()
|
|
|
|
+ .max((p1, p2) -> Long.compare(p1.getFinishTime(), p2.getFinishTime())).get();
|
|
|
|
+ finalResult.add(tOeExamRecord);
|
|
} else {
|
|
} else {
|
|
- //客观分最高,客观分相同则全部提交阅卷
|
|
|
|
- final double score = highestObjectiveScore;
|
|
|
|
- List<TOeExamRecord> temoRecordResult = tempResult.stream().filter(bean -> bean.getObjectiveScore() == score).collect(Collectors.toList());
|
|
|
|
- if (temoRecordResult.size() > 1) {
|
|
|
|
- TOeExamRecord tOeExamRecord = temoRecordResult.stream().max((p1, p2) -> Long.compare(p1.getFinishTime(), p2.getFinishTime())).get();
|
|
|
|
- finalResult.add(tOeExamRecord);
|
|
|
|
- } else {
|
|
|
|
- finalResult.add(temoRecordResult.get(0));
|
|
|
|
- }
|
|
|
|
|
|
+ finalResult.add(temoRecordResult.get(0));
|
|
}
|
|
}
|
|
- break;
|
|
|
|
- case LATEST:
|
|
|
|
- //最后一次提交
|
|
|
|
- final long time = maxFinishTime;
|
|
|
|
- finalResult.addAll(tempResult.stream().filter(bean -> bean.getFinishTime() == time).collect(Collectors.toList()));
|
|
|
|
- break;
|
|
|
|
- default:
|
|
|
|
- //总分最高,全部提交阅卷
|
|
|
|
- finalResult.addAll(tempResult);
|
|
|
|
- break;
|
|
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case LATEST:
|
|
|
|
+ //最后一次提交
|
|
|
|
+ final long time = maxFinishTime;
|
|
|
|
+ finalResult.addAll(tempResult.stream().filter(bean -> bean.getFinishTime() == time)
|
|
|
|
+ .collect(Collectors.toList()));
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ //总分最高,全部提交阅卷
|
|
|
|
+ finalResult.addAll(tempResult);
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
}
|
|
@@ -694,20 +736,16 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
* @return
|
|
* @return
|
|
* @throws IOException
|
|
* @throws IOException
|
|
*/
|
|
*/
|
|
- private Set<Long> pushExamPaperLogic(Map<String, Object> map,
|
|
|
|
- JSONObject jsonObject,
|
|
|
|
- Integer totalTaskSize,
|
|
|
|
- Integer jsCurrentTaskSize,
|
|
|
|
- Integer currentTaskSize,
|
|
|
|
- Long cloudMarkExamId) throws IOException {
|
|
|
|
|
|
+ private Set<Long> pushExamPaperLogic(Map<String, Object> map, JSONObject jsonObject, Integer totalTaskSize,
|
|
|
|
+ Integer jsCurrentTaskSize, Integer currentTaskSize, Long cloudMarkExamId) throws IOException {
|
|
Long examId = (Long) map.get(SystemConstant.EXAM_ID);
|
|
Long examId = (Long) map.get(SystemConstant.EXAM_ID);
|
|
Long orgId = Long.parseLong(String.valueOf(map.get(SystemConstant.ORG_ID)));
|
|
Long orgId = Long.parseLong(String.valueOf(map.get(SystemConstant.ORG_ID)));
|
|
TBTaskHistory tbTaskHistory = (TBTaskHistory) map.get("tbTaskHistory");
|
|
TBTaskHistory tbTaskHistory = (TBTaskHistory) map.get("tbTaskHistory");
|
|
List<File> paperJsonList = null;
|
|
List<File> paperJsonList = null;
|
|
|
|
|
|
QueryWrapper<TEExamPaper> teExamPaperQueryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<TEExamPaper> teExamPaperQueryWrapper = new QueryWrapper<>();
|
|
- teExamPaperQueryWrapper.lambda().eq(TEExamPaper::getExamId, examId)
|
|
|
|
- .gt(TEExamPaper::getTotalSubjectiveScore, 0).orderByAsc(TEExamPaper::getId);
|
|
|
|
|
|
+ teExamPaperQueryWrapper.lambda().eq(TEExamPaper::getExamId, examId).gt(TEExamPaper::getTotalSubjectiveScore, 0)
|
|
|
|
+ .orderByAsc(TEExamPaper::getId);
|
|
List<TEExamPaper> teExamPaperList = teExamPaperService.list(teExamPaperQueryWrapper);
|
|
List<TEExamPaper> teExamPaperList = teExamPaperService.list(teExamPaperQueryWrapper);
|
|
if (CollectionUtils.isEmpty(teExamPaperList)) {
|
|
if (CollectionUtils.isEmpty(teExamPaperList)) {
|
|
throw new BusinessException("没有考试试卷");
|
|
throw new BusinessException("没有考试试卷");
|
|
@@ -743,9 +781,11 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
continue;
|
|
continue;
|
|
} else {
|
|
} else {
|
|
String courseCode = t.getCourseCode() + SystemConstant.JOINT_MARK + t.getId();
|
|
String courseCode = t.getCourseCode() + SystemConstant.JOINT_MARK + t.getId();
|
|
- cloudMarkUtil.callSubjectSaveApi(new SaveSubjectParams(orgId, cloudMarkExamId, courseCode, t.getName()));
|
|
|
|
|
|
+ cloudMarkUtil.callSubjectSaveApi(
|
|
|
|
+ new SaveSubjectParams(orgId, cloudMarkExamId, courseCode, t.getName()));
|
|
//解析试卷JSON文件
|
|
//解析试卷JSON文件
|
|
- JSONObject paperResult = JSONObject.parseObject(new String(ossUtil.download(false, t.getPaperViewPath()), StandardCharsets.UTF_8));
|
|
|
|
|
|
+ JSONObject paperResult = JSONObject.parseObject(
|
|
|
|
+ new String(ossUtil.download(false, t.getPaperViewPath()), StandardCharsets.UTF_8));
|
|
paperResult.put(SystemConstant.ID, t.getId());
|
|
paperResult.put(SystemConstant.ID, t.getId());
|
|
paperResult.put("code", t.getCode());
|
|
paperResult.put("code", t.getCode());
|
|
paperResult.put(SystemConstant.NAME, t.getName());
|
|
paperResult.put(SystemConstant.NAME, t.getName());
|
|
@@ -753,16 +793,20 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
JSONArray detailCollection = new JSONArray();
|
|
JSONArray detailCollection = new JSONArray();
|
|
JSONArray paperDetails = paperResult.getJSONArray(SystemConstant.DETAILS);
|
|
JSONArray paperDetails = paperResult.getJSONArray(SystemConstant.DETAILS);
|
|
//解析答案JSON文件
|
|
//解析答案JSON文件
|
|
- JSONObject answerJson = JSONObject.parseObject(new String(ossUtil.download(false, t.getAnswerPath()), StandardCharsets.UTF_8));
|
|
|
|
|
|
+ JSONObject answerJson = JSONObject.parseObject(
|
|
|
|
+ new String(ossUtil.download(false, t.getAnswerPath()), StandardCharsets.UTF_8));
|
|
JSONArray answerDetails = answerJson.getJSONArray(SystemConstant.DETAILS);
|
|
JSONArray answerDetails = answerJson.getJSONArray(SystemConstant.DETAILS);
|
|
for (int j = 0; j < paperDetails.size(); j++) {
|
|
for (int j = 0; j < paperDetails.size(); j++) {
|
|
//遍历所有大题
|
|
//遍历所有大题
|
|
JSONObject paperDetail = paperDetails.getJSONObject(j);
|
|
JSONObject paperDetail = paperDetails.getJSONObject(j);
|
|
- JSONObject answerDetail = SystemConstant.findJsonObject(answerDetails, paperDetail.getIntValue(SystemConstant.NUMBER));
|
|
|
|
|
|
+ JSONObject answerDetail = SystemConstant.findJsonObject(answerDetails,
|
|
|
|
+ paperDetail.getIntValue(SystemConstant.NUMBER));
|
|
//按条件过滤需要的小题同时合并答案
|
|
//按条件过滤需要的小题同时合并答案
|
|
- JSONArray questionCollection = SystemConstant.filterQuestions(paperDetail.getJSONArray(SystemConstant.QUESTIONS),
|
|
|
|
- Objects.nonNull(answerDetail) ? answerDetail.getJSONArray(SystemConstant.QUESTIONS) : null, false,
|
|
|
|
- true);
|
|
|
|
|
|
+ JSONArray questionCollection = SystemConstant.filterQuestions(
|
|
|
|
+ paperDetail.getJSONArray(SystemConstant.QUESTIONS),
|
|
|
|
+ Objects.nonNull(answerDetail) ?
|
|
|
|
+ answerDetail.getJSONArray(SystemConstant.QUESTIONS) :
|
|
|
|
+ null, false, true);
|
|
//有小题的情况下,本大题才需要被包含
|
|
//有小题的情况下,本大题才需要被包含
|
|
if (questionCollection.size() > 0) {
|
|
if (questionCollection.size() > 0) {
|
|
paperDetail.put(SystemConstant.QUESTIONS, questionCollection);
|
|
paperDetail.put(SystemConstant.QUESTIONS, questionCollection);
|
|
@@ -772,14 +816,19 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
paperResult.put(SystemConstant.DETAILS, detailCollection);
|
|
paperResult.put(SystemConstant.DETAILS, detailCollection);
|
|
}
|
|
}
|
|
|
|
|
|
- File filePaperJson = new File(SystemConstant.TEMP_FILES_DIR + File.separator + CloudMarkFileUploadTypeEnum.PAPER.getCode() + File.separator + SystemConstant.getNanoId() + SystemConstant.JSON_PREFIX);
|
|
|
|
|
|
+ File filePaperJson = new File(SystemConstant.TEMP_FILES_DIR + File.separator
|
|
|
|
+ + CloudMarkFileUploadTypeEnum.PAPER.getCode() + File.separator
|
|
|
|
+ + SystemConstant.getNanoId() + SystemConstant.JSON_PREFIX);
|
|
if (!filePaperJson.exists()) {
|
|
if (!filePaperJson.exists()) {
|
|
filePaperJson.getParentFile().mkdirs();
|
|
filePaperJson.getParentFile().mkdirs();
|
|
filePaperJson.createNewFile();
|
|
filePaperJson.createNewFile();
|
|
}
|
|
}
|
|
- IOUtils.write(paperResult.toJSONString().getBytes(SystemConstant.CHARSET_NAME), new FileOutputStream(filePaperJson));
|
|
|
|
|
|
+ IOUtils.write(paperResult.toJSONString().getBytes(SystemConstant.CHARSET_NAME),
|
|
|
|
+ new FileOutputStream(filePaperJson));
|
|
paperJsonList.add(filePaperJson);
|
|
paperJsonList.add(filePaperJson);
|
|
- FileUploadParams fileUploadParamsPaperJson = new FileUploadParams(orgId, cloudMarkExamId, courseCode, CloudMarkFileUploadTypeEnum.JSON, filePaperJson, CloudMarkFileUploadTypeEnum.PAPER);
|
|
|
|
|
|
+ FileUploadParams fileUploadParamsPaperJson = new FileUploadParams(orgId, cloudMarkExamId,
|
|
|
|
+ courseCode, CloudMarkFileUploadTypeEnum.JSON, filePaperJson,
|
|
|
|
+ CloudMarkFileUploadTypeEnum.PAPER);
|
|
cloudMarkUtil.callFileUploadApi(fileUploadParamsPaperJson);
|
|
cloudMarkUtil.callFileUploadApi(fileUploadParamsPaperJson);
|
|
|
|
|
|
jsonObject.put("currentTaskSize", currentTaskSize);
|
|
jsonObject.put("currentTaskSize", currentTaskSize);
|
|
@@ -787,8 +836,10 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
tbTaskHistory.setRemark(jsonObject.toJSONString());
|
|
tbTaskHistory.setRemark(jsonObject.toJSONString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- progress = BigDecimal.valueOf(currentTaskSize).divide(BigDecimal.valueOf(totalTaskSize), 2, BigDecimal.ROUND_HALF_UP).multiply(b);
|
|
|
|
- if (Objects.isNull(tbTaskHistory.getProgress()) || (Objects.nonNull(tbTaskHistory.getProgress()) && tbTaskHistory.getProgress().doubleValue() < progress.doubleValue())) {
|
|
|
|
|
|
+ progress = BigDecimal.valueOf(currentTaskSize)
|
|
|
|
+ .divide(BigDecimal.valueOf(totalTaskSize), 2, BigDecimal.ROUND_HALF_UP).multiply(b);
|
|
|
|
+ if (Objects.isNull(tbTaskHistory.getProgress()) || (Objects.nonNull(tbTaskHistory.getProgress())
|
|
|
|
+ && tbTaskHistory.getProgress().doubleValue() < progress.doubleValue())) {
|
|
tbTaskHistory.setProgress(progress.doubleValue());
|
|
tbTaskHistory.setProgress(progress.doubleValue());
|
|
tbTaskHistoryService.updateById(tbTaskHistory);
|
|
tbTaskHistoryService.updateById(tbTaskHistory);
|
|
}
|
|
}
|
|
@@ -849,7 +900,9 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
* @param orgId
|
|
* @param orgId
|
|
* @param createId
|
|
* @param createId
|
|
*/
|
|
*/
|
|
- public void dataVerify(Long examId, String userName, String password, String roomCode, String roomName, Long orgId, Long createId, Set<TBUser> tbUserList, Set<TBUserRole> tbUserRoleList, Set<TBExamInvigilateUser> tbExamInvigilateUserList) throws UnsupportedEncodingException {
|
|
|
|
|
|
+ public void dataVerify(Long examId, String userName, String password, String roomCode, String roomName, Long orgId,
|
|
|
|
+ Long createId, Set<TBUser> tbUserList, Set<TBUserRole> tbUserRoleList,
|
|
|
|
+ Set<TBExamInvigilateUser> tbExamInvigilateUserList) throws UnsupportedEncodingException {
|
|
if (Objects.nonNull(userName)) {
|
|
if (Objects.nonNull(userName)) {
|
|
//先查询监考帐号是否存在
|
|
//先查询监考帐号是否存在
|
|
QueryWrapper<TBUser> tbUserQueryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<TBUser> tbUserQueryWrapper = new QueryWrapper<>();
|
|
@@ -871,17 +924,20 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
|
|
|
|
QueryWrapper<TBExamInvigilateUser> tbExamInvigilateUserQueryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<TBExamInvigilateUser> tbExamInvigilateUserQueryWrapper = new QueryWrapper<>();
|
|
tbExamInvigilateUserQueryWrapper.lambda().eq(TBExamInvigilateUser::getOrgId, orgId)
|
|
tbExamInvigilateUserQueryWrapper.lambda().eq(TBExamInvigilateUser::getOrgId, orgId)
|
|
- .eq(TBExamInvigilateUser::getUserId, tbUser.getId())
|
|
|
|
- .eq(TBExamInvigilateUser::getRoomCode, roomCode)
|
|
|
|
- .eq(TBExamInvigilateUser::getExamId, examId)
|
|
|
|
- .eq(TBExamInvigilateUser::getRoomName, roomName);
|
|
|
|
- TBExamInvigilateUser tbExamInvigilateUser = tbExamInvigilateUserService.getOne(tbExamInvigilateUserQueryWrapper);
|
|
|
|
|
|
+ .eq(TBExamInvigilateUser::getUserId, tbUser.getId()).eq(TBExamInvigilateUser::getRoomCode, roomCode)
|
|
|
|
+ .eq(TBExamInvigilateUser::getExamId, examId);
|
|
|
|
+ // .eq(TBExamInvigilateUser::getRoomName, roomName);
|
|
|
|
+ TBExamInvigilateUser tbExamInvigilateUser = tbExamInvigilateUserService.getOne(
|
|
|
|
+ tbExamInvigilateUserQueryWrapper);
|
|
if (Objects.isNull(tbExamInvigilateUser)) {//新增考场
|
|
if (Objects.isNull(tbExamInvigilateUser)) {//新增考场
|
|
tbExamInvigilateUser = new TBExamInvigilateUser(examId, orgId, tbUser.getId(), roomCode, roomName);
|
|
tbExamInvigilateUser = new TBExamInvigilateUser(examId, orgId, tbUser.getId(), roomCode, roomName);
|
|
|
|
+ } else {
|
|
|
|
+ tbExamInvigilateUser.setRoomName(roomName);
|
|
}
|
|
}
|
|
tbExamInvigilateUserList.add(tbExamInvigilateUser);
|
|
tbExamInvigilateUserList.add(tbExamInvigilateUser);
|
|
} else {
|
|
} else {
|
|
- TBExamInvigilateUser tbExamInvigilateUser = new TBExamInvigilateUser(examId, orgId, null, roomCode, roomName);
|
|
|
|
|
|
+ TBExamInvigilateUser tbExamInvigilateUser = new TBExamInvigilateUser(examId, orgId, null, roomCode,
|
|
|
|
+ roomName);
|
|
if (!tbExamInvigilateUserList.contains(tbExamInvigilateUser)) {
|
|
if (!tbExamInvigilateUserList.contains(tbExamInvigilateUser)) {
|
|
tbExamInvigilateUserList.add(tbExamInvigilateUser);
|
|
tbExamInvigilateUserList.add(tbExamInvigilateUser);
|
|
}
|
|
}
|
|
@@ -891,11 +947,15 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
private boolean checkRoomCodeExist(Long examId, String roomCode, Long orgId, String roomName) {
|
|
private boolean checkRoomCodeExist(Long examId, String roomCode, Long orgId, String roomName) {
|
|
QueryWrapper<TBExamInvigilateUserTemp> tbExamInvigilateUserTempQueryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<TBExamInvigilateUserTemp> tbExamInvigilateUserTempQueryWrapper = new QueryWrapper<>();
|
|
tbExamInvigilateUserTempQueryWrapper.lambda().eq(TBExamInvigilateUserTemp::getExamId, examId)
|
|
tbExamInvigilateUserTempQueryWrapper.lambda().eq(TBExamInvigilateUserTemp::getExamId, examId)
|
|
- .eq(TBExamInvigilateUserTemp::getOrgId, orgId)
|
|
|
|
- .eq(TBExamInvigilateUserTemp::getRoomCode, roomCode)
|
|
|
|
- .eq(TBExamInvigilateUserTemp::getRoomName, roomName);
|
|
|
|
- TBExamInvigilateUserTemp tbExamInvigilateUserTemp = tbExamInvigilateUserTempService.getOne(tbExamInvigilateUserTempQueryWrapper);
|
|
|
|
- tbExamInvigilateUserTemp = Objects.isNull(tbExamInvigilateUserTemp) ? new TBExamInvigilateUserTemp(examId, orgId, roomCode, roomName) : tbExamInvigilateUserTemp;
|
|
|
|
|
|
+ .eq(TBExamInvigilateUserTemp::getOrgId, orgId).eq(TBExamInvigilateUserTemp::getRoomCode, roomCode);
|
|
|
|
+ // .eq(TBExamInvigilateUserTemp::getRoomName, roomName);
|
|
|
|
+ TBExamInvigilateUserTemp tbExamInvigilateUserTemp = tbExamInvigilateUserTempService.getOne(
|
|
|
|
+ tbExamInvigilateUserTempQueryWrapper);
|
|
|
|
+ if (Objects.isNull(tbExamInvigilateUserTemp)) {//新增考场
|
|
|
|
+ tbExamInvigilateUserTemp = new TBExamInvigilateUserTemp(examId, orgId, roomCode, roomName);
|
|
|
|
+ } else {
|
|
|
|
+ tbExamInvigilateUserTemp.setRoomName(roomName);
|
|
|
|
+ }
|
|
return tbExamInvigilateUserTempService.saveOrUpdate(tbExamInvigilateUserTemp);
|
|
return tbExamInvigilateUserTempService.saveOrUpdate(tbExamInvigilateUserTemp);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -911,16 +971,21 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
*/
|
|
*/
|
|
public List<String> importProgress(int max, int min, int size, List<String> txtList, TBTaskHistory tbTaskHistory) {
|
|
public List<String> importProgress(int max, int min, int size, List<String> txtList, TBTaskHistory tbTaskHistory) {
|
|
BigDecimal bigDecimal = BigDecimal.valueOf(100);
|
|
BigDecimal bigDecimal = BigDecimal.valueOf(100);
|
|
- BigDecimal progress = BigDecimal.valueOf(Double.valueOf(BigDecimal.valueOf(max).divide(BigDecimal.valueOf(size), 2, BigDecimal.ROUND_HALF_UP).multiply(bigDecimal).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue())).setScale(0, BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
+ BigDecimal progress = BigDecimal.valueOf(Double.valueOf(
|
|
|
|
+ BigDecimal.valueOf(max).divide(BigDecimal.valueOf(size), 2, BigDecimal.ROUND_HALF_UP)
|
|
|
|
+ .multiply(bigDecimal).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()))
|
|
|
|
+ .setScale(0, BigDecimal.ROUND_HALF_UP);
|
|
if (progress.intValue() == 100) {
|
|
if (progress.intValue() == 100) {
|
|
tbTaskHistory.setStatus(TaskStatusEnum.FINISH);
|
|
tbTaskHistory.setStatus(TaskStatusEnum.FINISH);
|
|
tbTaskHistory.setSummary("共处理了" + size + "条数据");
|
|
tbTaskHistory.setSummary("共处理了" + size + "条数据");
|
|
tbTaskHistory.setFinishTime(System.currentTimeMillis());
|
|
tbTaskHistory.setFinishTime(System.currentTimeMillis());
|
|
- txtList.add(DateUtil.format(new Date(), Constants.DEFAULT_DATE_PATTERN) + "->数据处理完毕," + tbTaskHistory.getSummary());
|
|
|
|
|
|
+ txtList.add(DateUtil.format(new Date(), Constants.DEFAULT_DATE_PATTERN) + "->数据处理完毕,"
|
|
|
|
+ + tbTaskHistory.getSummary());
|
|
} else {
|
|
} else {
|
|
tbTaskHistory.setStatus(TaskStatusEnum.RUNNING);
|
|
tbTaskHistory.setStatus(TaskStatusEnum.RUNNING);
|
|
tbTaskHistory.setSummary("正在处理第" + min + "条至" + max + "条数据");
|
|
tbTaskHistory.setSummary("正在处理第" + min + "条至" + max + "条数据");
|
|
- txtList.add(DateUtil.format(new Date(), Constants.DEFAULT_DATE_PATTERN) + "->数据处理中," + tbTaskHistory.getSummary());
|
|
|
|
|
|
+ txtList.add(DateUtil.format(new Date(), Constants.DEFAULT_DATE_PATTERN) + "->数据处理中,"
|
|
|
|
+ + tbTaskHistory.getSummary());
|
|
}
|
|
}
|
|
tbTaskHistory.setProgress(progress.doubleValue());
|
|
tbTaskHistory.setProgress(progress.doubleValue());
|
|
return txtList;
|
|
return txtList;
|
|
@@ -940,7 +1005,10 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
BigDecimal bigDecimal = BigDecimal.valueOf(100);
|
|
BigDecimal bigDecimal = BigDecimal.valueOf(100);
|
|
BigDecimal progress = null;
|
|
BigDecimal progress = null;
|
|
if (size > 0) {
|
|
if (size > 0) {
|
|
- progress = BigDecimal.valueOf(Double.valueOf(BigDecimal.valueOf(max).divide(BigDecimal.valueOf(size), 2, BigDecimal.ROUND_HALF_UP).multiply(bigDecimal).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue())).setScale(0, BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
+ progress = BigDecimal.valueOf(Double.valueOf(
|
|
|
|
+ BigDecimal.valueOf(max).divide(BigDecimal.valueOf(size), 2, BigDecimal.ROUND_HALF_UP)
|
|
|
|
+ .multiply(bigDecimal).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()))
|
|
|
|
+ .setScale(0, BigDecimal.ROUND_HALF_UP);
|
|
} else {
|
|
} else {
|
|
progress = BigDecimal.valueOf(-1);
|
|
progress = BigDecimal.valueOf(-1);
|
|
}
|
|
}
|
|
@@ -948,16 +1016,19 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
tbTaskHistory.setStatus(TaskStatusEnum.FINISH);
|
|
tbTaskHistory.setStatus(TaskStatusEnum.FINISH);
|
|
tbTaskHistory.setSummary("共导出了" + size + "条数据");
|
|
tbTaskHistory.setSummary("共导出了" + size + "条数据");
|
|
tbTaskHistory.setFinishTime(System.currentTimeMillis());
|
|
tbTaskHistory.setFinishTime(System.currentTimeMillis());
|
|
- txtList.add(DateUtil.format(new Date(), Constants.DEFAULT_DATE_PATTERN) + "->数据导出完毕," + tbTaskHistory.getSummary());
|
|
|
|
|
|
+ txtList.add(DateUtil.format(new Date(), Constants.DEFAULT_DATE_PATTERN) + "->数据导出完毕,"
|
|
|
|
+ + tbTaskHistory.getSummary());
|
|
} else if (progress.intValue() == -1) {
|
|
} else if (progress.intValue() == -1) {
|
|
tbTaskHistory.setStatus(TaskStatusEnum.FINISH);
|
|
tbTaskHistory.setStatus(TaskStatusEnum.FINISH);
|
|
tbTaskHistory.setSummary("没有导出数据");
|
|
tbTaskHistory.setSummary("没有导出数据");
|
|
tbTaskHistory.setFinishTime(System.currentTimeMillis());
|
|
tbTaskHistory.setFinishTime(System.currentTimeMillis());
|
|
- txtList.add(DateUtil.format(new Date(), Constants.DEFAULT_DATE_PATTERN) + "->数据导出完毕," + tbTaskHistory.getSummary());
|
|
|
|
|
|
+ txtList.add(DateUtil.format(new Date(), Constants.DEFAULT_DATE_PATTERN) + "->数据导出完毕,"
|
|
|
|
+ + tbTaskHistory.getSummary());
|
|
} else {
|
|
} else {
|
|
tbTaskHistory.setStatus(TaskStatusEnum.RUNNING);
|
|
tbTaskHistory.setStatus(TaskStatusEnum.RUNNING);
|
|
tbTaskHistory.setSummary("正在导出第" + min + "条至" + max + "条数据");
|
|
tbTaskHistory.setSummary("正在导出第" + min + "条至" + max + "条数据");
|
|
- txtList.add(DateUtil.format(new Date(), Constants.DEFAULT_DATE_PATTERN) + "->数据导出中," + tbTaskHistory.getSummary());
|
|
|
|
|
|
+ txtList.add(DateUtil.format(new Date(), Constants.DEFAULT_DATE_PATTERN) + "->数据导出中,"
|
|
|
|
+ + tbTaskHistory.getSummary());
|
|
}
|
|
}
|
|
tbTaskHistory.setProgress(progress.doubleValue());
|
|
tbTaskHistory.setProgress(progress.doubleValue());
|
|
return txtList;
|
|
return txtList;
|