Browse Source

记录保存

刘俊驰 9 months ago
parent
commit
7b3cbb07a3

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMusicCompareRecord.java

@@ -103,6 +103,8 @@ public class SysMusicCompareRecord extends BaseEntity {
 
     private Boolean delFlag;
 
+    private Float playRate;
+
 	public SysMusicCompareRecord(FeatureType feature) {
 		this.feature = feature;
 	}

+ 84 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/MusicPracticeRecordWrapper.java

@@ -2,6 +2,10 @@ package com.ym.mec.biz.dal.wrapper;
 
 import com.alibaba.fastjson.JSON;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.ym.mec.biz.dal.entity.SysMusicCompareRecord;
+import com.ym.mec.biz.dal.enums.DeviceTypeEnum;
+import com.ym.mec.biz.dal.enums.FeatureType;
+import com.ym.mec.biz.dal.enums.HeardLevelEnum;
 import com.ym.mec.biz.dal.enums.im.CK;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -20,6 +24,7 @@ import java.time.temporal.WeekFields;
 import java.util.Date;
 import java.util.List;
 import java.util.Optional;
+import java.util.OptionalInt;
 
 /**
  * 曲目练习记录
@@ -375,6 +380,9 @@ public class MusicPracticeRecordWrapper {
     }
 
     @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
     public static class Entity{
 
         @ApiModelProperty("主键ID")
@@ -473,5 +481,81 @@ public class MusicPracticeRecordWrapper {
         @ApiModelProperty("假删除标识 0:未删除 1:已删除")
         private Boolean delFlag;
 
+
+        public static MusicPracticeRecordWrapper.Entity toEntity(SysMusicCompareRecord record) {
+            if (record ==null) {
+                return null;
+            }
+            return Entity.builder()
+                .id(record.getId().toString())
+                .userId(Optional.ofNullable(record.getUserId()).orElse(0).toString())
+                .clientType(record.getClientId()!=null?record.getClientId().toUpperCase():null)
+                .musicSheetId(record.getSysMusicScoreId()!=null? record.getSysMusicScoreId().toString():null)
+                .behaviorId(record.getBehaviorId())
+                .scoreData(record.getScoreData())
+                .score(record.getScore())
+                .intonation(record.getIntonation())
+                .cadence(record.getCadence())
+                .integrity(record.getIntegrity())
+                .recordFilePath(record.getRecordFilePath())
+                .videoFilePath(record.getVideoFilePath())
+                .deviceType(record.getDeviceType() !=null?record.getDeviceType().name():null)
+                .sourceTime(record.getSourceTime())
+                .playTime(record.getPlayTime())
+                .playRate(record.getPlayRate())
+                .speed(String.valueOf(OptionalInt.of(record.getSpeed()).orElse(0)))
+                .monday(record.getMonday())
+                .feature(record.getFeature()!=null?record.getFeature().name():null)
+                .heardLevel(record.getHeardLevel() !=null?record.getHeardLevel().getCode():null)
+                .instrumentId(record.getInstrumentId()!=null?record.getInstrumentId().toString():null)
+                .resultAnalyze(record.getResultAnalyze())
+                .partIndex(record.getPartIndex())
+                .practiceTime(record.getPracticeTime())
+                .practiceSource(record.getPracticeSource())
+                .customConfiguration(record.getCustomConfiguration())
+                .headphoneFlag(record.getHeadphoneFlag())
+                .updateTime(record.getCreateTime())
+                .createTime(record.getCreateTime())
+                .delFlag(record.getDelFlag())
+                .build();
+        }
+
+        public SysMusicCompareRecord toSysMusicCompareRecord(){
+            SysMusicCompareRecord sysMusicCompareRecord = new SysMusicCompareRecord();
+            sysMusicCompareRecord.setId((this.id!=null?Long.parseLong(this.id):null));
+            sysMusicCompareRecord.setBehaviorId((this.behaviorId));
+            sysMusicCompareRecord.setUserId(this.userId!=null?Integer.parseInt(this.userId):null);
+            sysMusicCompareRecord.setSysMusicScoreId(this.musicSheetId!=null?Integer.parseInt(this.musicSheetId):null);
+            sysMusicCompareRecord.setHeardLevel(this.heardLevel!=null? HeardLevelEnum.valueOf(this.heardLevel):null);
+            sysMusicCompareRecord.setScoreData(this.scoreData);
+            sysMusicCompareRecord.setScore(this.score);
+            sysMusicCompareRecord.setIntonation(this.intonation);
+            sysMusicCompareRecord.setCadence(this.cadence);
+            sysMusicCompareRecord.setIntegrity(this.integrity);
+            sysMusicCompareRecord.setRecordFilePath(this.recordFilePath);
+            sysMusicCompareRecord.setVideoFilePath(this.videoFilePath);
+            sysMusicCompareRecord.setClientId(this.clientType!=null?this.clientType.toLowerCase():null);
+            sysMusicCompareRecord.setDeviceType(DeviceTypeEnum.valueOf(this.deviceType));
+            sysMusicCompareRecord.setSourceTime(this.sourceTime);
+            sysMusicCompareRecord.setPlayTime(this.playTime);
+            sysMusicCompareRecord.setSpeed(this.speed!=null?Integer.parseInt(this.speed):90);
+            sysMusicCompareRecord.setMonday(this.monday);
+            sysMusicCompareRecord.setFeature(this.feature!=null? FeatureType.valueOf(this.feature):null);
+            sysMusicCompareRecord.setHeardLevel(this.heardLevel!=null? HeardLevelEnum.valueOf(this.heardLevel):null);
+            sysMusicCompareRecord.setCreateTime(this.createTime);
+            sysMusicCompareRecord.setPartIndex(this.partIndex);
+            sysMusicCompareRecord.setCustomConfiguration(this.customConfiguration);
+            sysMusicCompareRecord.setPracticeTime(this.practiceTime);
+            sysMusicCompareRecord.setPracticeSource(this.practiceSource);
+            sysMusicCompareRecord.setResultAnalyze(this.resultAnalyze);
+            sysMusicCompareRecord.setHeadphoneFlag(this.headphoneFlag);
+            sysMusicCompareRecord.setInstrumentId(this.instrumentId!=null?Long.parseLong(this.instrumentId):null);
+            sysMusicCompareRecord.setDelFlag(this.delFlag);
+            sysMusicCompareRecord.setPlayRate(this.playRate);
+
+
+            return sysMusicCompareRecord;
+
+        }
     }
 }

+ 53 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicPracticeRecordServiceImpl.java

@@ -1,17 +1,28 @@
 package com.ym.mec.biz.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.ym.mec.biz.dal.entity.SysMusicCompareRecord;
+import com.ym.mec.biz.dal.entity.SysMusicScore;
 import com.ym.mec.biz.dal.wrapper.MusicPracticeRecordWrapper;
 import com.ym.mec.biz.service.MusicPracticeRecordService;
 import com.ym.mec.biz.service.SysMusicCompareRecordService;
+import com.ym.mec.biz.service.SysMusicScoreService;
+import com.ym.mec.common.exception.BizException;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Objects;
+
 @Service
 public class MusicPracticeRecordServiceImpl implements MusicPracticeRecordService {
 
     @Autowired
     private SysMusicCompareRecordService sysMusicCompareRecordService;
 
+    @Autowired
+    private SysMusicScoreService musicSheetService;
 
     /**
      * 查询记录详情
@@ -20,7 +31,12 @@ public class MusicPracticeRecordServiceImpl implements MusicPracticeRecordServic
      */
     @Override
     public MusicPracticeRecordWrapper.Entity detail(Long id) {
-        return null;
+        SysMusicCompareRecord sysMusicCompareRecord = sysMusicCompareRecordService.get(id);
+        if (sysMusicCompareRecord == null) {
+            throw new BizException("记录不存在");
+        }
+        return MusicPracticeRecordWrapper.Entity.toEntity(sysMusicCompareRecord);
+
     }
 
     /**
@@ -30,12 +46,43 @@ public class MusicPracticeRecordServiceImpl implements MusicPracticeRecordServic
      */
     @Override
     public String add(MusicPracticeRecordWrapper.MusicPracticeRecord from) {
-        return null;
+
+
+        // 曲目练习记录
+        MusicPracticeRecordWrapper.Entity musicPracticeRecord = JSON.parseObject(from.initDefaultValue().jsonString(),
+            MusicPracticeRecordWrapper.Entity.class);
+        SysMusicCompareRecord sysMusicCompareRecord = musicPracticeRecord.toSysMusicCompareRecord();
+        long insert = sysMusicCompareRecordService.insert(sysMusicCompareRecord);
+
+        return String.valueOf(insert);
     }
 
     @Override
     public Object getLastEvaluationMusicalNotesPlayStats(Long recordId) {
-        return null;
+        MusicPracticeRecordWrapper.Entity userLastEvaluationData = detail(recordId);
+        if(Objects.isNull(userLastEvaluationData)){
+            return null;
+        }
+        if(StringUtils.isBlank(userLastEvaluationData.getScoreData())){
+            return null;
+        }
+
+        JSONObject jsonObject = JSON.parseObject(userLastEvaluationData.getScoreData());
+        jsonObject.put("recordId", userLastEvaluationData.getId());
+        jsonObject.put("score", userLastEvaluationData.getScore());
+        jsonObject.put("cadence", userLastEvaluationData.getCadence());
+        jsonObject.put("intonation", userLastEvaluationData.getIntonation());
+        jsonObject.put("integrity", userLastEvaluationData.getIntegrity());
+        jsonObject.put("heardLevel", userLastEvaluationData.getHeardLevel());
+        jsonObject.put("videoFilePath", userLastEvaluationData.getVideoFilePath());
+        jsonObject.put("partIndex", userLastEvaluationData.getPartIndex());
+        jsonObject.put("customConfiguration", userLastEvaluationData.getCustomConfiguration());
+
+        SysMusicScore sysMusicScore = musicSheetService.get(Integer.parseInt(userLastEvaluationData.getMusicSheetId()));
+        if(Objects.nonNull(sysMusicScore)){
+            jsonObject.put("sysMusicScoreName", sysMusicScore.getName());
+        }
+        return jsonObject;
     }
 
     /**
@@ -45,7 +92,7 @@ public class MusicPracticeRecordServiceImpl implements MusicPracticeRecordServic
      */
     @Override
     public MusicPracticeRecordWrapper.Entity getById(Long id) {
-        return null;
+        return detail(id);
     }
 
     /**
@@ -56,5 +103,7 @@ public class MusicPracticeRecordServiceImpl implements MusicPracticeRecordServic
     @Override
     public void update(MusicPracticeRecordWrapper.Entity practiceRecord) {
 
+        SysMusicCompareRecord sysMusicCompareRecord = practiceRecord.toSysMusicCompareRecord();
+        sysMusicCompareRecordService.update(sysMusicCompareRecord);
     }
 }

+ 40 - 2
mec-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml

@@ -32,6 +32,15 @@
 		<result column="part_index_" property="partIndex" />
         <result column="tenant_id_" property="tenantId"/>
         <result column="subject_id_" property="subjectId"/>
+        <result column="custom_configuration_" property="customConfiguration"/>
+        <result column="practice_time_" property="practiceTime"/>
+        <result column="practice_source_" property="practiceSource"/>
+        <result column="result_analyze_" property="resultAnalyze"/>
+        <result column="headphone_flag_" property="headphoneFlag"/>
+        <result column="instrument_id_" property="instrumentId"/>
+        <result column="hidden_flag_" property="hiddenFlag"/>
+        <result column="del_flag_" property="delFlag"/>
+        <result column="play_rate_" property="playRate"/>
 	</resultMap>
 
 	<!-- 根据主键查询一条记录 -->
@@ -48,11 +57,13 @@
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.SysMusicCompareRecord" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
 		INSERT INTO sys_music_compare_record (id_,user_id_,sys_music_score_id_,heard_level_,behavior_id_,score_data_,score_,intonation_,cadence_,integrity_,
 		                                      record_file_path_,video_file_path_,device_type_,client_id_,play_time_,speed_,monday_,
-												source_time_,feature_,create_time_,create_date_,update_time_,part_index_,tenant_id_,subject_id_)
+												source_time_,feature_,create_time_,create_date_,update_time_,part_index_,tenant_id_,subject_id_,
+        custom_configuration_,practice_time_,practice_source_,result_analyze_,headphone_flag_,instrument_id_,hidden_flag_,del_flag_,play_rate_)
 		VALUES(#{id},#{userId},#{sysMusicScoreId},#{heardLevel,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{behaviorId},#{scoreData},
 		       #{score},#{intonation},#{cadence},#{integrity},
 		       #{recordFilePath},#{videoFilePath},#{deviceType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{clientId},#{playTime},#{speed},#{monday},
-		       #{sourceTime},#{feature,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{createTime}, #{createDate}, NOW(),#{partIndex},#{tenantId},#{subjectId})
+		       #{sourceTime},#{feature,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{createTime}, #{createDate}, NOW(),#{partIndex},#{tenantId},#{subjectId}
+            ,#{customConfiguration},#{practiceTime},#{practiceSource},#{resultAnalyze},#{headphoneFlag},#{instrumentId},#{hiddenFlag},#{delFlag},#{playRate})
 	</insert>
 	<insert id="init">
 		insert into sys_music_compare_day_data (user_id_, day_, train_num_, train_time_, tenant_id_)
@@ -125,6 +136,33 @@
 		<if test="heardLevel!=null">
 			heard_level_ = #{heardLevel,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
 		</if>
+        <if test="customConfiguration != null and customConfiguration != ''">
+            custom_configuration_ = #{customConfiguration},
+        </if>
+        <if test="practiceSource != null and practiceSource != ''">
+            practice_source_ = #{practiceSource},
+        </if>
+        <if test="practiceSource != null and practiceSource != ''">
+            practice_time_ = #{practiceTime},
+        </if>
+        <if test="resultAnalyze != null and resultAnalyze != ''">
+            result_analyze_ = #{resultAnalyze},
+        </if>
+        <if test="headphoneFlag != null">
+            headphone_flag_ = #{headphoneFlag},
+        </if>
+        <if test="instrumentId != null">
+            instrument_id_ = #{instrumentId},
+        </if>
+        <if test="hiddenFlag != null">
+            hidden_flag_ = #{hiddenFlag},
+        </if>
+        <if test="delFlag != null">
+            del_flag_ = #{delFlag},
+        </if>
+        <if test="playRate != null">
+            play_rate_ = #{playRate},
+        </if>
 		update_time_ = NOW()
 	</set> WHERE id_ = #{id} and tenant_id_ = #{tenantId}
 	</update>