Browse Source

Merge branch 'pt' of dd.tall.wiki:ccsens_wiki/ccsenscloud into pt

pt
zhizhi wu 4 years ago
parent
commit
cf1fdc99da
  1. 11
      mt/src/main/java/com/ccsens/mt/persist/dao/CompeteCompanyDao.java
  2. 8
      mt/src/main/java/com/ccsens/mt/persist/dao/CompetePlayerDao.java
  3. 245
      mt/src/main/java/com/ccsens/mt/service/ImportService.java
  4. 4
      mt/src/main/resources/application.yml
  5. 4
      mt/src/main/resources/druid-dev.yml
  6. 25
      mt/src/main/resources/mapper_dao/CompeteCompanyDao.xml
  7. 11
      mt/src/main/resources/mapper_dao/CompetePlayerDao.xml

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

@ -164,10 +164,11 @@ public interface CompeteCompanyDao extends CompeteCompanyMapper {
/**
* 根据单位名和类型查找参赛单位信息筛选出有用的一条
* @param companyCell
* @param playerName
* @param projectCell
* @return
* @param companyCell 单位名称
* @param playerName 参赛人员名称
* @param projectCell 项目名称
* @param type 比赛类型
* @return 报名单位信息
*/
List<CompeteCompany> getCompanyByNameAndType(String companyCell, String playerName, String projectCell,int type);
List<CompeteCompany> getCompanyByNameAndType(@Param("companyName") String companyCell,@Param("playerName") String playerName,@Param("projectName") String projectCell,@Param("type") int type);
}

8
mt/src/main/java/com/ccsens/mt/persist/dao/CompetePlayerDao.java

@ -106,4 +106,12 @@ public interface CompetePlayerDao extends CompetePlayerMapper {
* @return
*/
List<TableVo.CompeteAllCount1> getJoinRuleTeamNumByType(@Param("type")byte type);
/**
* 根据团队id和名字查找选手信息
* @param playerCell 选手姓名
* @param id 团队id
* @return 选手信息
*/
List<CompetePlayer> getPlayerByNameAndCompany(@Param("name") String playerCell,@Param("id") Long id);
}

245
mt/src/main/java/com/ccsens/mt/service/ImportService.java

@ -1,12 +1,23 @@
package com.ccsens.mt.service;
import cn.hutool.core.bean.BeanUtil;
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.*;
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;
@ -18,7 +29,9 @@ import javax.annotation.Resource;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author
@ -29,6 +42,22 @@ import java.util.List;
public class ImportService implements IImportService{
@Resource
private CompeteCompanyDao competeCompanyDao;
@Resource
private Snowflake snowflake;
@Resource
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
@ -61,21 +90,219 @@ 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, 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(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(0)));
String groupCell = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(sheet.getRow(i).getCell(2)));
//选手姓名
String playerCell = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(sheet.getRow(i).getCell(0)));
String[] playerNames = new String[]{playerCell};
if(StrUtil.isNotBlank(playerCell)){
playerNames = playerCell.split("、");
String playerCell = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(sheet.getRow(i).getCell(3)));
//查找参赛单位 项目名字(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, playerCell, projectCell, 7);
if (CollectionUtil.isEmpty(companyByNameAndType)){
//复制参赛单位到决赛
CompeteCompany newCompany = new CompeteCompany();
BeanUtil.copyProperties(company.get(0),newCompany);
newCompany.setId(snowflake.nextId());
newCompany.setType((byte)7);
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();
errorPlayer.setSheetName(companyCell);
errorPlayer.setRowNum(i);
errorPlayer.setRemark("未查找原参赛单位");
errorPlayers.add(errorPlayer);
log.info("报错相关信息学:{}",errorPlayer);
throw new BaseException("未查找原参赛单位:"+i+"行"+"信息"+companyCell);
}
}
//添加比赛成员
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);
}
//查找参赛单位
List<CompeteCompany> company = competeCompanyDao.getCompanyByNameAndType(companyCell,playerNames[0],projectCell,type);
// String[] playerNames = new String[]{playerCell};
// if(StrUtil.isNotBlank(playerCell)){
// playerNames = playerCell.split("、");
// }
// //查找参赛单位
// if (!companyMap.containsKey(companyCell)){
// List<CompeteCompany> company = competeCompanyDao.getCompanyByNameAndType(companyCell,playerNames[0],projectCell,type);
// if (CollectionUtil.isNotEmpty(company)){
// //查看是该单位是否已经进决赛
// List<CompeteCompany> companyByNameAndType = competeCompanyDao.getCompanyByNameAndType(companyCell, playerNames[0], projectCell, 7);
// if (CollectionUtil.isEmpty(companyByNameAndType)){
// //复制参赛单位到决赛
// CompeteCompany newCompany = new CompeteCompany();
// BeanUtil.copyProperties(company.get(0),newCompany);
// newCompany.setId(snowflake.nextId());
// newCompany.setType((byte)7);
// newCompany.setCompeteTimeId(7L);
// competeCompanyDao.insertSelective(newCompany);
// companyMap.put(companyCell,newCompany);
// }
// }else{
// CompeteExcelVo.ErrorPlayer errorPlayer = new CompeteExcelVo.ErrorPlayer();
// errorPlayer.setSheetName(companyCell);
// errorPlayer.setRowNum(i);
// errorPlayer.setRemark("未查找原参赛单位");
// errorPlayers.add(errorPlayer);
// }
// }
//
// //添加选手信息
// 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());
// }
}
}
}

