zouxuan 2 лет назад
Родитель
Сommit
5139a35ee5

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TempLittleArtistTrainingCampDao.java

@@ -46,5 +46,15 @@ public interface TempLittleArtistTrainingCampDao extends BaseMapper<TempLittleAr
     List<BaseVo> queryStartTrainInfo(@Param("date") String date);
 
     int updateUserNum(@Param("campId") Integer campId, @Param("maxNum") Integer maxNum);
+
+    /**
+    * @description: 获取学员可见训练营
+     * @param organId
+     * @param musicGroupIds
+    * @return java.util.List<com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCamp>
+    * @author zx
+    * @date 2023/3/15 14:45
+    */
+    List<TempLittleArtistTrainingCamp> findTrainingByStudent(@Param("organId") Integer organId, @Param("musicGroupIds") List<String> musicGroupIds);
 }
 

+ 46 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TempLittleArtistTrainingCampDto.java

@@ -43,9 +43,55 @@ public class TempLittleArtistTrainingCampDto implements Serializable {
     @ApiModelProperty(value = "训练结束日期")
     private Date trainEndDate;
 
+    @ApiModelProperty(value = "适用分部")
+    private String organIds;
+
+    @ApiModelProperty(value = "适用学校")
+    private String musicGroupIds;
+
+    @NotNull(message = "打卡标准不能为空")
+    @ApiModelProperty(value = "打卡标准")
+    private Integer signStandard;
+
+    @NotNull(message = "达标天数不能为空")
+    @ApiModelProperty(value = "达标天数")
+    private Integer standardDays;
+
     @ApiModelProperty(value = "图片")
     private String picUrl;
 
+    public String getOrganIds() {
+        return organIds;
+    }
+
+    public void setOrganIds(String organIds) {
+        this.organIds = organIds;
+    }
+
+    public String getMusicGroupIds() {
+        return musicGroupIds;
+    }
+
+    public void setMusicGroupIds(String musicGroupIds) {
+        this.musicGroupIds = musicGroupIds;
+    }
+
+    public Integer getSignStandard() {
+        return signStandard;
+    }
+
+    public void setSignStandard(Integer signStandard) {
+        this.signStandard = signStandard;
+    }
+
+    public Integer getStandardDays() {
+        return standardDays;
+    }
+
+    public void setStandardDays(Integer standardDays) {
+        this.standardDays = standardDays;
+    }
+
     public Integer getId() {
         return id;
     }

+ 57 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TempLittleArtistTrainingCamp.java

@@ -1,15 +1,14 @@
 package com.ym.mec.biz.dal.entity;
 
 
-import java.util.Date;
-
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import com.baomidou.mybatisplus.annotation.TableId;
 
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * 小小艺术家训练营活动(TempLittleArtistTrainingCamp)表实体类
@@ -90,9 +89,64 @@ public class TempLittleArtistTrainingCamp implements Serializable {
     @ApiModelProperty(value = "修改时间")
     private Date updateTime;
 
+    @ApiModelProperty(value = "适用分部")
+    private String organIds;
+
+    @ApiModelProperty(value = "适用学校")
+    private String musicGroupIds;
+
+    @ApiModelProperty(value = "打卡标准")
+    private Integer signStandard;
+
+    @ApiModelProperty(value = "达标天数")
+    private Integer standardDays;
+
+    @ApiModelProperty(value = "是否启用")
+    private Boolean enableFlag;
+
     @TableField(exist = false)
     private Integer userCount;
 
+    public Boolean getEnableFlag() {
+        return enableFlag;
+    }
+
+    public void setEnableFlag(Boolean enableFlag) {
+        this.enableFlag = enableFlag;
+    }
+
+    public String getOrganIds() {
+        return organIds;
+    }
+
+    public void setOrganIds(String organIds) {
+        this.organIds = organIds;
+    }
+
+    public String getMusicGroupIds() {
+        return musicGroupIds;
+    }
+
+    public void setMusicGroupIds(String musicGroupIds) {
+        this.musicGroupIds = musicGroupIds;
+    }
+
+    public Integer getSignStandard() {
+        return signStandard;
+    }
+
+    public void setSignStandard(Integer signStandard) {
+        this.signStandard = signStandard;
+    }
+
+    public Integer getStandardDays() {
+        return standardDays;
+    }
+
+    public void setStandardDays(Integer standardDays) {
+        this.standardDays = standardDays;
+    }
+
     public Integer getId() {
         return id;
     }

+ 30 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/TempCampUserTrainingDetailVo.java

@@ -22,6 +22,36 @@ public class TempCampUserTrainingDetailVo implements Serializable {
     private Integer playDay;
     @ApiModelProperty(value = "训练时间")
     private Integer playTime;
+    @ApiModelProperty(value = "是否达标")
+    private Boolean standardFlag;
+    @ApiModelProperty(value = "声部")
+    private String subjectName;
+    @ApiModelProperty(value = "乐团")
+    private String musicGroupName;
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public String getMusicGroupName() {
+        return musicGroupName;
+    }
+
+    public void setMusicGroupName(String musicGroupName) {
+        this.musicGroupName = musicGroupName;
+    }
+
+    public Boolean getStandardFlag() {
+        return standardFlag;
+    }
+
+    public void setStandardFlag(Boolean standardFlag) {
+        this.standardFlag = standardFlag;
+    }
 
     public Integer getId() {
         return id;

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/TempUserTrainingTimeDetailVo.java

@@ -24,6 +24,28 @@ public class TempUserTrainingTimeDetailVo implements Serializable {
     @ApiModelProperty(value = "是否完成训练  0-未完成 1-已完成")
     private Integer isFinish;
 
+    @ApiModelProperty(value = "打卡标准")
+    private Integer signStandard;
+
+    @ApiModelProperty(value = "达标天数")
+    private Integer standardDays;
+
+    public Integer getSignStandard() {
+        return signStandard;
+    }
+
+    public void setSignStandard(Integer signStandard) {
+        this.signStandard = signStandard;
+    }
+
+    public Integer getStandardDays() {
+        return standardDays;
+    }
+
+    public void setStandardDays(Integer standardDays) {
+        this.standardDays = standardDays;
+    }
+
     public Integer getUserId() {
         return userId;
     }

+ 38 - 16
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempLittleArtistTrainingCampServiceImpl.java

@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.TempLittleArtistTrainingCampDao;
+import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.ImGroupDto;
 import com.ym.mec.biz.dal.dto.TempLittleArtistTrainingCampDto;
 import com.ym.mec.biz.dal.entity.*;
@@ -20,6 +20,7 @@ import com.ym.mec.common.page.PageUtil;
 import com.ym.mec.common.page.WrapperUtil;
 import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
+import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.excel.POIUtil;
 import org.apache.commons.collections.CollectionUtils;
@@ -64,6 +65,12 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
     private SysConfigService sysConfigService;
     @Autowired
     private SysMessageService sysMessageService;
+    @Autowired
+    private StudentDao studentDao;
+    @Autowired
+    private StudentRegistrationDao studentRegistrationDao;
+    @Autowired
+    private MusicGroupDao musicGroupDao;
 
     @Override
     public TempLittleArtistTrainingCampDao getDao() {
@@ -181,6 +188,7 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
                 .le(Objects.nonNull(param.get("applyEndDate")), TempLittleArtistTrainingCamp::getApplyEndDate, param.get("applyEndDate"))
                 .ge(Objects.nonNull(param.get("trainStartDate")), TempLittleArtistTrainingCamp::getTrainStartDate, param.get("trainStartDate"))
                 .le(Objects.nonNull(param.get("trainEndDate")), TempLittleArtistTrainingCamp::getTrainEndDate, param.get("trainEndDate"))
+                .le(Objects.nonNull(param.get("enableFlag")), TempLittleArtistTrainingCamp::getEnableFlag, param.get("enableFlag"))
                 .orderByDesc(TempLittleArtistTrainingCamp::getId));
         return PageUtil.pageInfo(pageList);
     }
@@ -210,15 +218,10 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
     @Override
     public List<TempUserTrainingTimeDetailVo> queryUserTrainingTime(Map<String, Object> param) {
         Integer userId = WrapperUtil.toInt(param, "userId", "学员id不能为空");
-        //查询训练营的训练时间段
-        TempLittleArtistTrainingCampUserRelation campUser = tempLittleArtistTrainingCampUserRelationService.getOne(Wrappers.<TempLittleArtistTrainingCampUserRelation>lambdaQuery()
-                .eq(TempLittleArtistTrainingCampUserRelation::getUserId, userId));
-        TempLittleArtistTrainingCamp camp = this.getOne(Wrappers.<TempLittleArtistTrainingCamp>lambdaQuery()
-                .eq(TempLittleArtistTrainingCamp::getId, campUser.getActivityId())
-                .eq(TempLittleArtistTrainingCamp::getDelFlag, 0));
+        //获取训练营
+        TempLittleArtistTrainingCamp camp = this.lambdaQuery().eq(TempLittleArtistTrainingCamp::getId, param.get("campId")).one();
         String startDateStr = DateUtil.dateToString(camp.getTrainStartDate());
         String endDateStr = DateUtil.dateToString(camp.getTrainEndDate());
-
         //生成训练时间集合
         List<TempUserTrainingTimeDetailVo> resultList = new ArrayList<>();
         LocalDate generateDate = LocalDate.parse(startDateStr);
@@ -232,6 +235,8 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
             tempUserTrainingTimeDetailVo.setTrainingDate(DateUtil.toDate(generateDate.toString()));
             tempUserTrainingTimeDetailVo.setPlayTime(BigDecimal.ZERO);
             tempUserTrainingTimeDetailVo.setIsFinish(0);
+            tempUserTrainingTimeDetailVo.setSignStandard(camp.getSignStandard());
+            tempUserTrainingTimeDetailVo.setStandardDays(camp.getStandardDays());
             resultList.add(tempUserTrainingTimeDetailVo);
             generateDate = generateDate.plusDays(1);
         }
@@ -273,7 +278,20 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
         queryUserTrainingDetailOpsParam(param);
         Page<TempCampUserTrainingDetailVo> page = PageUtil.getPageInfo(param);
         page.setDesc("b.playDay");
-        return PageUtil.pageInfo(baseMapper.queryUserTrainingDetail(page, param));
+        IPage<TempCampUserTrainingDetailVo> vos = baseMapper.queryUserTrainingDetail(page, param);
+        List<TempCampUserTrainingDetailVo> records = vos.getRecords();
+        if(CollectionUtils.isNotEmpty(records)){
+            List<Integer> studentIds = records.stream().map(e -> e.getId()).collect(Collectors.toList());
+            Map<Integer,String> subjectMap = MapUtil.convertIntegerMap(studentDao.getStudentSubjectMapList(studentIds));
+            Map<Integer,String> groupNameMap = MapUtil.convertMybatisMap(musicGroupDao.queryNormalGroupName(studentIds));
+            Integer signStandard = Integer.parseInt(param.get("signStandard").toString());
+            for (TempCampUserTrainingDetailVo record : records) {
+                record.setSubjectName(subjectMap.get(record.getId()));
+                record.setMusicGroupName(groupNameMap.get(record.getId()));
+                record.setStandardFlag(record.getPlayDay() >= signStandard);
+            }
+        }
+        return PageUtil.pageInfo(vos);
     }
 
     /**
@@ -286,6 +304,8 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
                 .eq(TempLittleArtistTrainingCamp::getDelFlag, 0));
         param.put("startTime", camp.getTrainStartDate());
         param.put("endTime", camp.getTrainEndDate());
+        param.put("signStandard", camp.getSignStandard() * 60);
+        param.put("standardDays", camp.getStandardDays());
         param.put("state", TempLittleArtistTrainingCampUserRelation.APPLY);
     }
 
@@ -309,10 +329,12 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
     @Override
     public Map<String, Object> queryCampCycle() {
         SysUser user = getUser();
-        //查询未删除的训练营
-        List<TempLittleArtistTrainingCamp> campList = this.list(Wrappers.<TempLittleArtistTrainingCamp>lambdaQuery()
-                .eq(TempLittleArtistTrainingCamp::getDelFlag, 0)
-                .orderByDesc(TempLittleArtistTrainingCamp::getId));
+        //获取学员可见训练营
+        //获取学员分部、乐团列表
+        Integer organId = user.getOrganId();
+        musicGroupDao.queryUserMusicGroups(user.getId());
+        List<String> musicGroupIds = studentRegistrationDao.queryStudentMusicGroup(user.getId());
+        List<TempLittleArtistTrainingCamp> campList = this.baseMapper.findTrainingByStudent(organId,musicGroupIds);
         //查询该学员是否购买过该训练营
         TempLittleArtistTrainingCampUserRelation userRelation = tempLittleArtistTrainingCampUserRelationService.getOne(Wrappers.<TempLittleArtistTrainingCampUserRelation>lambdaQuery()
                 .eq(TempLittleArtistTrainingCampUserRelation::getUserId, user.getId()));
@@ -541,7 +563,7 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
         vo.setPlayTime(playTime);
         vo.setTrainStartDate(camp.getTrainStartDate());
         vo.setTrainEndDate(camp.getTrainEndDate());
-        vo.setIsFinish(playTime >= 600 ? 0 : 1);
+        vo.setIsFinish(playTime >= camp.getSignStandard() * 60 ? 0 : 1);
         return vo;
     }
 
@@ -555,8 +577,8 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
         OutputStream outputStream = response.getOutputStream();
         HSSFWorkbook workbook = null;
         try {
-            String[] header = {"学员编号", "学员姓名", "手机号", "群组", "打卡天数", "训练时长(分钟)"};
-            String[] body = {"id", "username", "phone", "imGroupName", "playDay", "playTime"};
+            String[] header = {"学员编号", "学员姓名",  "学员声部",  "乐团", "手机号", "群组", "打卡天数", "训练时长(分钟)", "打卡状态"};
+            String[] body = {"id", "username",  "subjectName",  "musicGroupName", "phone", "imGroupName", "playDay", "playTime", "standardFlag?'达标':'未达标'"};
             workbook = POIUtil.exportExcel(header, body, list);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=replacement-" + DateUtil.getDate(new Date()) + ".xls");

+ 18 - 4
mec-biz/src/main/resources/config/mybatis/TempLittleArtistTrainingCampMapper.xml

@@ -17,22 +17,30 @@
         <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>
         <result column="update_by_" jdbcType="INTEGER" property="updateBy"/>
         <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime"/>
+        <result column="organ_ids_" property="organIds"/>
+        <result column="music_group_ids_" property="musicGroupIds"/>
+        <result column="sign_standard_" property="signStandard"/>
+        <result column="standard_days_" property="standardDays"/>
+        <result column="enable_flag_" property="enableFlag"/>
     </resultMap>
 
     <sql id="Base_Column_List">
         id_
-        , name_, num_, apply_start_date_, apply_end_date_, train_start_date_, train_end_date_, state_,pic_url_, im_group_ids_, create_by_, create_time_, update_by_, update_time_
+        , name_, num_, apply_start_date_, apply_end_date_, train_start_date_, train_end_date_,
+            state_,pic_url_, im_group_ids_, create_by_, create_time_, update_by_, update_time_
+            ,organ_ids_,music_group_ids_,sign_standard_,standard_days_,enable_flag_
     </sql>
 
     <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
             parameterType="com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCamp">
         insert into temp_little_artist_training_camp(name_, num_, apply_start_date_, apply_end_date_, train_start_date_,
-        train_end_date_, state_, im_group_ids_,pic_url_, del_flag_,create_by_, create_time_, update_by_, update_time_)
+        train_end_date_, state_, im_group_ids_,pic_url_, del_flag_,create_by_, create_time_, update_by_, update_time_
+        ,organ_ids_,music_group_ids_,sign_standard_,standard_days_,enable_flag_)
         values
         <foreach collection="entities" item="entity" separator=",">
             (#{entity.name}, #{entity.num}, #{entity.applyStartDate}, #{entity.applyEndDate}, #{entity.trainStartDate},
             #{entity.trainEndDate}, #{entity.state}, #{entity.imGroupIds}, #{entity.delFlag},#{entity.picUrl},#{entity.createBy}, #{entity.createTime},
-            #{entity.updateBy}, #{entity.updateTime})
+            #{entity.updateBy}, #{entity.updateTime},#{entity.organIds}, #{entity.musicGroupIds},#{entity.signStandard}, #{entity.standardDays},#{entity.enableFlag})
         </foreach>
     </insert>
 
@@ -115,7 +123,7 @@
         WHERE `cr`.`create_time_` &gt;= DATE_ADD(DATE(#{param.startTime}), INTERVAL IF(#{param.startTime} = DATE(#{param.startTime}), 0, 1) DAY)
         AND `cr`.`create_time_` &lt; DATE_ADD(DATE(#{param.endTime}), INTERVAL 1 DAY)
         GROUP BY `cr`.`user_id_`, DATE(`cr`.`create_time_`)
-        HAVING SUM(`cr`.`play_time_`) > 600
+        HAVING SUM(`cr`.`play_time_`) > #{param.signStandard}
         ) `a`
         GROUP BY `a`.`user_id_`
         ) `b`
@@ -215,6 +223,12 @@
           and a.state_ = 'ING'
           and b.im_group_id_ is not null
     </select>
+    <select id="findTrainingByStudent" resultType="com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCamp">
+        select * from temp_little_artist_training_camp tlatc
+        where (INTE_ARRAY(tlatc.music_group_ids_,#{musicGroupIds) OR tlatc.music_group_ids_ IS NULL) AND
+            (FIND_IN_SET(#{organId},tlatc.organ_ids_) OR tlatc.organ_ids_ IS NULL)
+          and tlatc.del_flag_ = 0 and tlatc.enable_flag_ = 1 order by id_ DESC
+    </select>
 
     <update id="updateUserNum" parameterType="object">
         update temp_little_artist_training_camp

+ 1 - 0
mec-student/src/main/java/com/ym/mec/student/controller/TempLittleArtistTrainingCampController.java

@@ -50,6 +50,7 @@ public class TempLittleArtistTrainingCampController extends BaseController {
 
     @ApiImplicitParams({
             @ApiImplicitParam(name = "userId", dataType = "Integer", required = true, value = "用户id"),
+            @ApiImplicitParam(name = "campId", dataType = "Integer", value = "训练营id"),
     })
     @ApiOperation("查询指定学生-训练营每日训练时长")
     @PostMapping(value = "/queryUserTrainingTime")

+ 1 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TempLittleArtistTrainingCampController.java

@@ -65,6 +65,7 @@ public class TempLittleArtistTrainingCampController extends BaseController {
             @ApiImplicitParam(name = "applyEndDate", dataType = "String", value = "申请报名登记结束日期-年月日"),
             @ApiImplicitParam(name = "trainStartDate", dataType = "String", value = "训练开始日期-年月日"),
             @ApiImplicitParam(name = "trainEndDate", dataType = "String", value = "训练结束日期-年月日"),
+            @ApiImplicitParam(name = "enableFlag", dataType = "Boolean", value = "是否启用"),
             @ApiImplicitParam(name = "page", dataType = "Integer", required = true, value = "页数"),
             @ApiImplicitParam(name = "rows", dataType = "Integer", required = true, value = "每页数量"),
     })