Browse Source

mt导入决赛excel

pt
ma 4 years ago
parent
commit
eafc24f0d0
  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. 53
      mt/src/main/java/com/ccsens/mt/service/ImportService.java
  4. 4
      mt/src/main/resources/druid-dev.yml
  5. 22
      mt/src/main/resources/mapper_dao/CompeteCompanyDao.xml
  6. 17
      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);
}

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

@ -1,10 +1,15 @@
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.CompetePlayer;
import com.ccsens.mt.bean.vo.CompeteExcelVo;
import com.ccsens.mt.persist.dao.CompeteCompanyDao;
import com.ccsens.mt.persist.dao.CompetePlayerDao;
import com.ccsens.util.ExcelUtil;
import com.ccsens.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
@ -18,7 +23,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 +36,10 @@ import java.util.List;
public class ImportService implements IImportService{
@Resource
private CompeteCompanyDao competeCompanyDao;
@Resource
private Snowflake snowflake;
@Resource
private CompetePlayerDao competePlayerDao;
@Override
@ -61,21 +72,55 @@ 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<>();
for (int i = 1; i < sheet.getLastRowNum(); i++) {
//参赛单位
String companyCell = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(sheet.getRow(i).getCell(0)));
String companyCell = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(sheet.getRow(i).getCell(2)));
//参赛项目
String projectCell = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(sheet.getRow(i).getCell(0)));
//组别
String groupCell = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(sheet.getRow(i).getCell(0)));
String groupCell = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(sheet.getRow(i).getCell(1)));
//选手姓名
String playerCell = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(sheet.getRow(i).getCell(0)));
String playerCell = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(sheet.getRow(i).getCell(3)));
String[] playerNames = new String[]{playerCell};
if(StrUtil.isNotBlank(playerCell)){
playerNames = playerCell.split("、");
}
//查找参赛单位
List<CompeteCompany> company = competeCompanyDao.getCompanyByNameAndType(companyCell,playerNames[0],projectCell,type);
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/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

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

@ -473,5 +473,25 @@
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
id,
`name`,
type,
compete_time_id AS competeTimeId,
contacts_name AS contactsName,
contacts_phone AS contactsPhone,
user_id AS userId,
join_num AS joinNum,
leader_num AS leaderNum,
coach_num AS coachNum,
authorization AS authorization
FROM
t_compete_company AS cc
WHERE
cc.`name` = #{companyName}
AND cc.type = #{type}
AND cc.rec_status = 0
</select>
</mapper>

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

@ -467,4 +467,21 @@
GROUP BY g.projectId,g.id
ORDER BY g.projectId,g.sequence
</select>
<select id="getPlayerByNameAndCompany" resultType="com.ccsens.mt.bean.po.CompetePlayer">
SELECT
id,
user_id AS userId,
NAME,
id_card AS idCard,
phone,
gender,
company_id AS companyId
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