|
|
@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil; |
|
|
|
import cn.hutool.core.collection.CollectionUtil; |
|
|
|
import cn.hutool.core.date.DateUtil; |
|
|
|
import cn.hutool.core.lang.Snowflake; |
|
|
|
import cn.hutool.core.util.IdcardUtil; |
|
|
|
import cn.hutool.core.util.ObjectUtil; |
|
|
|
import cn.hutool.core.util.StrUtil; |
|
|
|
import com.ccsens.cloudutil.bean.tall.dto.WpsDto; |
|
|
@ -25,6 +26,8 @@ import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.apache.poi.ss.usermodel.Cell; |
|
|
|
import org.apache.poi.ss.usermodel.CellType; |
|
|
|
import org.apache.poi.ss.usermodel.Workbook; |
|
|
|
import org.apache.poi.xssf.usermodel.XSSFRow; |
|
|
|
import org.apache.poi.xssf.usermodel.XSSFSheet; |
|
|
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook; |
|
|
|
import org.springframework.core.io.DefaultResourceLoader; |
|
|
|
import org.springframework.core.io.ResourceLoader; |
|
|
@ -609,7 +612,7 @@ public class CompeteService implements ICompeteService { |
|
|
|
|
|
|
|
@Override |
|
|
|
public String enrollPlayInfo(CompeteDto.CompeteType params) throws Exception { |
|
|
|
// CompeteDto.CompeteType competeType = params.getParam();
|
|
|
|
|
|
|
|
List<CompeteVo.EnrollPlayInfo> arrayList = getEnrollPlayInfos(params); |
|
|
|
String path = getExcelFilePath(arrayList); |
|
|
|
|
|
|
@ -833,4 +836,170 @@ public class CompeteService implements ICompeteService { |
|
|
|
} |
|
|
|
return list1; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 导入报名表 |
|
|
|
* @param path 报名表路径 |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public List<CompeteVo.FailPlayerInfo> signupImport(String path) throws Exception { |
|
|
|
List<CompeteVo.FailPlayerInfo> failPlayerInfoList = new ArrayList<>(); |
|
|
|
//获取报名表文件
|
|
|
|
InputStream is = new FileInputStream(new File(path)); |
|
|
|
XSSFWorkbook workbook = new XSSFWorkbook(is); |
|
|
|
if(ObjectUtil.isNull(workbook)){ |
|
|
|
throw new BaseException(CodeEnum.PARAM_ERROR); |
|
|
|
} |
|
|
|
XSSFSheet sheet = workbook.getSheet("报名表"); |
|
|
|
if(ObjectUtil.isNull(sheet)){ |
|
|
|
throw new BaseException(CodeEnum.PARAM_ERROR); |
|
|
|
} |
|
|
|
for (int i = 3; i <= sheet.getLastRowNum(); i++) { |
|
|
|
XSSFRow row = sheet.getRow(i); |
|
|
|
if(ObjectUtil.isNull(row)){ |
|
|
|
continue; |
|
|
|
} |
|
|
|
//参赛单位
|
|
|
|
String companyName = ExcelUtil.getCellValue(row.getCell(1)); |
|
|
|
//比赛项目名
|
|
|
|
String projectName = ExcelUtil.getCellValue(row.getCell(2)); |
|
|
|
//组别名
|
|
|
|
String groupName = ExcelUtil.getCellValue(row.getCell(3)); |
|
|
|
//选手名
|
|
|
|
String playerName = ExcelUtil.getCellValue(row.getCell(4)); |
|
|
|
//身份证
|
|
|
|
String idCard = ExcelUtil.getCellValue(row.getCell(5)); |
|
|
|
//手机号
|
|
|
|
String phone = ExcelUtil.getCellValue(row.getCell(6)); |
|
|
|
//其他参赛人员
|
|
|
|
String otherPlayerName = ExcelUtil.getCellValue(row.getCell(7)); |
|
|
|
//验证数据是否正确,正确的添加数据库
|
|
|
|
boolean flag = saveSignup(companyName,projectName,groupName,playerName,idCard,phone,otherPlayerName); |
|
|
|
if(!flag){ |
|
|
|
CompeteVo.FailPlayerInfo failPlayerInfo = new CompeteVo.FailPlayerInfo(); |
|
|
|
failPlayerInfo.setCompanyName(companyName); |
|
|
|
failPlayerInfo.setGroupName(groupName); |
|
|
|
failPlayerInfo.setProjectName(projectName); |
|
|
|
failPlayerInfo.setPlayerName(playerName); |
|
|
|
failPlayerInfo.setIdCard(idCard); |
|
|
|
failPlayerInfo.setPhone(phone); |
|
|
|
failPlayerInfo.setOtherPlayerName(otherPlayerName); |
|
|
|
failPlayerInfoList.add(failPlayerInfo); |
|
|
|
log.info("报名信息不正确:{}",failPlayerInfo); |
|
|
|
} |
|
|
|
} |
|
|
|
return failPlayerInfoList; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 验证数据的正确性,存入数据库 |
|
|
|
*/ |
|
|
|
private boolean saveSignup(String companyName,String projectName,String groupName, |
|
|
|
String playerName,String idCard,String phone,String otherPlayerName){ |
|
|
|
String family = "亲子组(年龄不设限制)"; |
|
|
|
//单位名称不能为空
|
|
|
|
if(StrUtil.isEmpty(companyName)){return false;} |
|
|
|
//项目名不能为空
|
|
|
|
if(StrUtil.isEmpty(projectName)){return false;} |
|
|
|
//根据名字查找项目,查不到返回空
|
|
|
|
CompeteProjectExample projectExample = new CompeteProjectExample(); |
|
|
|
projectExample.createCriteria().andNameEqualTo(projectName).andTypeEqualTo((byte) 2).andLevelEqualTo((byte) 2); |
|
|
|
List<CompeteProject> projectList = competeProjectMapper.selectByExample(projectExample); |
|
|
|
if(CollectionUtil.isEmpty(projectList)){return false;} |
|
|
|
CompeteProject project = projectList.get(0); |
|
|
|
//分组名不能为空
|
|
|
|
if(StrUtil.isEmpty(groupName)){return false;} |
|
|
|
//根据名字查找分组
|
|
|
|
CompeteGroupExample groupExample = new CompeteGroupExample(); |
|
|
|
groupExample.createCriteria().andGroupNameEqualTo(groupName).andTypeEqualTo((byte) 2); |
|
|
|
List<CompeteGroup> groupList = competeGroupMapper.selectByExample(groupExample); |
|
|
|
if(CollectionUtil.isEmpty(groupList)){return false;} |
|
|
|
CompeteGroup group = groupList.get(0); |
|
|
|
//检查该分组是否可以报名此项目
|
|
|
|
CompeteProjectGroupExample projectGroupExample = new CompeteProjectGroupExample(); |
|
|
|
projectGroupExample.createCriteria().andProjectIdEqualTo(project.getId()).andGroupIdEqualTo(group.getId()); |
|
|
|
if(competeProjectGroupMapper.countByExample(projectGroupExample) == 0){return false;} |
|
|
|
//选手名不能为空
|
|
|
|
if(StrUtil.isEmpty(playerName)){return false;} |
|
|
|
//身份证不能为空,且正确
|
|
|
|
if(StrUtil.isEmpty(idCard) || !IdcardUtil.isValidCard(idCard)){return false;} |
|
|
|
//手机号不能为空,且正确
|
|
|
|
if(StrUtil.isEmpty(phone) || !phone.matches(WebConstant.REGEX_PHONE)){return false;} |
|
|
|
//其他参赛人员
|
|
|
|
if(StrUtil.isEmpty(otherPlayerName) && family.equals(groupName)){return false;} |
|
|
|
if(StrUtil.isNotEmpty(otherPlayerName) && !family.equals(groupName)){return false;} |
|
|
|
|
|
|
|
//查找单位
|
|
|
|
CompeteCompany company; |
|
|
|
CompeteCompanyExample companyExample = new CompeteCompanyExample(); |
|
|
|
companyExample.createCriteria().andNameEqualTo(companyName).andTypeEqualTo((byte) 2); |
|
|
|
List<CompeteCompany> companyList = competeCompanyMapper.selectByExample(companyExample); |
|
|
|
if(CollectionUtil.isNotEmpty(companyList)){ |
|
|
|
company = companyList.get(0); |
|
|
|
}else { |
|
|
|
company = new CompeteCompany(); |
|
|
|
company.setId(snowflake.nextId()); |
|
|
|
company.setName(companyName); |
|
|
|
company.setType((byte) 2); |
|
|
|
competeCompanyMapper.insertSelective(company); |
|
|
|
} |
|
|
|
//添加选手信息
|
|
|
|
CompetePlayer player = new CompetePlayer(); |
|
|
|
player.setId(snowflake.nextId()); |
|
|
|
player.setName(playerName); |
|
|
|
player.setCompeteTimeId((long) 3); |
|
|
|
player.setCompanyId(company.getId()); |
|
|
|
player.setPhone(phone); |
|
|
|
player.setCompeteGroupId(group.getId()); |
|
|
|
player.setIdCard(idCard); |
|
|
|
competePlayerDao.insertSelective(player); |
|
|
|
//参加比赛
|
|
|
|
if(project.getTeam() == 0){ |
|
|
|
//个人赛报名
|
|
|
|
CompeteProjectPlayer projectPlayer = new CompeteProjectPlayer(); |
|
|
|
projectPlayer.setId(snowflake.nextId()); |
|
|
|
projectPlayer.setCompeteGroupId(group.getId()); |
|
|
|
projectPlayer.setPlayerId(player.getId()); |
|
|
|
projectPlayer.setProjectId(project.getId()); |
|
|
|
projectPlayer.setCompeteTimeId(3L); |
|
|
|
competeProjectPlayerMapper.insertSelective(projectPlayer); |
|
|
|
}else { |
|
|
|
//团队项目创建团队
|
|
|
|
CompeteTeam team = new CompeteTeam(); |
|
|
|
team.setId(snowflake.nextId()); |
|
|
|
team.setProjectId(project.getId()); |
|
|
|
team.setCreator(player.getId()); |
|
|
|
team.setCompeteTimeId(3L); |
|
|
|
team.setCompeteGroupId(group.getId()); |
|
|
|
competeTeamDao.insertSelective(team); |
|
|
|
//将当前选手加入团队
|
|
|
|
CompeteTeamMember teamMember = new CompeteTeamMember(); |
|
|
|
teamMember.setId(snowflake.nextId()); |
|
|
|
teamMember.setCompeteTeamId(team.getId()); |
|
|
|
teamMember.setPlayerId(player.getId()); |
|
|
|
teamMember.setCaptain(Constant.Compete.TEAM_LEADER_YES); |
|
|
|
competeTeamMemberMapper.insertSelective(teamMember); |
|
|
|
//读取其他参赛人员的姓名,并添加为选手
|
|
|
|
if (StrUtil.isNotEmpty(otherPlayerName)) { |
|
|
|
String[] familyNames = StringUtil.replaceComma(otherPlayerName).split(","); |
|
|
|
if (ObjectUtil.isNotNull(familyNames)) { |
|
|
|
for (String familyName : familyNames) { |
|
|
|
CompetePlayer familyPlayer = new CompetePlayer(); |
|
|
|
familyPlayer.setId(snowflake.nextId()); |
|
|
|
familyPlayer.setName(familyName); |
|
|
|
competePlayerDao.insertSelective(familyPlayer); |
|
|
|
//将其他参赛人员添加至此团队
|
|
|
|
CompeteTeamMember member = new CompeteTeamMember(); |
|
|
|
member.setId(snowflake.nextId()); |
|
|
|
member.setCompeteTeamId(team.getId()); |
|
|
|
member.setPlayerId(familyPlayer.getId()); |
|
|
|
member.setCaptain(Constant.Compete.TEAM_LEADER_NO); |
|
|
|
competeTeamMemberMapper.insertSelective(member); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |