Jelajahi Sumber

feat:服务指标

Joburgess 4 tahun lalu
induk
melakukan
f2d2bf571b

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherServeDto.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.dto;
 import com.ym.mec.biz.dal.enums.JobNatureEnum;
 import io.swagger.annotations.ApiModelProperty;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -51,6 +52,18 @@ public class TeacherServeDto {
     /** 及时训练评价次数 */
     private Integer exercisesMessageTimelyNum;
 
+    @ApiModelProperty(value = "提交率")
+    private BigDecimal submitRate;
+
+
+    public BigDecimal getSubmitRate() {
+        return submitRate;
+    }
+
+    public void setSubmitRate(BigDecimal submitRate) {
+        this.submitRate = submitRate;
+    }
+
     public Integer getExpectExercisesNum() {
         return expectExercisesNum;
     }

+ 13 - 17
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SoundServiceImpl.java

@@ -59,7 +59,7 @@ public class SoundServiceImpl implements SoundService {
         List<Double> times = new ArrayList<>();
         int size = 256;
         int overlap = 128;
-        AudioDispatcher dispatcher = StringUtils.isBlank(url)?getFromByteArray(bytes, size, overlap):getFromUtl(url, size, overlap);
+        AudioDispatcher dispatcher = StringUtils.isBlank(url)?getFromByteArray(bytes, size, overlap):getFromFile(url, size, overlap);
 
         ComplexOnsetDetector detector = new ComplexOnsetDetector(size);
         BeatRootOnsetEventHandler handler = new BeatRootOnsetEventHandler();
@@ -89,7 +89,7 @@ public class SoundServiceImpl implements SoundService {
         int size = 2048;
         int overlap = 0;
         final SilenceDetector silenceDetecor = new SilenceDetector();
-        AudioDispatcher dispatcher = StringUtils.isBlank(url)?getFromByteArray(bytes, size, overlap):getFromUtl(url, size, overlap);
+        AudioDispatcher dispatcher = StringUtils.isBlank(url)?getFromByteArray(bytes, size, overlap):getFromFile(url, size, overlap);
         dispatcher.addAudioProcessor(silenceDetecor);
         dispatcher.addAudioProcessor(new AudioProcessor() {
             @Override
@@ -112,8 +112,11 @@ public class SoundServiceImpl implements SoundService {
         return dispatcher;
     }
 
-    private AudioDispatcher getFromUtl(String url, int size, int overlap) throws UnsupportedAudioFileException, IOException {
-        AudioDispatcher dispatcher = AudioDispatcherFactory.fromURL(new URL(url), size, overlap);
+    private AudioDispatcher getFromFile(String url, int size, int overlap) throws UnsupportedAudioFileException, IOException {
+        PipedAudioStream file = new PipedAudioStream(url);
+        TarsosDSPAudioInputStream stream = file.getMonoStream(44100,0);
+
+        AudioDispatcher dispatcher = new AudioDispatcher(stream, size, overlap);
         return dispatcher;
     }
 
@@ -126,24 +129,17 @@ public class SoundServiceImpl implements SoundService {
 
         try {
             URL url = new URL(sysMusicScore.getUrl());
-            String filePath = FileUtils.getTempDirectoryPath()+ Math.random() + ".mp3";
+            String filePath = FileUtils.getTempDirectoryPath()+ System.currentTimeMillis() + ".mp3";
             File f = new File(filePath);
             FileUtils.copyURLToFile(url, f);
 
+//            AudioSystem.getAudioFileFormat(loadedFile);
 
-            PipedAudioStream file_s = new PipedAudioStream(filePath);
-            TarsosDSPAudioInputStream stream_s = file_s.getMonoStream((int) sampleRate,0);
-
-            System.out.println(stream_s.getFrameLength());
-            double l_s = stream_s.getFrameLength()/stream_s.getFormat().getFrameRate();
-            System.out.printf("源长度:%.2f \n", l_s);
-
-            AudioFileFormat recordFile = AudioSystem.getAudioFileFormat(record.getInputStream());
-            double r_s = recordFile.getFrameLength()/recordFile.getFormat().getFrameRate();
-            System.out.printf("录音长度:%.2f \n", r_s);
+            double l_s = 0;
+            double l_r = 0;
 
             //相似度
-            List<Double> pitchs_s = soundPressureLevelExtractor(null, sysMusicScore.getUrl());
+            List<Double> pitchs_s = soundPressureLevelExtractor(null, filePath);
             List<Double> pitchs_r = soundPressureLevelExtractor(record.getBytes(), null);
 
             int maxLength = pitchs_s.size();
@@ -167,7 +163,7 @@ public class SoundServiceImpl implements SoundService {
             System.out.printf("音准:%.2f \r\n", intonation);
 
             //节奏
-            List<Double> times_s = beatExtractor(null, sysMusicScore.getUrl());
+            List<Double> times_s = beatExtractor(null, filePath);
             List<Double> times_r = beatExtractor(record.getBytes(), null);
 
             float sameTimes = 0;

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/PracticeGroupMapper.xml

@@ -287,6 +287,9 @@
             <if test="type != null and type == 0">
                 AND pg.be_renew_group_id_ IS NOT NULL AND pg.type_='CHARGE'
             </if>
+            <if test="type != null and type == 2">
+                AND pg.type_='FREE'
+            </if>
             <if test="practiceGroupType != null">
                 AND pg.type_=#{practiceGroupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
             </if>

+ 11 - 1
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -6,12 +6,14 @@ import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.service.*;
+import com.ym.mec.common.constant.CommonConstants;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.service.IdGeneratorService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
@@ -2525,8 +2527,16 @@ public class ExportController extends BaseController {
         }
         OutputStream outputStream = response.getOutputStream();
 
+        BigDecimal oneHundred = new BigDecimal(100);
+        BigDecimal zero = new BigDecimal("0.00");
+
         for (TeacherServeDto row : result.getRows()) {
             row.setDateRange(com.ym.mec.util.date.DateUtil.dateToString(row.getMonday(), "yyyy-MM-dd") + '~' + com.ym.mec.util.date.DateUtil.dateToString(row.getSunday(), "yyyy-MM-dd"));
+            if(row.getActualExercisesNum()<=0){
+                row.setSubmitRate(zero);
+            }else{
+                row.setSubmitRate(new BigDecimal(row.getExercisesReplyNum()).divide(new BigDecimal(row.getActualExercisesNum()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_HALF_UP).multiply(oneHundred));
+            }
         }
 
         try {
@@ -2534,7 +2544,7 @@ public class ExportController extends BaseController {
                     "作业布置", "作业点评", "作业提交率",
                     "提醒时间", "操作人"};
             String[] body = {"organName", "teacherId", "teacherName", "dateRange", "homeworkNum", "exerciseNum",
-                    "expectExercisesNum>actualExercisesNum?'异常':'正常'", "exercisesReplyNum>exercisesMessageNum?'异常':'正常'", "exercisesReplyNum",
+                    "expectExercisesNum>actualExercisesNum?'异常':'正常'", "exercisesReplyNum>exercisesMessageNum?'异常':'正常'", "submitRate",
                     "remindDate", "operatorName"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, result.getRows());
             response.setContentType("application/octet-stream");