4
mt/src/main/resources/application.yml

@ -1,6 +1,6 @@
spring:
profiles:
active: dev
include: common, util-dev
active: test
include: common, util-test

4
mt/src/main/resources/druid-dev.yml

@ -28,8 +28,8 @@ spring:
testOnReturn: false
testWhileIdle: true
timeBetweenEvictionRunsMillis: 60000
# url: jdbc:mysql://49.233.89.188:3306/mt?useUnicode=true&characterEncoding=UTF-8
url: jdbc:mysql://www.tall.wiki/mt?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true
url: jdbc:mysql://49.233.89.188:3306/mt?useUnicode=true&characterEncoding=UTF-8
# url: jdbc:mysql://www.tall.wiki/mt?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true
username: root
validationQuery: SELECT 1 FROM DUAL
# env: CCSENS_GAME

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

@ -473,5 +473,28 @@
tcc.id
) t2 ON t2.companyId = t3.companyId
</select>
<select id="getCompanyByNameAndType" resultType="com.ccsens.mt.bean.po.CompeteCompany"></select>
<select id="getCompanyByNameAndType" resultType="com.ccsens.mt.bean.po.CompeteCompany">
SELECT
cc.id,
cc.`name`,
cc.type,
cc.compete_time_id AS competeTimeId,
cc.contacts_name AS contactsName,
cc.contacts_phone AS contactsPhone,
cc.user_id AS userId,
cc.join_num AS joinNum,
cc.leader_num AS leaderNum,
cc.coach_num AS coachNum,
cc.authorization AS authorization
FROM
t_compete_company AS cc
LEFT JOIN t_compete_player AS cp ON cc.id = cp.company_id
WHERE
cc.`name` = #{companyName}
AND cc.type = #{type}
AND cc.rec_status = 0
AND cp.`name` = #{playerName}
AND cp.rec_status = 0
</select>
</mapper>

11
mt/src/main/resources/mapper_dao/CompetePlayerDao.xml

@ -467,4 +467,15 @@
GROUP BY g.projectId,g.id
ORDER BY g.projectId,g.sequence
</select>
<select id="getPlayerByNameAndCompany" resultType="com.ccsens.mt.bean.po.CompetePlayer">
SELECT
*
FROM
t_compete_player AS cp
WHERE
cp.company_id = #{id}
AND cp.`name` = #{name}
AND cp.rec_status = 0
</select>
</mapper>
Loading…
Cancel
Save