Browse Source

20201111修改参加比赛规则

tiaosheng
zy_Java 5 years ago
parent
commit
32cc86a811
  1. 4
      mt/src/main/java/com/ccsens/mt/bean/dto/ProvinceCompeteDto.java
  2. 13
      mt/src/main/java/com/ccsens/mt/persist/dao/CompeteCompanyDao.java
  3. 272
      mt/src/main/java/com/ccsens/mt/service/ProvinceService.java
  4. 16
      mt/src/main/resources/mapper_dao/CompeteCompanyDao.xml
  5. 6
      util/src/main/java/com/ccsens/util/CodeEnum.java

4
mt/src/main/java/com/ccsens/mt/bean/dto/ProvinceCompeteDto.java

@ -94,6 +94,10 @@ public class ProvinceCompeteDto {
private Long projectId; private Long projectId;
@ApiModelProperty("单位id") @ApiModelProperty("单位id")
private Long companyId; private Long companyId;
@ApiModelProperty("性别组")
private int gender;
@ApiModelProperty("组别信息")
private int groupRemark;
@ApiModelProperty("选手id") @ApiModelProperty("选手id")
private List<JoinProjectPlayer> players; private List<JoinProjectPlayer> players;
} }

13
mt/src/main/java/com/ccsens/mt/persist/dao/CompeteCompanyDao.java

@ -127,4 +127,17 @@ public interface CompeteCompanyDao extends CompeteCompanyMapper {
* @return 返回选手信息 * @return 返回选手信息
*/ */
List<ProvinceCompeteVo.GroupAndPlayer> getPlayerByTeamProjectWithRule(@Param("companyId")Long companyId, @Param("projectId")Long projectId, @Param("type")Byte type, @Param("groupRemark")int groupRemark, @Param("gender")int gender); List<ProvinceCompeteVo.GroupAndPlayer> getPlayerByTeamProjectWithRule(@Param("companyId")Long companyId, @Param("projectId")Long projectId, @Param("type")Byte type, @Param("groupRemark")int groupRemark, @Param("gender")int gender);
/**
* 查找该选手是否参加了该项目的其他组别
* @param competeTimeId 大赛id
* @param playerId 选手id
* @param projectId 项目id
* @param companyId 单位id
* @param gender 性别组
* @param groupRemark 组别备注信息
* @return 返回参加的数量
*/
int getTeamNumByPlayerIdAndGroup(@Param("competeTimeId")Long competeTimeId, @Param("playerId")Long playerId, @Param("projectId")Long projectId,
@Param("companyId")Long companyId, @Param("gender")int gender, @Param("groupRemark")int groupRemark);
} }

272
mt/src/main/java/com/ccsens/mt/service/ProvinceService.java

