102 lines
4.2 KiB
Java
102 lines
4.2 KiB
Java
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<String,Object> params){
|
||
List<PrecisionMedicineGene> genes = geneService.list(new LambdaQueryWrapper<PrecisionMedicineGene>()
|
||
.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<PrecisionMedicineGene> 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<String,Object> geneInfo = geneService.getGeneInfo(gene.getId().toString());
|
||
List<Map<String,Object>> prescriptionList = (List<Map<String, Object>>) geneInfo.get("prescriptionList");
|
||
String prescriptionStr = "";
|
||
for (Map<String, Object> 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);
|
||
}
|
||
|
||
|
||
}
|