|
@@ -0,0 +1,320 @@
|
|
|
+package com.ygj.yuemum.service.eLearning;
|
|
|
+
|
|
|
+import com.ygj.yuemum.dao.college.CollegeCurriculumCoreDao;
|
|
|
+import com.ygj.yuemum.domain.college.*;
|
|
|
+import com.ygj.yuemum.service.college.*;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.text.DecimalFormat;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.LinkedHashMap;
|
|
|
+import java.util.LinkedList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+@Service
|
|
|
+
|
|
|
+public class ELearningService {
|
|
|
+ @Autowired
|
|
|
+ private CollegeCurriculumCoreDao collegeCurriculumCoreDao;
|
|
|
+ @Autowired
|
|
|
+ private CollegeTestDetailService collegeTestDetailService;
|
|
|
+ @Autowired
|
|
|
+ private CollegeTestService collegeTestService;
|
|
|
+ @Autowired
|
|
|
+ private CollegeTestResultService collegeTestResultService;
|
|
|
+ @Autowired
|
|
|
+ private CollegeCurriculumCoreService collegeCurriculumCoreService;
|
|
|
+ @Autowired
|
|
|
+ private CollegeLearningDetailService collegeLearningDetailService;
|
|
|
+
|
|
|
+ public LinkedHashMap<String, Object> index(String attendant_id) {
|
|
|
+ LinkedHashMap<String, Object> tableData = new LinkedHashMap<>();
|
|
|
+ CollegeCurriculumCore collegeCurriculumCoreQuery = new CollegeCurriculumCore();
|
|
|
+ collegeCurriculumCoreQuery.setOpenid(attendant_id);
|
|
|
+ List<CollegeCurriculumCore> collegeCurriculumCores = collegeCurriculumCoreDao.queryELearning_Index(collegeCurriculumCoreQuery);
|
|
|
+ for (CollegeCurriculumCore collegeCurriculumCore : collegeCurriculumCores) {
|
|
|
+ if (collegeCurriculumCore.getStatus() != null && collegeCurriculumCore.getStatus().equals("9")) { //1-已预约,2-学习中,3-已过期, 9-已完成
|
|
|
+ collegeCurriculumCore.setStatus("已完成");
|
|
|
+ } else if (collegeCurriculumCore.getStatus() != null && collegeCurriculumCore.getStatus().equals("2")) {
|
|
|
+ collegeCurriculumCore.setStatus("待完成");
|
|
|
+ } else {
|
|
|
+ collegeCurriculumCore.setStatus("待完成");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ tableData.put("college_core", collegeCurriculumCores);
|
|
|
+ return tableData;
|
|
|
+ }
|
|
|
+
|
|
|
+ public LinkedHashMap<String, Object> courseworkList(String attendant_id, Integer coursework_id) {
|
|
|
+ LinkedHashMap<String, Object> tableData = new LinkedHashMap<>();
|
|
|
+ CollegeCurriculumQuery collegeCurriculumQuery = new CollegeCurriculumQuery();
|
|
|
+ collegeCurriculumQuery.setId(coursework_id);
|
|
|
+ collegeCurriculumQuery.setOpenid(attendant_id);
|
|
|
+ LinkedHashMap<String, Object> list = new LinkedHashMap<>();
|
|
|
+ ReturnUserLearningCoreDetail returnUserLearningCoreDetail = collegeCurriculumCoreDao.queryCourseworkList(collegeCurriculumQuery);
|
|
|
+ tableData.put("curriculumDetail", returnUserLearningCoreDetail);
|
|
|
+ if (returnUserLearningCoreDetail.isIsvideo()) {
|
|
|
+ list.put("collegeName", returnUserLearningCoreDetail.getC_name());
|
|
|
+ list.put("collegeDesc", "文档课件"); //先写死
|
|
|
+ list.put("collegeId", returnUserLearningCoreDetail.getId());
|
|
|
+ if (returnUserLearningCoreDetail.getStatus() != null && returnUserLearningCoreDetail.getStatus() == 9) {
|
|
|
+ list.put("collegeStatus", "完成度100%");
|
|
|
+ list.put("collegeFinish", "已完成");
|
|
|
+ } else if (returnUserLearningCoreDetail.getStatus() != null && returnUserLearningCoreDetail.getStatus() == 2) {
|
|
|
+ if (returnUserLearningCoreDetail.getRate().equals("100%")) {
|
|
|
+ list.put("collegeStatus", "完成度100%");
|
|
|
+ list.put("collegeFinish", "已完成");
|
|
|
+ } else {
|
|
|
+ list.put("collegeStatus", "完成度" + returnUserLearningCoreDetail.getRate());
|
|
|
+ list.put("collegeFinish", "未完成");
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ list.put("collegeStatus", "完成度0%");
|
|
|
+ list.put("collegeFinish", "未完成");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (returnUserLearningCoreDetail.isIstest()) {
|
|
|
+ list.put("testName", "本期课程测验"); //先写死
|
|
|
+ list.put("fullCredit", "满分100分"); //先写死
|
|
|
+ list.put("testId", returnUserLearningCoreDetail.getTestid());
|
|
|
+ if (returnUserLearningCoreDetail.getResult() != null) {
|
|
|
+ list.put("testResult", "您的成绩为" + returnUserLearningCoreDetail.getResult() + "分");
|
|
|
+ list.put("testFinish", "已完成");
|
|
|
+ } else {
|
|
|
+ list.put("testResult", "您尚未参与考试");
|
|
|
+ list.put("testFinish", "未完成");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ tableData.put("curriculumList", list);
|
|
|
+ return tableData;
|
|
|
+ }
|
|
|
+
|
|
|
+ public LinkedHashMap<String, Object> courseworkDetail(String attendant_id, Integer coursework_id) {
|
|
|
+ CollegeCurriculumQuery collegeCurriculumQuery = new CollegeCurriculumQuery();
|
|
|
+ collegeCurriculumQuery.setId(coursework_id);
|
|
|
+ collegeCurriculumQuery.setOpenid(attendant_id);
|
|
|
+ LinkedHashMap<String, Object> tableData = new LinkedHashMap<>();
|
|
|
+ ReturnUserLearningCoreDetail returnUserLearningCoreDetail = collegeCurriculumCoreDao.queryCourseworkDetail(collegeCurriculumQuery);
|
|
|
+ tableData.put("c_name", returnUserLearningCoreDetail.getC_name());
|
|
|
+ tableData.put("pcount", returnUserLearningCoreDetail.getPcount());
|
|
|
+ tableData.put("t_image_href", returnUserLearningCoreDetail.getT_image_href());
|
|
|
+ tableData.put("t_name", returnUserLearningCoreDetail.getT_name());
|
|
|
+ tableData.put("c_content", returnUserLearningCoreDetail.getC_content());
|
|
|
+ tableData.put("positive", returnUserLearningCoreDetail.getPositive());
|
|
|
+ tableData.put("t_desc", returnUserLearningCoreDetail.getT_desc());
|
|
|
+ tableData.put("isvideo", returnUserLearningCoreDetail.isIsvideo());
|
|
|
+ tableData.put("video_length", returnUserLearningCoreDetail.getVideo_length());
|
|
|
+ tableData.put("status", returnUserLearningCoreDetail.getStatus());
|
|
|
+ tableData.put("rate", returnUserLearningCoreDetail.getRate());
|
|
|
+ tableData.put("countdown", returnUserLearningCoreDetail.getRate_time());
|
|
|
+ tableData.put("video_href", returnUserLearningCoreDetail.getVideo_href());
|
|
|
+ tableData.put("ispositive", returnUserLearningCoreDetail.getIspositive());
|
|
|
+ if (returnUserLearningCoreDetail.getRate_time() != null) {
|
|
|
+ String coreTime[] = returnUserLearningCoreDetail.getVideo_length().split(":");
|
|
|
+ int coreHours = Integer.parseInt(coreTime[0]) * 60 * 60;
|
|
|
+ int coreMinutes = Integer.parseInt(coreTime[1]) * 60;
|
|
|
+ int coreTimeValue = coreHours + coreMinutes;
|
|
|
+
|
|
|
+ String rateTime[] = returnUserLearningCoreDetail.getRate_time().split(":");
|
|
|
+ int rateHours = Integer.parseInt(rateTime[0]) * 60 * 60;
|
|
|
+ int rateMinutes = Integer.parseInt(rateTime[1]) * 60;
|
|
|
+ int rateTimeValue = rateHours + rateMinutes;
|
|
|
+
|
|
|
+ int downTimeValue = coreTimeValue - rateTimeValue;
|
|
|
+ tableData.put("rate_time", String.format("%02d", downTimeValue / 3600) + ":" + String.format("%02d", downTimeValue / 60 % 60));
|
|
|
+ } else {
|
|
|
+ tableData.put("rate_time", "00:00");
|
|
|
+ }
|
|
|
+ return tableData;
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<CollegeTest> testList(String attendant_id, Integer coursework_id) {
|
|
|
+ // 查看用户之前的答案
|
|
|
+ CollegeTestDetail collegeTestDetailQuery = new CollegeTestDetail();
|
|
|
+ collegeTestDetailQuery.setCoreid(coursework_id);
|
|
|
+ collegeTestDetailQuery.setOpenid(attendant_id);
|
|
|
+ String[] answers = null;
|
|
|
+ List<CollegeTest> collegeTestsReturn = new LinkedList<CollegeTest>();
|
|
|
+ List<CollegeTest> collegeTests = collegeTestService.selectByCoreId(coursework_id);
|
|
|
+ CollegeTestDetail collegeTestDetail = collegeTestDetailService.queryTestComplete(collegeTestDetailQuery); //
|
|
|
+ if (collegeTestDetail == null) {
|
|
|
+ for (CollegeTest collegeTest : collegeTests) {
|
|
|
+ CollegeTest collegeTestTemp = new CollegeTest();
|
|
|
+ List<CollegeTestResult> collegeTestResults = collegeTestResultService.selectByTestId(collegeTest.getId());
|
|
|
+ collegeTestTemp.setId(collegeTest.getId());
|
|
|
+ collegeTestTemp.setSeq(collegeTest.getSeq());
|
|
|
+ collegeTestTemp.setName(collegeTest.getName());
|
|
|
+ collegeTestTemp.setDesc(collegeTest.getDesc());
|
|
|
+ collegeTestTemp.setScore(collegeTest.getScore());
|
|
|
+ collegeTestTemp.setCollegeTestResults(collegeTestResults);
|
|
|
+ collegeTestTemp.setComment(collegeTest.getComment());
|
|
|
+ collegeTestsReturn.add(collegeTestTemp);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ answers = collegeTestDetail.getAnswers().split(",");
|
|
|
+ int i = 0;
|
|
|
+
|
|
|
+ for (CollegeTest collegeTest : collegeTests) {
|
|
|
+ CollegeTest collegeTestTemp = new CollegeTest();
|
|
|
+ List<CollegeTestResult> collegeTestResults = collegeTestResultService.selectByTestId(collegeTest.getId());
|
|
|
+ for (CollegeTestResult collegeTestResult : collegeTestResults) {
|
|
|
+ if (collegeTestResult.isIsright() && answers[i].equals(String.valueOf(collegeTestResult.getSeq()))) {
|
|
|
+ collegeTestTemp.setResult(true);
|
|
|
+ break;
|
|
|
+ } else {
|
|
|
+ collegeTestTemp.setResult(false);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ collegeTestTemp.setId(collegeTest.getId());
|
|
|
+ collegeTestTemp.setSeq(collegeTest.getSeq());
|
|
|
+ collegeTestTemp.setName(collegeTest.getName());
|
|
|
+ collegeTestTemp.setDesc(collegeTest.getDesc());
|
|
|
+ collegeTestTemp.setScore(collegeTest.getScore());
|
|
|
+ collegeTestTemp.setCollegeTestResults(collegeTestResults);
|
|
|
+ collegeTestTemp.setComment(collegeTest.getComment());
|
|
|
+ collegeTestTemp.setUserAnswer(answers[i]);
|
|
|
+ collegeTestTemp.setRightSeq(collegeTest.getRightSeq());
|
|
|
+ i++;
|
|
|
+ collegeTestsReturn.add(collegeTestTemp);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return collegeTestsReturn;
|
|
|
+ }
|
|
|
+
|
|
|
+ public LinkedHashMap<String, Object> testComplete(String attendant_id, Integer coursework_id, String answers) {
|
|
|
+ LinkedHashMap<String, Object> tableData = new LinkedHashMap<>();
|
|
|
+ CollegeTestDetail collegeTestDetailQuery = new CollegeTestDetail();
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ collegeTestDetailQuery.setOpenid(attendant_id);
|
|
|
+ collegeTestDetailQuery.setCoreid(coursework_id);
|
|
|
+ if (collegeTestDetailService.selectByOpenId(collegeTestDetailQuery) == null) {
|
|
|
+ CollegeTestDetail collegeTestDetail = new CollegeTestDetail();
|
|
|
+ collegeTestDetail.setCoreid(coursework_id);
|
|
|
+ collegeTestDetail.setOpenid(attendant_id);
|
|
|
+ collegeTestDetail.setStatus(9);
|
|
|
+ String[] answersL = answers.split(",");
|
|
|
+ int score = 0;
|
|
|
+ int count = 0;
|
|
|
+ int i = 0;
|
|
|
+ List<CollegeTest> collegeTests = collegeTestService.selectByCoreId(coursework_id);
|
|
|
+ for (CollegeTest collegeTest : collegeTests) {
|
|
|
+ List<CollegeTestResult> collegeTestResults = collegeTestResultService.selectByTestId(collegeTest.getId());
|
|
|
+ for (CollegeTestResult collegeTestResult : collegeTestResults) {
|
|
|
+ if (collegeTestResult.isIsright() && answersL[i].equals(String.valueOf(collegeTestResult.getSeq()))) {
|
|
|
+ score = score + collegeTest.getScore();
|
|
|
+ count = count + 1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ i++;
|
|
|
+ }
|
|
|
+ tableData.put("score", score);
|
|
|
+ tableData.put("count", count);
|
|
|
+ //insert into Detail
|
|
|
+ collegeTestDetail.setResult(score);
|
|
|
+ collegeTestDetail.setAnswers(answers);
|
|
|
+ collegeTestDetail.setSys_type("YueLife");
|
|
|
+ collegeTestDetailService.insertSelective(collegeTestDetail);
|
|
|
+
|
|
|
+ CollegeCurriculumCore collegeCurriculumCore = collegeCurriculumCoreService.getCollegeCurriculumCore(coursework_id);
|
|
|
+ CollegeLearningDetail collegeLearningDetail1 = new CollegeLearningDetail();
|
|
|
+ collegeLearningDetail1.setOpen_id(attendant_id);
|
|
|
+ collegeLearningDetail1.setC_code(collegeCurriculumCore.getC_code());
|
|
|
+ collegeLearningDetail1.setDate(sdf.format(new Date()));
|
|
|
+ collegeLearningDetail1.setCredit(collegeCurriculumCore.getCredit());
|
|
|
+ collegeLearningDetail1.setStatus(9);
|
|
|
+ collegeLearningDetail1.setRate("100%");
|
|
|
+ collegeLearningDetail1.setSys_type("YueLife");
|
|
|
+ collegeLearningDetailService.addCollegeLearningDetail(collegeLearningDetail1);
|
|
|
+
|
|
|
+ return tableData;
|
|
|
+ } else {
|
|
|
+ tableData.put("score", "已做过测试");
|
|
|
+ return tableData;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public int courseworkComplete(String attendant_id, String coursework_id) {
|
|
|
+ CollegeLearningDetail collegeLearningDetail = new CollegeLearningDetail();
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ collegeLearningDetail.setOpen_id(attendant_id);
|
|
|
+ collegeLearningDetail.setC_code(coursework_id);
|
|
|
+ CollegeLearningDetail collegeLearningDetailOld = collegeLearningDetailService.checkCoreLearningRate(collegeLearningDetail);
|
|
|
+ if (collegeLearningDetailOld != null && collegeLearningDetailOld.getStatus() == 9) {
|
|
|
+ return 0;
|
|
|
+ } else {
|
|
|
+ collegeLearningDetail.setId(collegeLearningDetailOld.getId());
|
|
|
+ collegeLearningDetail.setRate("100%");
|
|
|
+ collegeLearningDetail.setStatus(2);
|
|
|
+ collegeLearningDetail.setDate(sdf.format(new Date()));
|
|
|
+ collegeLearningDetail.setRate_time("00:00");
|
|
|
+ collegeLearningDetailService.updateCollegeLearningDetail(collegeLearningDetail);
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public int courseworkUpdate(String attendant_id, String coursework_id, String rate) {
|
|
|
+ try {
|
|
|
+ CollegeLearningDetail collegeLearningDetail = new CollegeLearningDetail();
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ DecimalFormat df = new DecimalFormat("00.00");
|
|
|
+ collegeLearningDetail.setOpen_id(attendant_id);
|
|
|
+ collegeLearningDetail.setC_code(coursework_id);
|
|
|
+ CollegeLearningDetail collegeLearningDetailOld = collegeLearningDetailService.checkCoreLearningRate(collegeLearningDetail);
|
|
|
+ CollegeCurriculumCore collegeCurriculumCore = collegeCurriculumCoreDao.queryCoreByCode(coursework_id);
|
|
|
+
|
|
|
+ String rTime[] = rate.split(":");
|
|
|
+ int rHours = Integer.parseInt(rTime[0]) * 60 * 60;
|
|
|
+ int rMinutes = Integer.parseInt(rTime[1]) * 60;
|
|
|
+ int rateNew = rHours+rMinutes;
|
|
|
+
|
|
|
+ String coreTime[] = collegeCurriculumCore.getVideo_length().split(":");
|
|
|
+ int coreHours = Integer.parseInt(coreTime[0]) * 60 * 60;
|
|
|
+ int coreMinutes = Integer.parseInt(coreTime[1]) * 60;
|
|
|
+ int coreRate = coreHours+coreMinutes;
|
|
|
+ double rateValueTemp = ((double)coreRate - (double)rateNew)/coreRate;
|
|
|
+ String rateValue;
|
|
|
+ if (rateValueTemp >= 1) {
|
|
|
+ rateValue = "100%";
|
|
|
+ } else {
|
|
|
+ rateValue = df.format(rateValueTemp*100) + "%";
|
|
|
+ }
|
|
|
+
|
|
|
+ if(collegeLearningDetailOld == null) {
|
|
|
+ collegeLearningDetail.setRate(rateValue);
|
|
|
+ collegeLearningDetail.setDate(sdf.format(new Date()));
|
|
|
+ collegeLearningDetail.setStatus(2);
|
|
|
+ collegeLearningDetail.setRate_time(rate);
|
|
|
+ collegeLearningDetail.setSys_type("YueLife");
|
|
|
+ collegeLearningDetailService.addCollegeLearningDetail(collegeLearningDetail);
|
|
|
+ collegeCurriculumCoreDao.updateCoreCount(coursework_id);
|
|
|
+ return 1;
|
|
|
+ } else {
|
|
|
+ if(collegeLearningDetailOld.getStatus() == 9) {
|
|
|
+ return 0;
|
|
|
+ } else {
|
|
|
+ if (Double.parseDouble(rateValue.replace("%","")) > Double.parseDouble(collegeLearningDetailOld.getRate().replace("%",""))) {
|
|
|
+ collegeLearningDetail.setId(collegeLearningDetailOld.getId());
|
|
|
+ collegeLearningDetail.setRate(rateValue);
|
|
|
+ collegeLearningDetail.setStatus(2);
|
|
|
+ collegeLearningDetail.setDate(sdf.format(new Date()));
|
|
|
+ collegeLearningDetail.setRate_time(rate);
|
|
|
+ collegeLearningDetailService.updateCollegeLearningDetail(collegeLearningDetail);
|
|
|
+ return 1;
|
|
|
+ } else {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }catch (Exception ex) {
|
|
|
+ ex.printStackTrace();
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+}
|