@ -524,97 +524,207 @@ public class ProvinceService implements IProvinceService {
} }
} }
}else { }else {
//查找当前公司是否已经报名此项目 if(competeProject.getJoinRule() == 1) {
CompeteTeam competeTeam; //查找当前公司是否已经报名此项目
CompeteTeamExample teamExample = new CompeteTeamExample(); CompeteTeam competeTeam;
teamExample.createCriteria().andProjectIdEqualTo(competeProject.getId()).andCompanyIdEqualTo(param.getCompanyId()).andCompeteTimeIdEqualTo(param.getCompeteTimeId()); CompeteTeamExample teamExample = new CompeteTeamExample();
List<CompeteTeam> competeTeamList = competeTeamDao.selectByExample(teamExample); teamExample.createCriteria().andProjectIdEqualTo(competeProject.getId()).andCompanyIdEqualTo(param.getCompanyId()).andCompeteTimeIdEqualTo(param.getCompeteTimeId());
if(CollectionUtil.isNotEmpty(competeTeamList)){ List<CompeteTeam> competeTeamList = competeTeamDao.selectByExample(teamExample);
competeTeam = competeTeamList.get(0); if (CollectionUtil.isNotEmpty(competeTeamList)) {
}else { competeTeam = competeTeamList.get(0);
competeTeam = new CompeteTeam(); } else {
competeTeam.setId(snowflake.nextId()); competeTeam = new CompeteTeam();
competeTeam.setCompeteTimeId(param.getCompeteTimeId()); competeTeam.setId(snowflake.nextId());
competeTeam.setProjectId(param.getProjectId()); competeTeam.setCompeteTimeId(param.getCompeteTimeId());
competeTeam.setCompanyId(param.getCompanyId()); competeTeam.setProjectId(param.getProjectId());
//添加团队表 competeTeam.setCompanyId(param.getCompanyId());
competeTeamDao.insertSelective(competeTeam); //添加团队表
} competeTeamDao.insertSelective(competeTeam);
//检查参赛人数是否符合
int joinCount = 0;
for(ProvinceCompeteDto.JoinProjectPlayer joinProject : param.getPlayers()){
if(joinProject.getJoinProject() == 1){
joinCount++;
}else {
joinCount--;
} }
}
CompeteTeamMemberExample example = new CompeteTeamMemberExample(); // //检查参赛人数是否符合
example.createCriteria().andCompeteTeamIdEqualTo(competeTeam.getId()); // int joinCount = 0;
long memberNum = teamMemberMapper.countByExample(example); // for(ProvinceCompeteDto.JoinProjectPlayer joinProject : param.getPlayers()){
if(joinCount + memberNum > 0) { // if(joinProject.getJoinProject() == 1){
if (joinCount + memberNum > competeProject.getMemberMax() || joinCount + memberNum < competeProject.getMemberMin()) { // joinCount++;
throw new BaseException(CodeEnum.MEMBER_NUM_ERROR); // }else {
// joinCount--;
// }
// }
// CompeteTeamMemberExample example = new CompeteTeamMemberExample();
// example.createCriteria().andCompeteTeamIdEqualTo(competeTeam.getId());
// long memberNum = teamMemberMapper.countByExample(example);
// if(joinCount + memberNum > 0) {
// if (joinCount + memberNum > competeProject.getMemberMax() || joinCount + memberNum < competeProject.getMemberMin()) {
// throw new BaseException(CodeEnum.MEMBER_NUM_ERROR);
// }
// }
for (int i = 0; i < param.getPlayers().size(); i++) {
ProvinceCompeteDto.JoinProjectPlayer joinProjectPlayer = param.getPlayers().get(i);
CompetePlayer player = competePlayerDao.selectByPrimaryKey(joinProjectPlayer.getPlayerId());
if (ObjectUtil.isNull(player)) {
throw new BaseException(CodeEnum.PARAM_ERROR);
}
//查找改选手是否在本团队内
CompeteTeamMemberExample memberExample = new CompeteTeamMemberExample();
memberExample.createCriteria().andPlayerIdEqualTo(player.getId())
.andCompeteTeamIdEqualTo(competeTeam.getId());
List<CompeteTeamMember> teamMemberList = teamMemberMapper.selectByExample(memberExample);
//选手现在不参加,但以前参加了。删除以前的数据
if (joinProjectPlayer.getJoinProject() == 0 && CollectionUtil.isNotEmpty(teamMemberList)) {
teamMemberList.forEach(member -> {
member.setRecStatus((byte) 2);
teamMemberMapper.updateByPrimaryKeySelective(member);
});
}
//选手这次参加,以前未参加,添加数据
if (joinProjectPlayer.getJoinProject() == 1 && CollectionUtil.isEmpty(teamMemberList)) {
//检查该选手报名项目数量(团队6个)
int a = competeCompanyDao.getTeamNumByPlayerId(param.getCompeteTimeId(), player.getId());
if (a >= 6) {
throw new BaseException(CodeEnum.JOIN_PROJECT_NUM_FULL.mtProjectMsg(player.getName() + "团队"));
//XXX团队项目参赛次数已满
}
//添加成员表
CompeteTeamMember teamMember = new CompeteTeamMember();
teamMember.setId(snowflake.nextId());
teamMember.setCompeteTeamId(competeTeam.getId());
teamMember.setPlayerId(player.getId());
teamMemberMapper.insertSelective(teamMember);
}
} }
} //查询团队内的成员,如果没有则删除团队
for (int i = 0; i < param.getPlayers().size(); i++) {
ProvinceCompeteDto.JoinProjectPlayer joinProjectPlayer = param.getPlayers().get(i);
CompetePlayer player = competePlayerDao.selectByPrimaryKey(joinProjectPlayer.getPlayerId());
if(ObjectUtil.isNull(player)){ throw new BaseException(CodeEnum.PARAM_ERROR); }
//查找改选手是否在本团队内
CompeteTeamMemberExample memberExample = new CompeteTeamMemberExample(); CompeteTeamMemberExample memberExample = new CompeteTeamMemberExample();
memberExample.createCriteria().andPlayerIdEqualTo(player.getId()) memberExample.createCriteria().andCompeteTeamIdEqualTo(competeTeam.getId());
.andCompeteTeamIdEqualTo(competeTeam.getId()); if (teamMemberMapper.countByExample(memberExample) == 0) {
List<CompeteTeamMember> teamMemberList = teamMemberMapper.selectByExample(memberExample); competeTeam.setRecStatus((byte) 2);
//选手现在不参加,但以前参加了。删除以前的数据 competeTeamDao.updateByPrimaryKeySelective(competeTeam);
if(joinProjectPlayer.getJoinProject() == 0 && CollectionUtil.isNotEmpty(teamMemberList)){ } else {
teamMemberList.forEach(member -> { //当前参赛人数不符提示错误信息
member.setRecStatus((byte) 2); if (teamMemberMapper.countByExample(memberExample) > competeProject.getMemberMax() || teamMemberMapper.countByExample(memberExample) < competeProject.getMemberMin()) {
teamMemberMapper.updateByPrimaryKeySelective(member); throw new BaseException(CodeEnum.MEMBER_NUM_ERROR);
}); }
} //修改团队的性别组和组别备注信息
//选手这次参加,以前未参加,添加数据 ProvinceCompeteVo.TeamGroupRemark teamGroupRemark = competePlayerDao.getTeamGroupRemark(competeTeam.getId());
if(joinProjectPlayer.getJoinProject() == 1 && CollectionUtil.isEmpty(teamMemberList)){ if (StrUtil.isNotEmpty(teamGroupRemark.getGroupRemark())) {
//检查该选手报名项目数量(团队6个) competeTeam.setGenderGroup((byte) teamGroupRemark.getSexGroup());
int a = competeCompanyDao.getTeamNumByPlayerId(param.getCompeteTimeId(),player.getId()); if (ObjectUtil.isNull(competeTeam.getGroupRemark()) || competeTeam.getGroupRemark() == 0) {
if(a >= 6){ String groupRemark = teamGroupRemark.getGroupRemark().substring(0, teamGroupRemark.getGroupRemark().length() - 3);
throw new BaseException(CodeEnum.JOIN_PROJECT_NUM_FULL.mtProjectMsg(player.getName()+"团队")); Constant.COMPETE_TEAM_GROUP_REMARK remark = Constant.COMPETE_TEAM_GROUP_REMARK.phaseOf(groupRemark);
//XXX团队项目参赛次数已满 if (ObjectUtil.isNotNull(remark)) {
competeTeam.setGroupRemark((byte) remark.value);
} else {
competeTeam.setGroupRemark((byte) 0);
}
}
competeTeamDao.updateByPrimaryKeySelective(competeTeam);
} }
//添加成员表
CompeteTeamMember teamMember = new CompeteTeamMember();
teamMember.setId(snowflake.nextId());
teamMember.setCompeteTeamId(competeTeam.getId());
teamMember.setPlayerId(player.getId());
teamMemberMapper.insertSelective(teamMember);
} }
}
//查询团队内的成员,如果没有则删除团队
CompeteTeamMemberExample memberExample = new CompeteTeamMemberExample();
memberExample.createCriteria().andCompeteTeamIdEqualTo(competeTeam.getId());
if(teamMemberMapper.countByExample(memberExample) == 0){
competeTeam.setRecStatus((byte) 2);
competeTeamDao.updateByPrimaryKeySelective(competeTeam);
}else { }else {
//当前参赛人数不符提示错误信息 //查找当前单位是否已经报名此项目内的改组别
if(teamMemberMapper.countByExample(memberExample) > competeProject.getMemberMax() || teamMemberMapper.countByExample(memberExample) < competeProject.getMemberMin()){ CompeteTeam competeTeam;
throw new BaseException(CodeEnum.MEMBER_NUM_ERROR); CompeteTeamExample teamExample = new CompeteTeamExample();
teamExample.createCriteria().andProjectIdEqualTo(competeProject.getId()).andCompanyIdEqualTo(param.getCompanyId())
.andCompeteTimeIdEqualTo(param.getCompeteTimeId()).andGenderGroupEqualTo((byte) param.getGender()).andGroupRemarkEqualTo((byte) param.getGroupRemark());
List<CompeteTeam> competeTeamList = competeTeamDao.selectByExample(teamExample);
if (CollectionUtil.isNotEmpty(competeTeamList)) {
competeTeam = competeTeamList.get(0);
} else {
competeTeam = new CompeteTeam();
competeTeam.setId(snowflake.nextId());
competeTeam.setCompeteTimeId(param.getCompeteTimeId());
competeTeam.setProjectId(param.getProjectId());
competeTeam.setCompanyId(param.getCompanyId());
competeTeam.setCompanyId((long) param.getGender());
competeTeam.setCompanyId((long) param.getGroupRemark());
//添加团队表
competeTeamDao.insertSelective(competeTeam);
} }
//修改团队的性别组和组别备注信息
ProvinceCompeteVo.TeamGroupRemark teamGroupRemark = competePlayerDao.getTeamGroupRemark(competeTeam.getId()); // //检查参赛人数是否符合
if (StrUtil.isNotEmpty(teamGroupRemark.getGroupRemark())) { // int joinCount = 0;
competeTeam.setGenderGroup((byte) teamGroupRemark.getSexGroup()); // for(ProvinceCompeteDto.JoinProjectPlayer joinProject : param.getPlayers()){
if (ObjectUtil.isNull(competeTeam.getGroupRemark()) || competeTeam.getGroupRemark() == 0) { // if(joinProject.getJoinProject() == 1){
String groupRemark = teamGroupRemark.getGroupRemark().substring(0, teamGroupRemark.getGroupRemark().length() - 3); // joinCount++;
Constant.COMPETE_TEAM_GROUP_REMARK remark = Constant.COMPETE_TEAM_GROUP_REMARK.phaseOf(groupRemark); // }else {
if (ObjectUtil.isNotNull(remark)) { // joinCount--;
competeTeam.setGroupRemark((byte) remark.value); // }
} else { // }
competeTeam.setGroupRemark((byte) 0); // CompeteTeamMemberExample example = new CompeteTeamMemberExample();
// example.createCriteria().andCompeteTeamIdEqualTo(competeTeam.getId());
// long memberNum = teamMemberMapper.countByExample(example);
// if(joinCount + memberNum > 0) {
// if (joinCount + memberNum > competeProject.getMemberMax() || joinCount + memberNum < competeProject.getMemberMin()) {
// throw new BaseException(CodeEnum.MEMBER_NUM_ERROR);
// }
// }
for (int i = 0; i < param.getPlayers().size(); i++) {
ProvinceCompeteDto.JoinProjectPlayer joinProjectPlayer = param.getPlayers().get(i);
CompetePlayer player = competePlayerDao.selectByPrimaryKey(joinProjectPlayer.getPlayerId());
if (ObjectUtil.isNull(player)) {
throw new BaseException(CodeEnum.PARAM_ERROR);
}
//查找改选手是否在本团队内
CompeteTeamMemberExample memberExample = new CompeteTeamMemberExample();
memberExample.createCriteria().andPlayerIdEqualTo(player.getId())
.andCompeteTeamIdEqualTo(competeTeam.getId());
List<CompeteTeamMember> teamMemberList = teamMemberMapper.selectByExample(memberExample);
//选手现在不参加,但以前参加了。删除以前的数据
if (joinProjectPlayer.getJoinProject() == 0 && CollectionUtil.isNotEmpty(teamMemberList)) {
teamMemberList.forEach(member -> {
member.setRecStatus((byte) 2);
teamMemberMapper.updateByPrimaryKeySelective(member);
});
}
//选手这次参加,以前未参加,添加数据
if (joinProjectPlayer.getJoinProject() == 1 && CollectionUtil.isEmpty(teamMemberList)) {
//检查该选手报名项目数量(团队6个)
int a = competeCompanyDao.getTeamNumByPlayerId(param.getCompeteTimeId(), player.getId());
if (a >= 6) {
throw new BaseException(CodeEnum.JOIN_PROJECT_NUM_FULL.mtProjectMsg(player.getName() + "团队"));
//XXX团队项目参赛次数已满
}
//查找该选手是否参加了该项目的其他组别
int b = competeCompanyDao.getTeamNumByPlayerIdAndGroup(param.getCompeteTimeId(), player.getId(),param.getProjectId()
,param.getCompanyId(),param.getGender(),param.getGroupRemark());
if (b > 0) {
throw new BaseException(CodeEnum.mtJoinAuthGroup(player.getName()));
} }
//添加成员表
CompeteTeamMember teamMember = new CompeteTeamMember();
teamMember.setId(snowflake.nextId());
teamMember.setCompeteTeamId(competeTeam.getId());
teamMember.setPlayerId(player.getId());
teamMemberMapper.insertSelective(teamMember);
} }
}
//查询团队内的成员,如果没有则删除团队
CompeteTeamMemberExample memberExample = new CompeteTeamMemberExample();
memberExample.createCriteria().andCompeteTeamIdEqualTo(competeTeam.getId());
if (teamMemberMapper.countByExample(memberExample) == 0) {
competeTeam.setRecStatus((byte) 2);
competeTeamDao.updateByPrimaryKeySelective(competeTeam); competeTeamDao.updateByPrimaryKeySelective(competeTeam);
} else {
//当前参赛人数不符提示错误信息
if (teamMemberMapper.countByExample(memberExample) > competeProject.getMemberMax() || teamMemberMapper.countByExample(memberExample) < competeProject.getMemberMin()) {
throw new BaseException(CodeEnum.MEMBER_NUM_ERROR);
}
//修改团队的性别组和组别备注信息
ProvinceCompeteVo.TeamGroupRemark teamGroupRemark = competePlayerDao.getTeamGroupRemark(competeTeam.getId());
if (StrUtil.isNotEmpty(teamGroupRemark.getGroupRemark())) {
competeTeam.setGenderGroup((byte) teamGroupRemark.getSexGroup());
if (ObjectUtil.isNull(competeTeam.getGroupRemark()) || competeTeam.getGroupRemark() == 0) {
String groupRemark = teamGroupRemark.getGroupRemark().substring(0, teamGroupRemark.getGroupRemark().length() - 3);
Constant.COMPETE_TEAM_GROUP_REMARK remark = Constant.COMPETE_TEAM_GROUP_REMARK.phaseOf(groupRemark);
if (ObjectUtil.isNotNull(remark)) {
competeTeam.setGroupRemark((byte) remark.value);
} else {
competeTeam.setGroupRemark((byte) 0);
}
}
competeTeamDao.updateByPrimaryKeySelective(competeTeam);
}
} }
} }
} }

