Browse Source

Merge branch 'online1' of http://git.dayaedu.com/yonge/mec

zouxuan 4 years ago
parent
commit
8b86c01896

+ 46 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/config/NioAudioInputStream.java

@@ -0,0 +1,46 @@
+package com.ym.mec.biz.dal.config;
+
+import be.tarsos.dsp.io.TarsosDSPAudioFormat;
+import be.tarsos.dsp.io.TarsosDSPAudioInputStream;
+
+import java.io.IOException;
+import java.io.RandomAccessFile;
+
+/**
+ * @Author Joburgess
+ * @Date 2021/8/4 0004
+ */
+public class NioAudioInputStream implements TarsosDSPAudioInputStream {
+
+    private final RandomAccessFile randomAccessFile;
+
+    public NioAudioInputStream(RandomAccessFile randomAccessFile) {
+        this.randomAccessFile = randomAccessFile;
+    }
+
+    @Override
+    public long skip(long bytesToSkip) throws IOException {
+        return randomAccessFile.skipBytes((int) bytesToSkip);
+    }
+
+    @Override
+    public int read(byte[] b, int off, int len) throws IOException {
+        return randomAccessFile.read(b, off, len);
+    }
+
+    @Override
+    public void close() throws IOException {
+        randomAccessFile.close();
+    }
+
+    @Override
+    public TarsosDSPAudioFormat getFormat() {
+        TarsosDSPAudioFormat tarsosDSPFormat = new TarsosDSPAudioFormat(44100, 16, 1, false, true);
+        return tarsosDSPFormat;
+    }
+
+    @Override
+    public long getFrameLength() {
+        return 0;
+    }
+}

+ 0 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/config/SoundCompareConfig.java

@@ -32,10 +32,6 @@ public class SoundCompareConfig {
      * @describe 音频解析算法
      */
     public PitchProcessor.PitchEstimationAlgorithm algo = PitchProcessor.PitchEstimationAlgorithm.FFT_YIN;
-    /**
-     * @describe 分贝检测器
-     */
-    public SilenceDetector silenceDetector = new SilenceDetector();
 
     /**
      * @describe 有效分贝大小

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SoundCompareHelper.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dto;
 
+import be.tarsos.dsp.SilenceDetector;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.io.RandomAccessFile;
@@ -47,6 +48,10 @@ public class SoundCompareHelper {
     private List<MusicPitchDetailDto> musicXmlInfos;
 
     private byte[] preDataArray = new byte[0];
+    /**
+     * @describe 分贝检测器
+     */
+    public SilenceDetector silenceDetector = new SilenceDetector();
 
     public List<MusicPitchDetailDto> getMusicXmlInfos() {
         return musicXmlInfos;

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/handler/WebSocketHandler.java

@@ -160,7 +160,7 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
         }
 
         AudioDispatcher dispatcher = AudioDispatcherFactory.fromByteArray(message.getPayload().array(), soundCompareConfig.audioFormat, soundCompareConfig.simpleSize, soundCompareConfig.overlap);
-        dispatcher.addAudioProcessor(soundCompareConfig.silenceDetector);
+        dispatcher.addAudioProcessor(userSoundInfoMap.get(phone).silenceDetector);
         dispatcher.addAudioProcessor(new PitchProcessor(soundCompareConfig.algo, soundCompareConfig.simpleRate, soundCompareConfig.simpleSize, (pitchDetectionResult, audioEvent) -> {
             int timeStamp = (int) (userSoundInfoMap.get(phone).getMeasureStartTime() + audioEvent.getTimeStamp()*1000);
             float pitch = pitchDetectionResult.getPitch();
@@ -168,11 +168,11 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
                 int preTimeStamp = CollectionUtils.isEmpty(userSoundInfoMap.get(phone).getRecordMeasurePithInfo())?0:userSoundInfoMap.get(phone).getRecordMeasurePithInfo().get(userSoundInfoMap.get(phone).getRecordMeasurePithInfo().size()-1).getTimeStamp();
                 calOffsetTime(phone, timeStamp - (timeStamp - preTimeStamp)/2);
             }
-            if(soundCompareConfig.silenceDetector.currentSPL()<soundCompareConfig.validDb){
+            if(userSoundInfoMap.get(phone).silenceDetector.currentSPL()<soundCompareConfig.validDb){
                 pitch = -1;
             }
 //            LOGGER.info("时间:{}, 频率:{}, 分贝:{}", timeStamp, pitch, silenceDetecor.currentSPL());
-            userSoundInfoMap.get(phone).getRecordMeasurePithInfo().add(new MusicPitchDetailDto(timeStamp, pitch, soundCompareConfig.silenceDetector.currentSPL()));
+            userSoundInfoMap.get(phone).getRecordMeasurePithInfo().add(new MusicPitchDetailDto(timeStamp, pitch, userSoundInfoMap.get(phone).silenceDetector.currentSPL()));
         }));
         dispatcher.run();
         if(Objects.isNull(userSoundInfoMap.get(phone).getAccessFile())){

+ 48 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -135,6 +135,8 @@ public class ExportController extends BaseController {
     private ChildrenDayReserveService childrenDayReserveService;
     @Autowired
     private IndexErrDataRecordService indexErrDataRecordService;
+    @Autowired
+    private EmployeeInfoService employeeInfoService;
 
     @ApiOperation(value = "21年暑期考级活动统计页面详情导出")
     @PostMapping("export/statisticsDetail")
@@ -3050,4 +3052,50 @@ public class ExportController extends BaseController {
             }
         }
     }
+
+    @ApiOperation(value = "人力资源导出")
+    @RequestMapping("export/employeeInfo")
+    @PreAuthorize("@pcs.hasPermissions('export/employeeInfo')")
+    public void exportEmployeeInfo(EmployeeInfoQueryInfo queryInfo,HttpServletResponse response) throws IOException {
+        queryInfo.setPage(1);
+        queryInfo.setRows(49999);
+        List<EmployeeInfo> rows = employeeInfoService.queryPage(queryInfo).getRows();
+        if (CollectionUtils.isEmpty(rows)) {
+            response.setStatus(200);
+            response.setContentType("Content-Type: application/json;charset=UTF-8");
+            response.getOutputStream().write("{\"data\": null, \"code\": 500, \"status\": false, \"msg\": \"没有可导出的记录\"}".getBytes());
+            response.flushBuffer();
+            return;
+        }
+        OutputStream outputStream = response.getOutputStream();
+        try {
+            String[] header = {"编号", "姓名", "手机号", "微信",
+                    "声部", "所在城市", "工作意向", "信息来源","下次沟通时间","入职时间",
+                    "职位", "分部", "人员状态", "证件号码","年龄","性别",
+                    "银行卡", "开户行", "紧急联系人", "紧急联系人关系","紧急联系人电话","最后一次操作时间",
+                    "归属管理HR", "离职时间"
+            };
+            String[] body = {"id", "realName", "mobileNo", "wechatNo", "subjectName", "liveCity", "intentionCity",
+                    "sourceFrom", "nextVisitDate", "entryDate", "position.msg","organName","status.desc",
+                    "idCard", "age", "gender?'男':'女'", "bankCardNo","bankAddress","emergencyContactName",
+                    "emergencyContactRelation", "emergencyContactPhone", "updateTime", "operatorName","resignationDate"};
+            HSSFWorkbook workbook = POIUtil.exportExcel(header, body, rows);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=employeeInfo-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (outputStream != null) {
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
 }