From 19497854178610c2f9f958dd016322d56fbc25d8 Mon Sep 17 00:00:00 2001 From: zy_Java <654600784@qq.com> Date: Wed, 16 Jun 2021 10:10:57 +0800 Subject: [PATCH] 20210616 --- .../com/ccsens/mt/api/ExcelController.java | 30 ++++++- .../com/ccsens/mt/bean/vo/CompeteExcelVo.java | 10 +++ .../mt/persist/dao/CompeteCompanyDao.java | 8 ++ .../com/ccsens/mt/service/ExcelService.java | 6 +- .../com/ccsens/mt/service/IExcelService.java | 3 + .../com/ccsens/mt/service/IImportService.java | 14 ++++ .../com/ccsens/mt/service/ImportService.java | 81 +++++++++++++++++++ .../mapper_dao/CompeteCompanyDao.xml | 1 + .../recovery/service/PatientService.java | 9 --- tall/src/main/resources/application.yml | 4 +- 10 files changed, 147 insertions(+), 19 deletions(-) create mode 100644 mt/src/main/java/com/ccsens/mt/service/IImportService.java create mode 100644 mt/src/main/java/com/ccsens/mt/service/ImportService.java diff --git a/mt/src/main/java/com/ccsens/mt/api/ExcelController.java b/mt/src/main/java/com/ccsens/mt/api/ExcelController.java index c5a54df3..d514584c 100644 --- a/mt/src/main/java/com/ccsens/mt/api/ExcelController.java +++ b/mt/src/main/java/com/ccsens/mt/api/ExcelController.java @@ -2,12 +2,18 @@ package com.ccsens.mt.api; import com.ccsens.cloudutil.annotation.MustLogin; +import com.ccsens.cloudutil.bean.tall.vo.ProjectVo; import com.ccsens.mt.bean.dto.CompeteDto; import com.ccsens.mt.bean.dto.ProvinceCompeteDto; import com.ccsens.mt.bean.dto.ScoreDto; +import com.ccsens.mt.bean.vo.CompeteExcelVo; import com.ccsens.mt.bean.vo.TableVo; import com.ccsens.mt.service.IExcelService; +import com.ccsens.mt.service.IImportService; import com.ccsens.util.JsonResponse; +import com.ccsens.util.NotSupportedFileTypeException; +import com.ccsens.util.UploadFileUtil_Servlet3; +import com.ccsens.util.WebConstant; import com.ccsens.util.bean.dto.QueryDto; import com.github.pagehelper.PageInfo; import io.swagger.annotations.Api; @@ -15,12 +21,11 @@ import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.Part; +import java.io.File; import java.io.IOException; import java.util.List; @@ -34,6 +39,9 @@ import java.util.List; public class ExcelController { @Resource private IExcelService excelService; + @Resource + private IImportService importService; + @MustLogin @ApiOperation(value = "比赛前八名(导出)", notes = "whj") @@ -159,4 +167,18 @@ public class ExcelController { String path = excelService.countExpTable(params.getParam()); return JsonResponse.newInstance().ok(path); } + + @ApiOperation(value = "导入总决赛名单表", notes = "各个分赛场选出前三名,统计后导入系统生成总决赛名单") + @RequestMapping(value = "/importFinal", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse> importFinal(@RequestParam(required = true) Part file) throws Exception { + //1.上传文件 + String allowedExts = "xls,xlsx"; + String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator; + String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir); + log.info(dir+""+path); + //导入数据库 + log.info("导入总决赛名单表"); + List errorPlayers = importService.importFinal(dir+""+path); + return JsonResponse.newInstance().ok(errorPlayers); + } } diff --git a/mt/src/main/java/com/ccsens/mt/bean/vo/CompeteExcelVo.java b/mt/src/main/java/com/ccsens/mt/bean/vo/CompeteExcelVo.java index 62452d6a..c395886f 100644 --- a/mt/src/main/java/com/ccsens/mt/bean/vo/CompeteExcelVo.java +++ b/mt/src/main/java/com/ccsens/mt/bean/vo/CompeteExcelVo.java @@ -92,4 +92,14 @@ public class CompeteExcelVo { private List projectList; } + @Data + @ApiModel("导入总决赛表异常") + public static class ErrorPlayer{ + @ApiModelProperty("sheet名") + private String sheetName; + @ApiModelProperty("行") + private int rowNum; + @ApiModelProperty("异常原因") + private String remark; + } } 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 45ca8e90..7c2f71df 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 @@ -162,4 +162,12 @@ public interface CompeteCompanyDao extends CompeteCompanyMapper { List selectCompeteJoinCountList(@Param("competeTimeId")Long competeTimeId); + /** + * 根据单位名和类型查找参赛单位信息,筛选出有用的一条 + * @param companyCell + * @param playerName + * @param projectCell + * @return + */ + List getCompanyByNameAndType(String companyCell, String playerName, String projectCell,int type); } diff --git a/mt/src/main/java/com/ccsens/mt/service/ExcelService.java b/mt/src/main/java/com/ccsens/mt/service/ExcelService.java index c69799fe..8db16d41 100644 --- a/mt/src/main/java/com/ccsens/mt/service/ExcelService.java +++ b/mt/src/main/java/com/ccsens/mt/service/ExcelService.java @@ -30,10 +30,8 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; +import javax.servlet.http.Part; +import java.io.*; import java.text.SimpleDateFormat; import java.util.ArrayList; diff --git a/mt/src/main/java/com/ccsens/mt/service/IExcelService.java b/mt/src/main/java/com/ccsens/mt/service/IExcelService.java index 3fca6b81..71fa0b6e 100644 --- a/mt/src/main/java/com/ccsens/mt/service/IExcelService.java +++ b/mt/src/main/java/com/ccsens/mt/service/IExcelService.java @@ -3,10 +3,12 @@ package com.ccsens.mt.service; import com.ccsens.mt.bean.dto.ProvinceCompeteDto; import com.ccsens.mt.bean.dto.ScoreDto; import com.ccsens.mt.bean.dto.CompeteDto; +import com.ccsens.mt.bean.vo.CompeteExcelVo; import com.ccsens.mt.bean.vo.TableVo; import com.ccsens.util.bean.dto.QueryDto; import com.github.pagehelper.PageInfo; +import javax.servlet.http.Part; import java.io.IOException; import java.util.List; @@ -106,4 +108,5 @@ public interface IExcelService { String countExpTable(ScoreDto.ShowResultNoPage param); + } diff --git a/mt/src/main/java/com/ccsens/mt/service/IImportService.java b/mt/src/main/java/com/ccsens/mt/service/IImportService.java new file mode 100644 index 00000000..41c7168b --- /dev/null +++ b/mt/src/main/java/com/ccsens/mt/service/IImportService.java @@ -0,0 +1,14 @@ +package com.ccsens.mt.service; + +import com.ccsens.mt.bean.vo.CompeteExcelVo; + +import java.util.List; + +public interface IImportService { + /** + * 导入总决赛人员表 + * @param path 总决赛表 + * @return 返回失败的信息 + */ + List importFinal(String path) throws Exception; +} diff --git a/mt/src/main/java/com/ccsens/mt/service/ImportService.java b/mt/src/main/java/com/ccsens/mt/service/ImportService.java new file mode 100644 index 00000000..26335a6a --- /dev/null +++ b/mt/src/main/java/com/ccsens/mt/service/ImportService.java @@ -0,0 +1,81 @@ +package com.ccsens.mt.service; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.ccsens.mt.bean.po.CompeteCompany; +import com.ccsens.mt.bean.vo.CompeteExcelVo; +import com.ccsens.mt.persist.dao.CompeteCompanyDao; +import com.ccsens.util.ExcelUtil; +import com.ccsens.util.StringUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.io.FileInputStream; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; + +/** + * @author 逗 + */ +@Slf4j +@Service +@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) +public class ImportService implements IImportService{ + @Resource + private CompeteCompanyDao competeCompanyDao; + + + @Override + public List importFinal(String path) throws Exception{ + List errorPlayers = new ArrayList<>(); + + //获取excel表格 + InputStream is = new FileInputStream(path); + XSSFWorkbook wb = new XSSFWorkbook(is); + //获取每个sheet信息 + for (int i = 0; i < wb.getNumberOfSheets(); i++) { + int type = 7; + XSSFSheet sheet = wb.getSheetAt(i); + if(ObjectUtil.isNotNull(sheet)) { + String sheetName = sheet.getSheetName(); + if (StrUtil.isNotBlank(sheetName)) { + if ("运城站入围名单".equals(sheetName)) { + type = 5; + } else if ("临汾站入围名单".equals(sheetName)) { + type = 4; + } else if ("太原站入围名单".equals(sheetName)) { + type = 6; + } + } + //读取sheet内的信息 + readSheet(sheet,type,errorPlayers); + } + } + return errorPlayers; + } + + private void readSheet(XSSFSheet sheet, int type, List errorPlayers) { + 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 groupCell = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(sheet.getRow(i).getCell(0))); + //选手姓名 + String playerCell = StringUtil.replaceStrSpace(ExcelUtil.getCellValue(sheet.getRow(i).getCell(0))); + String[] playerNames = new String[]{playerCell}; + if(StrUtil.isNotBlank(playerCell)){ + playerNames = playerCell.split("、"); + } + //查找参赛单位 + List company = competeCompanyDao.getCompanyByNameAndType(companyCell,playerNames[0],projectCell,type); + } + } +} diff --git a/mt/src/main/resources/mapper_dao/CompeteCompanyDao.xml b/mt/src/main/resources/mapper_dao/CompeteCompanyDao.xml index 04222a8d..1920e3d3 100644 --- a/mt/src/main/resources/mapper_dao/CompeteCompanyDao.xml +++ b/mt/src/main/resources/mapper_dao/CompeteCompanyDao.xml @@ -473,4 +473,5 @@ tcc.id ) t2 ON t2.companyId = t3.companyId + \ No newline at end of file diff --git a/recovery/src/main/java/com/ccsens/recovery/service/PatientService.java b/recovery/src/main/java/com/ccsens/recovery/service/PatientService.java index 59fc77d1..ccbc4cc4 100644 --- a/recovery/src/main/java/com/ccsens/recovery/service/PatientService.java +++ b/recovery/src/main/java/com/ccsens/recovery/service/PatientService.java @@ -20,10 +20,8 @@ import com.ccsens.recovery.util.Constant; import com.ccsens.util.JacksonUtil; import com.ccsens.util.RedisUtil; import com.ccsens.util.bean.message.common.*; -import com.ccsens.util.bean.message.server.ChannelStatusMessage; import com.ccsens.util.config.RabbitMQConfig; import com.ccsens.util.message.SwitchoverProjectUtil; -import com.fasterxml.jackson.core.JsonProcessingException; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.core.AmqpTemplate; import org.springframework.stereotype.Service; @@ -53,12 +51,8 @@ public class PatientService implements IPatientService{ @Resource private RecipeRecordMapper recipeRecordMapper; @Resource - private RecipeProjectMapper recipeProjectMapper; - @Resource private RecDrillDao recDrillDao; @Resource - private RecoveryDoctorMapper recoveryDoctorMapper; - @Resource private PatientRobotMapper patientRobotMapper; @Resource private RecoveryCentreMapper recoveryCentreMapper; @@ -78,9 +72,6 @@ public class PatientService implements IPatientService{ @Override public List queryPatientByRecovery(HospitalDto.RecoveryCentreId param, Long userId) { Long centreId = hospitalService.getCentreByProjectId(param.getProjectId()); -// if(ObjectUtil.isNull(centreId)){ -//// centreId = hospitalService.getCentreByUserId(userId); -//// } return patientDao.queryPatientByHospitalId(centreId); } diff --git a/tall/src/main/resources/application.yml b/tall/src/main/resources/application.yml index ebc544af..b5408a3a 100644 --- a/tall/src/main/resources/application.yml +++ b/tall/src/main/resources/application.yml @@ -1,5 +1,5 @@ spring: profiles: - active: test - include: util-test,common + active: dev + include: util-dev,common