16
mt/src/main/resources/mapper_dao/CompeteCompanyDao.xml

@ -323,5 +323,21 @@
and (a.mRemark = #{groupRemark} or a.mRemark is null) and (a.mRemark = #{groupRemark} or a.mRemark is null)
and (a.mGender = #{gender} or a.mGender is null) and (a.mGender = #{gender} or a.mGender is null)
</select> </select>
<select id="getTeamNumByPlayerIdAndGroup" resultType="java.lang.Integer">
SELECT
count(t.id)
FROM
t_compete_team t
LEFT JOIN t_compete_team_member m on t.id = m.compete_team_id
WHERE
t.company_id = #{companyId}
and t.project_id = #{projectId}
and t.compete_time_id = #{competeTimeId}
and t.gender_group = #{gender}
and t.group_remark = #{groupRemark}
and m.player_id = #{projectId}
and t.rec_status = 0
and m.rec_status = 0
</select>
</mapper> </mapper>

6
util/src/main/java/com/ccsens/util/CodeEnum.java

@ -175,6 +175,7 @@ public enum CodeEnum {
CONTACTS_NAME_EMPTY(144,"联系人名称不能为空",true), CONTACTS_NAME_EMPTY(144,"联系人名称不能为空",true),
MEMBER_NUM_ERROR(145,"参赛人数不满足比赛人数要求",true), MEMBER_NUM_ERROR(145,"参赛人数不满足比赛人数要求",true),
GENDER_ERROR(146,"请选择正确的性别",true), GENDER_ERROR(146,"请选择正确的性别",true),
JOIN_AUTH_GROUP(147,"已参加了其他组别,无法再次报名",true),
; ;
@ -183,7 +184,10 @@ public enum CodeEnum {
this.msg = "请上传"+msg; this.msg = "请上传"+msg;
return this; return this;
} }
public static String mtJoinAuthGroup(String msg){
msg = msg+"已参加了其他组别,无法再次报名";
return msg;
}
public CodeEnum mtProjectMsg(String msg){ public CodeEnum mtProjectMsg(String msg){
this.msg = msg+"项目参赛次数已满"; this.msg = msg+"项目参赛次数已满";
return this; return this;

Loading…
Cancel
Save