|
|
@ -5,16 +5,19 @@ import cn.hutool.core.collection.CollectionUtil; |
|
|
|
import cn.hutool.core.lang.Snowflake; |
|
|
|
import cn.hutool.core.util.ObjectUtil; |
|
|
|
import cn.hutool.core.util.StrUtil; |
|
|
|
import com.ccsens.mt.bean.po.CompeteCompany; |
|
|
|
import com.ccsens.mt.bean.po.CompetePlayer; |
|
|
|
import com.ccsens.mt.bean.po.CompeteProject; |
|
|
|
import com.ccsens.mt.bean.po.CompeteProjectExample; |
|
|
|
import com.ccsens.mt.bean.po.*; |
|
|
|
import com.ccsens.mt.bean.vo.CompeteExcelVo; |
|
|
|
import com.ccsens.mt.persist.dao.CompeteCompanyDao; |
|
|
|
import com.ccsens.mt.persist.dao.CompetePlayerDao; |
|
|
|
import com.ccsens.mt.persist.dao.CompeteProjectDao; |
|
|
|
import com.ccsens.mt.persist.dao.CompeteTeamDao; |
|
|
|
import com.ccsens.mt.persist.mapper.CompeteCoachMapper; |
|
|
|
import com.ccsens.mt.persist.mapper.CompeteGroupMapper; |
|
|
|
import com.ccsens.mt.persist.mapper.CompeteProjectPlayerMapper; |
|
|
|
import com.ccsens.mt.persist.mapper.CompeteTeamMemberMapper; |
|
|
|
import com.ccsens.util.ExcelUtil; |
|
|
|
import com.ccsens.util.StringUtil; |
|
|
|
import com.ccsens.util.exception.BaseException; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.apache.poi.xssf.usermodel.XSSFSheet; |
|
|
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook; |
|
|
@ -45,6 +48,16 @@ public class ImportService implements IImportService{ |
|
|
|
private CompetePlayerDao competePlayerDao; |
|
|
|
@Resource |
|
|
|
private CompeteProjectDao competeProjectDao; |
|
|
|
@Resource |
|
|
|
private CompeteGroupMapper groupMapper; |
|
|
|
@Resource |
|
|
|
private CompeteProjectPlayerMapper projectPlayerMapper; |
|
|
|
@Resource |
|
|
|
private CompeteTeamDao teamDao; |
|
|
|
@Resource |
|
|
|
private CompeteTeamMemberMapper teamMemberMapper; |
|
|
|
@Resource |
|
|
|
private CompeteCoachMapper coachMapper; |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
@ -69,11 +82,6 @@ public class ImportService implements IImportService{ |
|
|
|
type = 6; |
|
|
|
} |
|
|
|
} |
|
|
|
//查找决赛的项目
|
|
|
|
CompeteProjectExample projectExample = new CompeteProjectExample(); |
|
|
|
projectExample.createCriteria().andTypeEqualTo((byte) 7); |
|
|
|
List<CompeteProject> projectList = competeProjectDao.selectByExample(projectExample); |
|
|
|
Map<String,Object> projectMap = new HashMap<>(); |
|
|
|
//读取sheet内的信息
|
|
|
|
readSheet(sheet,type,errorPlayers); |
|
|
|
} |
|
|
@ -82,28 +90,47 @@ public class ImportService implements IImportService{ |
|
|
|
} |
|
|
|
|
|
|
|
private void readSheet(XSSFSheet sheet, int type, List<CompeteExcelVo.ErrorPlayer> errorPlayers) { |
|
|
|
Map<String,CompeteCompany> companyMap = new HashMap<>(); |
|
|
|
Map<String,CompetePlayer> playerMap = new HashMap<>(); |
|
|
|
|
|
|
|
Map<String, CompeteCompany> companyMap = new HashMap<>(); |
|
|
|
Map<String, CompetePlayer> playerMap = new HashMap<>(); |
|
|
|
Map<String, CompeteProject> projectMap = new HashMap<>(); |
|
|
|
Map<String, CompeteGroup> groupMap = new HashMap<>(); |
|
|
|
Map<String, Long> oldCompanyMap = new HashMap<>(); |
|
|
|
//查找比赛项目的projectMap
|
|
|
|
CompeteProjectExample projectExample = new CompeteProjectExample(); |
|
|
|
projectExample.createCriteria().andTypeEqualTo((byte)7); |
|
|
|
List<CompeteProject> competeProjects = competeProjectDao.selectByExample(projectExample); |
|
|
|
if (CollectionUtil.isNotEmpty(competeProjects)){ |
|
|
|
for (CompeteProject competeProject : competeProjects) { |
|
|
|
projectMap.put(competeProject.getName(),competeProject); |
|
|
|
} |
|
|
|
} |
|
|
|
//查找比赛组的groupMap
|
|
|
|
CompeteGroupExample groupExample = new CompeteGroupExample(); |
|
|
|
groupExample.createCriteria().andTypeEqualTo((byte)7); |
|
|
|
List<CompeteGroup> competeGroups = groupMapper.selectByExample(groupExample); |
|
|
|
if (CollectionUtil.isNotEmpty(competeGroups)){ |
|
|
|
for (CompeteGroup competeGroup : competeGroups) { |
|
|
|
groupMap.put(competeGroup.getGroupName(),competeGroup); |
|
|
|
} |
|
|
|
} |
|
|
|
for (int i = 1; i < sheet.getLastRowNum(); i++) { |
|
|
|
//参赛单位
|
|
|
|
String companyCell = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(sheet.getRow(i).getCell(2))); |
|
|
|
String companyCell = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(sheet.getRow(i).getCell(0))); |
|
|
|
//参赛项目
|
|
|
|
String projectCell = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(sheet.getRow(i).getCell(0))); |
|
|
|
String projectCell = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(sheet.getRow(i).getCell(1))); |
|
|
|
//组别
|
|
|
|
String groupCell = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(sheet.getRow(i).getCell(1))); |
|
|
|
String groupCell = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(sheet.getRow(i).getCell(2))); |
|
|
|
//选手姓名
|
|
|
|
String playerCell = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(sheet.getRow(i).getCell(3))); |
|
|
|
String[] playerNames = new String[]{playerCell}; |
|
|
|
if(StrUtil.isNotBlank(playerCell)){ |
|
|
|
playerNames = playerCell.split("、"); |
|
|
|
} |
|
|
|
//查找参赛单位
|
|
|
|
//查找参赛单位 项目名字(projectCell)没有用来查询
|
|
|
|
|
|
|
|
if (!companyMap.containsKey(companyCell)){ |
|
|
|
String[] playerNames = playerCell.split("、"); |
|
|
|
List<CompeteCompany> company = competeCompanyDao.getCompanyByNameAndType(companyCell,playerNames[0],projectCell,type); |
|
|
|
if (CollectionUtil.isNotEmpty(company)){ |
|
|
|
oldCompanyMap.put(companyCell,company.get(0).getId()); |
|
|
|
//查看是该单位是否已经进决赛
|
|
|
|
List<CompeteCompany> companyByNameAndType = competeCompanyDao.getCompanyByNameAndType(companyCell, playerNames[0], projectCell, 7); |
|
|
|
List<CompeteCompany> companyByNameAndType = competeCompanyDao.getCompanyByNameAndType(companyCell, playerCell, projectCell, 7); |
|
|
|
if (CollectionUtil.isEmpty(companyByNameAndType)){ |
|
|
|
//复制参赛单位到决赛
|
|
|
|
CompeteCompany newCompany = new CompeteCompany(); |
|
|
@ -113,6 +140,19 @@ public class ImportService implements IImportService{ |
|
|
|
newCompany.setCompeteTimeId(7L); |
|
|
|
competeCompanyDao.insertSelective(newCompany); |
|
|
|
companyMap.put(companyCell,newCompany); |
|
|
|
//复制教练
|
|
|
|
CompeteCoachExample coachExample = new CompeteCoachExample(); |
|
|
|
coachExample.createCriteria().andCompanyIdEqualTo(company.get(0).getId()); |
|
|
|
List<CompeteCoach> competeCoaches = coachMapper.selectByExample(coachExample); |
|
|
|
if (CollectionUtil.isNotEmpty(competeCoaches)){ |
|
|
|
for (CompeteCoach competeCoach : competeCoaches) { |
|
|
|
CompeteCoach newCoach = new CompeteCoach(); |
|
|
|
BeanUtil.copyProperties(competeCoach,newCoach); |
|
|
|
newCoach.setId(snowflake.nextId()); |
|
|
|
newCoach.setCompanyId(newCompany.getId()); |
|
|
|
coachMapper.insertSelective(newCoach); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}else{ |
|
|
|
CompeteExcelVo.ErrorPlayer errorPlayer = new CompeteExcelVo.ErrorPlayer(); |
|
|
@ -120,18 +160,108 @@ public class ImportService implements IImportService{ |
|
|
|
errorPlayer.setRowNum(i); |
|
|
|
errorPlayer.setRemark("未查找原参赛单位"); |
|
|
|
errorPlayers.add(errorPlayer); |
|
|
|
log.info("报错相关信息学:{}",errorPlayer); |
|
|
|
throw new BaseException("未查找原参赛单位:"+i+"行"+"信息"+companyCell); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//添加选手信息
|
|
|
|
List<CompetePlayer> playerList = competePlayerDao.getPlayerByNameAndCompany(playerCell,companyMap.get(companyCell).getId()); |
|
|
|
if (CollectionUtil.isNotEmpty(playerList)){ |
|
|
|
CompetePlayer newPlayer = new CompetePlayer(); |
|
|
|
BeanUtil.copyProperties(playerList.get(0),newPlayer); |
|
|
|
newPlayer.setId(snowflake.nextId()); |
|
|
|
newPlayer.setCompanyId(companyMap.get(companyCell).getId()); |
|
|
|
//添加比赛成员
|
|
|
|
if (StrUtil.isNotBlank(playerCell)){ |
|
|
|
String[] playerNames = playerCell.split("、"); |
|
|
|
for (String playerName : playerNames) { |
|
|
|
if (!playerMap.containsKey(playerName)){ |
|
|
|
List<CompeteCompany> company = competeCompanyDao.getCompanyByNameAndType(companyCell,playerName,projectCell,type); |
|
|
|
if (CollectionUtil.isNotEmpty(company)){ |
|
|
|
//查找旧的成员信息
|
|
|
|
List<CompetePlayer> playerList = competePlayerDao.getPlayerByNameAndCompany(playerName,oldCompanyMap.get(companyCell)); |
|
|
|
if (CollectionUtil.isNotEmpty(playerList)){ |
|
|
|
CompetePlayer newPlayer = new CompetePlayer(); |
|
|
|
BeanUtil.copyProperties(playerList.get(0),newPlayer); |
|
|
|
newPlayer.setId(snowflake.nextId()); |
|
|
|
newPlayer.setCompanyId(companyMap.get(companyCell).getId()); |
|
|
|
newPlayer.setCreatedAt(null); |
|
|
|
newPlayer.setUpdatedAt(null); |
|
|
|
// newPlayer.setCompeteGroupId(groupMap.get(groupCell).getId());
|
|
|
|
competePlayerDao.insertSelective(newPlayer); |
|
|
|
playerMap.put(playerName,newPlayer); |
|
|
|
}else{ |
|
|
|
CompeteExcelVo.ErrorPlayer errorPlayer = new CompeteExcelVo.ErrorPlayer(); |
|
|
|
errorPlayer.setSheetName(playerName); |
|
|
|
errorPlayer.setRowNum(i); |
|
|
|
errorPlayer.setRemark("未找到该比赛成员信息"); |
|
|
|
errorPlayers.add(errorPlayer); |
|
|
|
log.info("报错相关信息学:{}",errorPlayer); |
|
|
|
throw new BaseException("未找到该比赛成员信息:"+i+"行"+"信息"+playerName); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
CompeteProject project = projectMap.get(projectCell); |
|
|
|
if (ObjectUtil.isNotNull(project)){ |
|
|
|
//个人项目
|
|
|
|
if (0 == project.getTeam()){ |
|
|
|
CompeteProjectPlayer projectPlayer = new CompeteProjectPlayer(); |
|
|
|
projectPlayer.setId(snowflake.nextId()); |
|
|
|
projectPlayer.setPlayerId(playerMap.get(playerCell).getId()); |
|
|
|
projectPlayer.setProjectId(projectMap.get(projectCell).getId()); |
|
|
|
projectPlayer.setCompeteGroupId(groupMap.get(groupCell).getId()); |
|
|
|
projectPlayer.setCompeteTimeId(7L); |
|
|
|
projectPlayerMapper.insertSelective(projectPlayer); |
|
|
|
} |
|
|
|
//团队项目
|
|
|
|
if (1 == project.getTeam()){ |
|
|
|
if (groupCell.contains("男子") || groupCell.contains("女子")){ |
|
|
|
CompeteTeam newTeam = new CompeteTeam(); |
|
|
|
newTeam.setId(snowflake.nextId()); |
|
|
|
newTeam.setProjectId(projectMap.get(projectCell).getId()); |
|
|
|
newTeam.setCompeteTimeId(7L); |
|
|
|
newTeam.setGenderGroup(groupMap.get(groupCell).getSex()); |
|
|
|
newTeam.setCompeteGroupId(groupMap.get(groupCell).getId()); |
|
|
|
newTeam.setGroupRemark(groupMap.get(groupCell).getGroupRemark()); |
|
|
|
newTeam.setCompanyId(companyMap.get(companyCell).getId()); |
|
|
|
teamDao.insertSelective(newTeam); |
|
|
|
if (StrUtil.isNotBlank(playerCell)){ |
|
|
|
String[] playNames = playerCell.split("、"); |
|
|
|
for (String playName : playNames) { |
|
|
|
CompeteTeamMember teamMember = new CompeteTeamMember(); |
|
|
|
teamMember.setId(snowflake.nextId()); |
|
|
|
teamMember.setPlayerId(playerMap.get(playName).getId()); |
|
|
|
teamMember.setCompeteTeamId(newTeam.getId()); |
|
|
|
teamMemberMapper.insertSelective(teamMember); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if (groupCell.contains("不限")){ |
|
|
|
CompeteTeam newTeam = new CompeteTeam(); |
|
|
|
newTeam.setId(snowflake.nextId()); |
|
|
|
newTeam.setProjectId(projectMap.get(projectCell).getId()); |
|
|
|
newTeam.setCompeteTimeId(7L); |
|
|
|
//TODO 性别 组别id 组别描述 暂时使用默认值
|
|
|
|
newTeam.setCompanyId(companyMap.get(companyCell).getId()); |
|
|
|
teamDao.insertSelective(newTeam); |
|
|
|
if (StrUtil.isNotBlank(playerCell)){ |
|
|
|
String[] playNames = playerCell.split("、"); |
|
|
|
for (String playName : playNames) { |
|
|
|
CompeteTeamMember teamMember = new CompeteTeamMember(); |
|
|
|
teamMember.setId(snowflake.nextId()); |
|
|
|
teamMember.setPlayerId(playerMap.get(playName).getId()); |
|
|
|
teamMember.setCompeteTeamId(newTeam.getId()); |
|
|
|
teamMemberMapper.insertSelective(teamMember); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}else{ |
|
|
|
CompeteExcelVo.ErrorPlayer errorPlayer = new CompeteExcelVo.ErrorPlayer(); |
|
|
|
errorPlayer.setSheetName(projectCell); |
|
|
|
errorPlayer.setRowNum(i); |
|
|
|
errorPlayer.setRemark("未查找到该比赛项目"); |
|
|
|
errorPlayers.add(errorPlayer); |
|
|
|
log.info("报错相关信息学:{}",errorPlayer); |
|
|
|
throw new BaseException("未查找比赛项目:"+i+"行"+"信息"+projectCell); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|