package com.peanut.modules.taihumed.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.peanut.common.utils.R; import com.peanut.modules.common.entity.PrecisionMedicineGene; import com.peanut.modules.common.service.PrecisionMedicineGeneService; import com.peanut.modules.common.service.PrecisionMedicinePrescriptionService; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; import java.net.URLEncoder; import java.util.*; @Slf4j @RestController("taihumedPrecisionMedicine") @RequestMapping("taihumed/precisionMedicine") public class PrecisionMedicineController { @Autowired private PrecisionMedicineGeneService geneService; @Autowired private PrecisionMedicinePrescriptionService prescriptionService; @RequestMapping("/getPrecisionMedicineGenes") public R getPrecisionMedicineGenes(@RequestBody Map params){ List genes = geneService.list(new LambdaQueryWrapper() .and(t->t.like(PrecisionMedicineGene::getName,params.get("name")) .or().like(PrecisionMedicineGene::getAlias,params.get("name")))); return R.ok().put("genes",genes); } @RequestMapping("/getGenes") public void getPrescriptions(HttpServletResponse response){ List genes = geneService.list(); XSSFWorkbook wb = new XSSFWorkbook(); //创建一张表 Sheet sheet = wb.createSheet("Student"); //创建第一行,起始为0 Row titleRow = sheet.createRow(0); titleRow.createCell(0).setCellValue("基因名称"); titleRow.createCell(1).setCellValue("基因中文名"); titleRow.createCell(2).setCellValue("描述"); titleRow.createCell(3).setCellValue("关联药材名"); titleRow.createCell(4).setCellValue("关联方剂"); //序号,默认为1 int cell = 1; //遍历 for (PrecisionMedicineGene gene:genes){ Map geneInfo = geneService.getGeneInfo(gene.getId().toString()); List> prescriptionList = (List>) geneInfo.get("prescriptionList"); String prescriptionStr = ""; for (Map prescription:prescriptionList) { prescriptionStr+="匹配方剂:"+prescription.get("name")+",方剂组成:"+prescription.get("compose")+"出处:"+prescription.get("source")+";"; } Row row = sheet.createRow(cell); row.createCell(0).setCellValue(gene.getName()); row.createCell(1).setCellValue(gene.getNamecn()); row.createCell(2).setCellValue(gene.getDescription()); row.createCell(3).setCellValue(gene.getTcmName()); row.createCell(4).setCellValue(prescriptionStr); //序号自增 cell++; } String fileName = "基因药材方剂.xlsx"; OutputStream outputStream =null; try { //文件名编码格式 fileName = URLEncoder.encode(fileName,"UTF-8"); //设置ContentType请求信息格式 response.setContentType("application/vnd.ms-excel"); //设置标头 response.setHeader("Content-disposition", "attachment;filename=" + fileName); outputStream = response.getOutputStream(); wb.write(outputStream); } catch (IOException e) { e.printStackTrace(); }finally { try { outputStream.flush(); outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } // return R.ok().put("genes",genes); } }