diff --git a/mt/src/main/java/com/ccsens/mt/bean/dto/ProvinceCompeteDto.java b/mt/src/main/java/com/ccsens/mt/bean/dto/ProvinceCompeteDto.java index 423b39eb..e6de7633 100644 --- a/mt/src/main/java/com/ccsens/mt/bean/dto/ProvinceCompeteDto.java +++ b/mt/src/main/java/com/ccsens/mt/bean/dto/ProvinceCompeteDto.java @@ -94,6 +94,10 @@ public class ProvinceCompeteDto { private Long projectId; @ApiModelProperty("单位id") private Long companyId; + @ApiModelProperty("性别组") + private int gender; + @ApiModelProperty("组别信息") + private int groupRemark; @ApiModelProperty("选手id") private List players; } diff --git a/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteCompanyDao.java b/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteCompanyDao.java index 023a69cc..6266f255 100644 --- a/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteCompanyDao.java +++ b/mt/src/main/java/com/ccsens/mt/persist/dao/CompeteCompanyDao.java @@ -127,4 +127,17 @@ public interface CompeteCompanyDao extends CompeteCompanyMapper { * @return 返回选手信息 */ List 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); } diff --git a/mt/src/main/java/com/ccsens/mt/service/ProvinceService.java b/mt/src/main/java/com/ccsens/mt/service/ProvinceService.java index 604dd8e7..b1ab657c 100644 --- a/mt/src/main/java/com/ccsens/mt/service/ProvinceService.java +++ b/mt/src/main/java/com/ccsens/mt/service/ProvinceService.java @@ -524,97 +524,207 @@ public class ProvinceService implements IProvinceService { } } }else { - //查找当前公司是否已经报名此项目 - CompeteTeam competeTeam; - CompeteTeamExample teamExample = new CompeteTeamExample(); - teamExample.createCriteria().andProjectIdEqualTo(competeProject.getId()).andCompanyIdEqualTo(param.getCompanyId()).andCompeteTimeIdEqualTo(param.getCompeteTimeId()); - List 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()); - //添加团队表 - competeTeamDao.insertSelective(competeTeam); - } - - //检查参赛人数是否符合 - int joinCount = 0; - for(ProvinceCompeteDto.JoinProjectPlayer joinProject : param.getPlayers()){ - if(joinProject.getJoinProject() == 1){ - joinCount++; - }else { - joinCount--; + if(competeProject.getJoinRule() == 1) { + //查找当前公司是否已经报名此项目 + CompeteTeam competeTeam; + CompeteTeamExample teamExample = new CompeteTeamExample(); + teamExample.createCriteria().andProjectIdEqualTo(competeProject.getId()).andCompanyIdEqualTo(param.getCompanyId()).andCompeteTimeIdEqualTo(param.getCompeteTimeId()); + List 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()); + //添加团队表 + competeTeamDao.insertSelective(competeTeam); } - } - 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); + +// //检查参赛人数是否符合 +// 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()); +// 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 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(); - memberExample.createCriteria().andPlayerIdEqualTo(player.getId()) - .andCompeteTeamIdEqualTo(competeTeam.getId()); - List 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团队项目参赛次数已满 + memberExample.createCriteria().andCompeteTeamIdEqualTo(competeTeam.getId()); + if (teamMemberMapper.countByExample(memberExample) == 0) { + competeTeam.setRecStatus((byte) 2); + 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); } - //添加成员表 - 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 { - //当前参赛人数不符提示错误信息 - if(teamMemberMapper.countByExample(memberExample) > competeProject.getMemberMax() || teamMemberMapper.countByExample(memberExample) < competeProject.getMemberMin()){ - throw new BaseException(CodeEnum.MEMBER_NUM_ERROR); + //查找当前单位是否已经报名此项目内的改组别 + CompeteTeam competeTeam; + CompeteTeamExample teamExample = new CompeteTeamExample(); + teamExample.createCriteria().andProjectIdEqualTo(competeProject.getId()).andCompanyIdEqualTo(param.getCompanyId()) + .andCompeteTimeIdEqualTo(param.getCompeteTimeId()).andGenderGroupEqualTo((byte) param.getGender()).andGroupRemarkEqualTo((byte) param.getGroupRemark()); + List 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())) { - 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); + +// //检查参赛人数是否符合 +// 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()); +// 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 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); + } 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); + } } } } diff --git a/mt/src/main/resources/mapper_dao/CompeteCompanyDao.xml b/mt/src/main/resources/mapper_dao/CompeteCompanyDao.xml index 64153f6d..467c77f3 100644 --- a/mt/src/main/resources/mapper_dao/CompeteCompanyDao.xml +++ b/mt/src/main/resources/mapper_dao/CompeteCompanyDao.xml @@ -323,5 +323,21 @@ and (a.mRemark = #{groupRemark} or a.mRemark is null) and (a.mGender = #{gender} or a.mGender is null) + \ No newline at end of file diff --git a/util/src/main/java/com/ccsens/util/CodeEnum.java b/util/src/main/java/com/ccsens/util/CodeEnum.java index 9d96e5ce..0806e037 100644 --- a/util/src/main/java/com/ccsens/util/CodeEnum.java +++ b/util/src/main/java/com/ccsens/util/CodeEnum.java @@ -175,6 +175,7 @@ public enum CodeEnum { CONTACTS_NAME_EMPTY(144,"联系人名称不能为空",true), MEMBER_NUM_ERROR(145,"参赛人数不满足比赛人数要求",true), GENDER_ERROR(146,"请选择正确的性别",true), + JOIN_AUTH_GROUP(147,"已参加了其他组别,无法再次报名",true), ; @@ -183,7 +184,10 @@ public enum CodeEnum { this.msg = "请上传"+msg; return this; } - + public static String mtJoinAuthGroup(String msg){ + msg = msg+"已参加了其他组别,无法再次报名"; + return msg; + } public CodeEnum mtProjectMsg(String msg){ this.msg = msg+"项目参赛次数已满"; return this;