package com.ltkj.web.controller.system;
|
|
import java.io.*;
|
import java.net.URL;
|
import java.nio.file.Files;
|
import java.nio.file.Paths;
|
import java.text.NumberFormat;
|
import java.util.*;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletResponse;
|
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.io.FileUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.itextpdf.text.*;
|
import com.itextpdf.text.pdf.*;
|
import com.itextpdf.text.pdf.draw.LineSeparator;
|
import com.ltkj.common.utils.DateUtils;
|
import com.ltkj.common.utils.SecurityUtils;
|
import com.ltkj.common.utils.StringUtils;
|
import com.ltkj.framework.config.MatchUtils;
|
import com.ltkj.hosp.domain.*;
|
import com.ltkj.hosp.service.*;
|
import com.ltkj.mall.mallOrderUtils.TjConstants;
|
import com.ltkj.system.service.ISysUserService;
|
import com.ltkj.web.config.pdfutils.MergePdf;
|
import com.ltkj.web.config.pdfutils.MyHeaderFooter;
|
import com.ltkj.web.config.pdfutils.PDFBinaryUtil;
|
import com.ltkj.web.config.pdfutils.PdfUtils;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiParam;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.web.bind.annotation.*;
|
import com.ltkj.common.core.controller.BaseController;
|
import com.ltkj.common.core.domain.AjaxResult;
|
|
import static com.ltkj.web.config.pdfutils.PDFBinaryUtil.getPDFBinary;
|
|
/**
|
* 体检报告存储Controller
|
*
|
* @author ltkj
|
* @date 2022-12-06
|
*/
|
@RestController
|
@RequestMapping("/system/report")
|
@Api(tags = "体检报告")
|
@Transactional
|
public class TjReportController extends BaseController {
|
@Resource
|
private ITjReportService tjReportService;
|
@Resource
|
private ITjCustomerService tjCustomerService;
|
@Autowired
|
private ITjOrderService tjOrderService;
|
@Autowired
|
private ITjOrderDetailService tjOrderDetailService;
|
@Resource
|
private ITjProjectService projectService;
|
@Resource
|
private ITjOrderRemarkService tjOrderRemarkService;
|
@Resource
|
private ITjStandardService tjStandardService;
|
@Resource
|
private ITjAdviceService tjAdviceService;
|
@Resource
|
private IDictCompService dictCompService;
|
@Resource
|
private ITjReportTemplateService reportTemplateService;
|
@Value("${path.filePath}")
|
private String value;
|
@Resource
|
private ISysUserService userService;
|
@Resource
|
private ITjOrderDetailRulesService detailRulesService;
|
@Resource
|
private ITjRulesService rulesService;
|
|
|
|
// /* *//**
|
// * 查询体检报告存储列表
|
// *//*
|
// @PreAuthorize("@ss.hasPermi('system:report:list')")
|
// @GetMapping("/list")
|
// public TableDataInfo list(TjReport tjReport) {
|
// startPage();
|
// List<TjReport> list = tjReportService.selectTjReportList(tjReport);
|
// return getDataTable(list);
|
// }
|
//
|
// *//**
|
// * 导出体检报告存储列表
|
// *//*
|
// @PreAuthorize("@ss.hasPermi('system:report:export')")
|
// @Log(title = "体检报告存储", businessType = BusinessType.EXPORT)
|
// @PostMapping("/export")
|
// public void export(HttpServletResponse response, TjReport tjReport) {
|
// List<TjReport> list = tjReportService.selectTjReportList(tjReport);
|
// ExcelUtil<TjReport> util = new ExcelUtil<TjReport>(TjReport.class);
|
// util.exportExcel(response, list, "体检报告存储数据");
|
// }
|
//
|
// *//**
|
// * 获取体检报告存储详细信息
|
// *//*
|
// @PreAuthorize("@ss.hasPermi('system:report:query')")
|
// @GetMapping(value = "/{reId}")
|
// public AjaxResult getInfo(@PathVariable("reId") Long reId) {
|
// return success(tjReportService.selectTjReportByReId(reId));
|
// }
|
//
|
// *//**
|
// * 存储体检报告
|
// *//*
|
// @PostMapping
|
// @ApiOperation(value = "生成体检报告给总检审核")
|
// public AjaxResult addReport(@RequestParam @ApiParam(value = "体检号") String tjNumber) {
|
// ReportVO report = new ReportVO();
|
// LambdaQueryWrapper<TjOrder> wq = new LambdaQueryWrapper<>();
|
// wq.eq(TjOrder::getTjNumber, tjNumber);
|
// TjOrder tjOrder = tjOrderService.getOne(wq);
|
// Integer checkStatus = tjOrder.getCheckStatus();
|
// if (checkStatus == 0) {
|
// report.setTjOrder(tjOrder);
|
// LambdaQueryWrapper<TjCustomer> wq1 = new LambdaQueryWrapper<>();
|
// wq1.eq(TjCustomer::getCusId, tjOrder.getUserId());
|
// report.setTjCustomer(tjCustomerService.getOne(wq1));
|
// LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
|
// wq2.eq(TjOrderDetail::getOrderId, tjOrder.getOrderId());
|
// List<TjOrderDetail> list = tjOrderDetailService.list(wq2);
|
// for (TjOrderDetail tjOrderDetail : list) {
|
// TjProject tjProject = projectService.selectTjProjectByProId(tjOrderDetail.getProId());
|
// tjOrderDetail.setProject(tjProject);
|
//
|
// }
|
// LambdaQueryWrapper<TjOrderRemark> wq5 = new LambdaQueryWrapper<>();
|
// wq5.eq(TjOrderRemark::getTjNumber, tjOrder.getTjNumber());
|
// List<TjOrderRemark> list1 = tjOrderRemarkService.list(wq5);
|
// for (TjOrderRemark tjOrderRemark : list1) {
|
// LambdaQueryWrapper<TjProject> wq3 = new LambdaQueryWrapper<>();
|
// wq3.eq(TjProject::getProParentId, tjOrderRemark.getProId());
|
// List<TjProject> list3 = projectService.list(wq3);
|
// List<Long> collect = list3.stream().map(TjProject::getProId).collect(Collectors.toList());
|
// LambdaQueryWrapper<TjOrderDetail> wq4 = new LambdaQueryWrapper<>();
|
// wq4.eq(TjOrderDetail::getOrderId, tjOrder.getOrderId());
|
// wq4.in(TjOrderDetail::getProId, collect);
|
// List<TjOrderDetail> list6 = tjOrderDetailService.list(wq4);
|
// for (TjOrderDetail tjOrderDetail : list6) {
|
// TjProject tjProject = projectService.selectTjProjectByProId(tjOrderDetail.getProId());
|
// tjOrderDetail.setProject(tjProject);
|
// LambdaQueryWrapper<TjAdvice> wq7 = new LambdaQueryWrapper<>();
|
// wq7.eq(TjAdvice::getProId, tjOrderDetail.getProId());
|
// List<TjAdvice> list4 = tjAdviceService.list(wq7);
|
// tjOrderDetail.setAdviceList(list4);
|
// LambdaQueryWrapper<TjStandard> wq6 = new LambdaQueryWrapper<>();
|
// wq6.eq(TjStandard::getProId, tjOrderDetail.getProId());
|
// List<TjStandard> list2 = tjStandardService.list(wq6);
|
// if (list2.size() == 0) {
|
// tjOrderDetail.setStandard(null);
|
// } else if (list2.size() == 1) {
|
// tjOrderDetail.setStandard(list2.get(0));
|
// } else {
|
// Long cusSex = tjCustomerService.getOne(wq1).getCusSex();
|
// Date cusBrithday = tjCustomerService.getOne(wq1).getCusBrithday();
|
// int age = DateUtil.ageOfNow(cusBrithday);
|
// for (TjStandard tjStandard : list2) {
|
// LambdaQueryWrapper<TjStandard> wq8 = new LambdaQueryWrapper<>();
|
// if (tjStandard.getTjSex() != null) {
|
// wq8.eq(TjStandard::getTjSex, cusSex);
|
// }
|
// if (tjStandard.getTjType() != null) {
|
// wq8.eq(TjStandard::getTjType, StringUtils.getAgeType(age));
|
// }
|
// TjStandard one = tjStandardService.getOne(wq8);
|
// tjOrderDetail.setStandard(one);
|
// }
|
// }
|
// }
|
// tjOrderRemark.setTjOrderDetailList(list6);
|
//
|
// }
|
// report.setTjOrderRemark(list1);
|
// } else {
|
// return AjaxResult.success("该报告已审核!");
|
// }
|
// return AjaxResult.success(report);
|
// }
|
//
|
//
|
// *//**
|
// * 修改体检报告存储
|
// *//*
|
// @PreAuthorize("@ss.hasPermi('system:report:edit')")
|
// @Log(title = "体检报告存储", businessType = BusinessType.UPDATE)
|
// @PutMapping
|
// public AjaxResult edit(@RequestBody TjReport tjReport) {
|
// return toAjax(tjReportService.updateTjReport(tjReport));
|
// }
|
//
|
// *//**
|
// * 删除体检报告存储
|
// *//*
|
// @PreAuthorize("@ss.hasPermi('system:report:remove')")
|
// @Log(title = "体检报告存储", businessType = BusinessType.DELETE)
|
// @DeleteMapping("/{reIds}")
|
// public AjaxResult remove(@PathVariable Long[] reIds) {
|
// return toAjax(tjReportService.deleteTjReportByReIds(reIds));
|
// }*/
|
|
@GetMapping("/toPdf/{TjNumber}")
|
@ApiOperation(value = "打印体检报告为pdf")
|
@Transactional
|
public AjaxResult toPdf(@PathVariable("TjNumber") @ApiParam(value = "体检号") String tjNumber) {
|
|
//从文件地址读入PDF文件 仅存储一次
|
// TODO: 2023/3/21 将模板保存到数据库 一次使用后注释
|
// String base64String = PDFBinaryUtil.getPDFBinary("D:\\Tjreport\\10001体检报告封面模板1.0.pdf");
|
// System.out.println(base64String);
|
// TjReportTemplate tem = new TjReportTemplate();
|
// tem.setName("体检报告模板3");
|
// tem.setRemark("中铁一局电务公司体检中心");
|
// tem.setTemplate(base64String);
|
// tem.setFlag("1");
|
// tem.setOpen("0");
|
// reportTemplateService.save(tem);
|
// // TODO: 2023/3/21 将心电图保存到数据库 一次使用后注释 暂时用于测试
|
// String base64String2 = PDFBinaryUtil.getPDFBinary("D:\\Tjreport\\心电图.pdf");
|
// System.out.println(base64String2);
|
// TjReport tem2 = new TjReport();
|
// tem2.setTjNumber(tjNumber);
|
// tem2.setReport(base64String2);
|
// tem2.setType("心电图");
|
// tjReportService.save(tem2);
|
//
|
// String base64String1 = PDFBinaryUtil.getPDFBinary("D:\\Tjreport\\附件1.pdf");
|
// System.out.println(base64String1);
|
// TjReport tem1 = new TjReport();
|
// tem1.setTjNumber(tjNumber);
|
// tem1.setReport(base64String1);
|
// tem1.setType("附件");
|
// tjReportService.save(tem1);
|
|
int num = tjOrderRemarkService.getTjYqOrderRemarkByTjNum(tjNumber);
|
if(num >0) return AjaxResult.error("有延期项目暂不能生成报告!!!");
|
|
LambdaQueryWrapper<TjReportTemplate> tjReportTemplateLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, 1);
|
tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getOpen, 0);
|
TjReportTemplate one1 = reportTemplateService.getOne(tjReportTemplateLambdaQueryWrapper);
|
String template = one1.getTemplate();
|
|
String userId = SecurityUtils.getLoginUser().getUsername();
|
PDFBinaryUtil.base64StringToPDF(template, FileUtil.mkdir(value).getPath() + "\\" + userId + "体检报告封面模板.pdf");
|
// --------以上------- 根据数据库中的模板二进制文件 转pdf 创建文件夹 将pdf放进本地文件夹
|
|
//判断表中有没有该体检报告 不能重复生成
|
LambdaQueryWrapper<TjReport> wqa = new LambdaQueryWrapper<>();
|
wqa.eq(TjReport::getTjNumber, tjNumber);
|
wqa.eq(TjReport::getType,"体检报告");
|
List<TjReport> list2 = tjReportService.list(wqa);
|
if (list2.size() != 0) {
|
return AjaxResult.error("该客户报告已生成!不能重复生成!可直接预览或打印!");
|
}
|
|
|
LambdaQueryWrapper<TjOrder> wq = new LambdaQueryWrapper<>();
|
wq.eq(TjOrder::getTjNumber, tjNumber);
|
TjOrder tjOrder = tjOrderService.getOne(wq);
|
if (null != tjOrder) {
|
Integer checkStatus = tjOrder.getCheckStatus();
|
if (checkStatus == 1) {
|
LambdaQueryWrapper<TjCustomer> wq1 = new LambdaQueryWrapper<>();
|
wq1.eq(TjCustomer::getCusId, tjOrder.getUserId());
|
TjCustomer tjCustomer = tjCustomerService.getOne(wq1);
|
LambdaQueryWrapper<DictComp> wq111 = new LambdaQueryWrapper<>();
|
wq111.eq(DictComp::getDrugManufacturerId, tjOrder.getFirmId());
|
DictComp dictComp = dictCompService.getOne(wq111);
|
LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
|
wq2.eq(TjOrderDetail::getOrderId, tjOrder.getOrderId());
|
//20230306判断该项目是否退费/缴费
|
wq2.isNotNull(TjOrderDetail::getFlowingWaterId);
|
//20230323判断该项目是否弃检/未检
|
// wq2.eq(TjOrderDetail::getTjStatus,1);
|
List<TjOrderDetail> list = tjOrderDetailService.list(wq2);
|
for (TjOrderDetail tjOrderDetail : list) {
|
TjProject tjProject = projectService.selectTjProjectByProId(tjOrderDetail.getProId());
|
tjOrderDetail.setProject(tjProject);
|
}
|
|
String inputFileName = value + "\\" + userId + "体检报告封面模板.pdf";
|
String outputFileName = value + "\\" + userId + "体检报告封面页.pdf";
|
OutputStream os = null;
|
PdfStamper ps = null;
|
PdfReader reader = null;
|
File file = new File(outputFileName);
|
try {
|
os = Files.newOutputStream(file.toPath());
|
// 读入pdf表单
|
reader = new PdfReader(inputFileName);
|
// 根据表单生成一个新的pdf
|
ps = new PdfStamper(reader, os);
|
// 获取pdf表单
|
AcroFields form = ps.getAcroFields();
|
//该字体造成类型不均匀,但是pdf转图片不乱码
|
//BaseFont bf = BaseFont.createFont("C:Windows\\Fonts\\simfang.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
|
BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
|
form.addSubstitutionFont(bf);
|
|
// 填充数据给表格
|
Map<String, Object> data = new HashMap<>();
|
|
//填充性别:判断男女
|
Long cusSex = tjCustomer.getCusSex();
|
String sex;
|
String name1;
|
if (cusSex == 0) {
|
sex = "男";
|
name1=tjCustomer.getCusName()+"先生";
|
} else {
|
sex = "女";
|
name1=tjCustomer.getCusName()+"女士";
|
}
|
data.put("name",tjCustomer.getCusName());
|
data.put("name1",name1);
|
data.put("sex", sex);
|
data.put("age", DateUtil.ageOfNow(tjCustomer.getCusBrithday()));
|
data.put("tjnumber", tjNumber);
|
data.put("tjdate", DateUtils.parseDateToStr("yyyy/MM/dd", tjOrder.getCreateTime()));
|
data.put("phone", tjCustomer.getCusPhone());
|
data.put("idcard", MatchUtils.hideIdCardNum(tjCustomer.getCusIdcard()));
|
if (dictComp == null) {
|
data.put("work", "无");
|
} else {
|
data.put("work", dictComp.getCnName());
|
}
|
//封面页下面的总检建议显示
|
if (tjOrder.getCheckAdvice() == null) {
|
data.put("remark", "无");
|
} else {
|
data.put("remark", tjOrder.getCheckAdvice());
|
}
|
//封面页下面的总检建议显示
|
if (tjOrder.getCheckDoctor() == null) {
|
data.put("docname", "无");
|
} else {
|
data.put("docname", tjOrder.getCheckDoctor());
|
}
|
|
// 遍历data 给pdf表单表格赋值
|
for (String key : data.keySet()) {
|
form.setField(key, data.get(key).toString());
|
}
|
//设置为无法编辑
|
ps.setFormFlattening(true);
|
ps.close();
|
os.close();
|
reader.close();
|
|
//====================================以上封面页,以下详情页
|
//文档对象 实现A4纸页面
|
Document document = new Document(PageSize.A4);
|
//document.setMarginMirroring(true);
|
//设置文档的页边距就是距离页面边上的距离,分别为:左边距,右边距,上边距,下边距
|
document.setMargins(70, 70, 40, 40);
|
//生成pdf的位置以及名称
|
String fileName = value + "\\" + userId + "体检报告项目详情页.pdf";
|
OutputStream outputStream = Files.newOutputStream(Paths.get(fileName));
|
PdfWriter pdfWriter = PdfWriter.getInstance(document, outputStream);
|
|
pdfWriter.setPageEvent(new MyHeaderFooter());// 页眉页脚
|
|
document.open();
|
|
Map<TjOrderRemark, List<TjPdfVO>> tjOrderRemarkObjectMap = addTable(tjNumber);
|
for (Map.Entry<TjOrderRemark, List<TjPdfVO>> entry : tjOrderRemarkObjectMap.entrySet()) {
|
List<TjPdfVO> value = entry.getValue();
|
LambdaQueryWrapper<TjProject> wqqq = new LambdaQueryWrapper<>();
|
wqqq.eq(TjProject::getProId, entry.getKey().getProId());
|
TjProject one11 = projectService.getOne(wqqq);
|
if("1".equals(one11.getProCheckMethod())){
|
String titleName = one11.getProName();
|
// 设置标题字体样式
|
Font titleFonts = PdfUtils.setFont(9);
|
Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
|
|
String[] titles = {"体检项目", "体检结果"};
|
// 获取列表数据
|
//设置表头字体样式
|
Font headFont = PdfUtils.setFont(9);
|
// 设置正文字体样式:12号
|
Font textFont = PdfUtils.setFont(9);
|
//创建表格 将表头字体和正文字体放进去
|
PdfPTable table = PdfUtils.setTable1(headFont, textFont, titles, value);
|
document.add(paragraph);
|
document.add(table);
|
|
//判断备注是否为空 空不能显示null
|
if (entry.getKey().getRemark() == null) {
|
entry.getKey().setRemark("");
|
}
|
|
String remark = "备注:" + entry.getKey().getRemark();
|
if (entry.getKey().getRemark().length()>50){
|
int j=0;
|
for (int i = 0; i < remark.length()/50; i++) {
|
String substring = remark.substring(j, j+50);
|
Font remarkFonts = PdfUtils.setFont(9);
|
Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
|
document.add(pp);
|
j=j+50;
|
}
|
if (remark.length()%50!=0){
|
String substring = remark.substring((remark.length()/50)*50, remark.length()-1);
|
Font remarkFonts = PdfUtils.setFont(9);
|
Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
|
document.add(pp);
|
}
|
}else {
|
Font remarkFonts = PdfUtils.setFont(9);
|
Paragraph pp = PdfUtils.setParagraph(remarkFonts, remark);
|
document.add(pp);
|
}
|
|
//判断主检医师是否为空 空不能显示null
|
if (null !=entry.getKey().getDoctorName() && null !=userService.getById(entry.getKey().getDoctorName())) {
|
//主检医师
|
String doctorName = "主检医师:" + userService.getById(entry.getKey().getDoctorName()).getNickName();
|
Font doctorFonts = PdfUtils.setFont(9);
|
Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
|
df.setAlignment(Element.ALIGN_RIGHT);
|
document.add(df);
|
}else {
|
String doctorName = "主检医师:" + "无";
|
Font doctorFonts = PdfUtils.setFont(9);
|
Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
|
df.setAlignment(Element.ALIGN_RIGHT);
|
document.add(df);
|
|
}
|
|
//分割线
|
LineSeparator objectName = new LineSeparator();
|
document.add(objectName);
|
}else {
|
String titleName = one11.getProName();
|
// 设置标题字体样式
|
Font titleFonts = PdfUtils.setFont(9);
|
Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
|
|
String[] titles = {"体检项目", "体检结果", "单位", "参考范围"};
|
// 获取列表数据
|
//设置表头字体样式
|
Font headFont = PdfUtils.setFont(9);
|
// 设置正文字体样式:12号
|
Font textFont = PdfUtils.setFont(9);
|
//创建表格 将表头字体和正文字体放进去
|
PdfPTable table = PdfUtils.setTable(headFont, textFont, titles, value);
|
document.add(paragraph);
|
document.add(table);
|
|
//判断备注是否为空 空不能显示null
|
if (entry.getKey().getRemark() == null) {
|
entry.getKey().setRemark("");
|
}
|
|
String remark = "备注:" + entry.getKey().getRemark();
|
if (entry.getKey().getRemark().length()>50){
|
int j=0;
|
for (int i = 0; i < remark.length()/50; i++) {
|
String substring = remark.substring(j, j+50);
|
Font remarkFonts = PdfUtils.setFont(9);
|
Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
|
document.add(pp);
|
j=j+50;
|
}
|
if (remark.length()%50!=0){
|
String substring = remark.substring((remark.length()/50)*50, remark.length()-1);
|
Font remarkFonts = PdfUtils.setFont(9);
|
Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
|
document.add(pp);
|
}
|
}else {
|
Font remarkFonts = PdfUtils.setFont(9);
|
Paragraph pp = PdfUtils.setParagraph(remarkFonts, remark);
|
document.add(pp);
|
}
|
|
//判断主检医师是否为空 空不能显示null
|
if (null !=entry.getKey().getDoctorName() && null !=userService.getById(entry.getKey().getDoctorName())) {
|
//主检医师
|
String doctorName = "主检医师:" + userService.getById(entry.getKey().getDoctorName()).getNickName();
|
Font doctorFonts = PdfUtils.setFont(9);
|
Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
|
df.setAlignment(Element.ALIGN_RIGHT);
|
document.add(df);
|
}else {
|
String doctorName = "主检医师:" + "无";
|
Font doctorFonts = PdfUtils.setFont(9);
|
Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
|
df.setAlignment(Element.ALIGN_RIGHT);
|
document.add(df);
|
}
|
//分割线
|
LineSeparator objectName = new LineSeparator();
|
document.add(objectName);
|
}
|
}
|
document.close();
|
pdfWriter.close();
|
outputStream.close();
|
|
// TODO: 2023/3/29 查询附件pdf 如心电图、附件
|
LambdaQueryWrapper<TjReport> rtwq = new LambdaQueryWrapper<>();
|
rtwq.eq(TjReport::getType, "心电图");
|
rtwq.eq(TjReport::getTjNumber, tjNumber);
|
TjReport one1111 = tjReportService.getOne(rtwq);
|
String report = one1111.getReport();
|
PDFBinaryUtil.base64StringToPDF(report, FileUtil.mkdir(value).getPath() + "\\" + userId + "心电图.pdf");
|
|
LambdaQueryWrapper<TjReport> rtwq1 = new LambdaQueryWrapper<>();
|
rtwq1.eq(TjReport::getType, "附件");
|
rtwq1.eq(TjReport::getTjNumber, tjNumber);
|
TjReport one11111 = tjReportService.getOne(rtwq1);
|
String report1 = one11111.getReport();
|
PDFBinaryUtil.base64StringToPDF(report1, FileUtil.mkdir(value).getPath() + "\\" + userId + "附件.pdf");
|
|
|
//合并
|
String[] files1 = {value + "\\" + userId + "体检报告封面页.pdf", value + "\\" + userId + "体检报告项目详情页.pdf",value + "\\" + userId + "心电图.pdf",value + "\\" + userId + "附件.pdf"};
|
//String[] files1 = {value + "\\" + userId + "体检报告封面页.pdf", value + "\\" + userId + "体检报告项目详情页.pdf"};
|
String outputPath1 = value + "\\";
|
String outputFileName1 = userId+tjNumber +tjCustomer.getCusName()+ "_体检报告.pdf";
|
|
File file1 = new File(outputPath1 + outputFileName1);
|
List<File> f = new ArrayList<>();
|
for (String s : files1) {
|
f.add(new File(s));
|
}
|
MergePdf.mergeFileToPDF(f, file1);
|
|
TjReport tjReport = new TjReport();
|
tjReport.setTjNumber(String.valueOf(tjNumber));
|
tjReport.setPath(outputPath1 + outputFileName1);
|
String pdfBinary = getPDFBinary(outputPath1 + outputFileName1);
|
tjReport.setReport(pdfBinary);
|
tjReport.setType("体检报告");
|
tjReportService.save(tjReport);
|
|
//TODO 2023/2/3 16:21 生成体检报告pdf后删除本地文件
|
//FileUtil.del(value + "\\" + tjNumber + "体检报告.pdf");
|
//FileUtil.del(value + "\\" + userId + "体检报告封面模板.pdf");
|
//FileUtil.del(value + "\\" + userId + "体检报告项目详情页.pdf");
|
//FileUtil.del(value + "\\" + userId + "体检报告封面页.pdf");
|
//FileUtil.del(value + "\\" + userId + "心电图.pdf");
|
|
|
//修改order表中的打印报告时间为当前时间
|
LambdaUpdateWrapper<TjOrder> updateWrapper = new LambdaUpdateWrapper<>();
|
updateWrapper.eq(TjOrder::getTjNumber, tjNumber);
|
updateWrapper.set(TjOrder::getReportTime, new Date());
|
updateWrapper.set(TjOrder::getPrintLastTime, new Date());
|
updateWrapper.set(TjOrder::getDownloadLastTime, new Date());
|
updateWrapper.set(TjOrder::getStatus, TjConstants.TJ_END);
|
tjOrderService.update(updateWrapper);
|
|
return AjaxResult.success("已生成报告!可直接点击预览!");
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
return AjaxResult.success("PDF导出失败");
|
}
|
}
|
}
|
return AjaxResult.success("该用户体检未完成,不能打印报告!!!");
|
}
|
|
public Map<TjOrderRemark, List<TjPdfVO>> addTable(String tjNumber) {
|
//创建map 键为父项目 值为子项目集合
|
Map<TjOrderRemark, List<TjPdfVO>> printReport = new HashMap<>();
|
|
//查到该客户的体检记录
|
LambdaQueryWrapper<TjOrder> wq1 = new LambdaQueryWrapper<>();
|
wq1.eq(TjOrder::getTjNumber, tjNumber);
|
TjOrder one = tjOrderService.getOne(wq1);
|
|
//拿到体检记录的orderid,查出项目详细信息
|
LambdaQueryWrapper<TjOrderDetail> wq = new LambdaQueryWrapper<>();
|
wq.eq(TjOrderDetail::getOrderId, one.getOrderId());
|
//20230323判断项目已检
|
wq.ne(TjOrderDetail::getTjStatus,0);
|
List<TjOrderDetail> tjOrderDetails = tjOrderDetailService.list(wq);
|
|
//遍历体检记录 将项目的具体信息
|
//遍历客户所选的项目(包含子项父项)
|
for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
|
TjProject tjProject = projectService.getById(tjOrderDetail.getProId());
|
if(null !=tjProject){
|
tjOrderDetail.setProject(tjProject);
|
}
|
}
|
|
LambdaQueryWrapper<TjCustomer> wq22 = new LambdaQueryWrapper<>();
|
wq22.eq(TjCustomer::getCusId, one.getUserId());
|
TjCustomer customer = tjCustomerService.getOne(wq22);
|
LambdaQueryWrapper<TjOrderRemark> wqq = new LambdaQueryWrapper<>();
|
wqq.eq(TjOrderRemark::getTjNumber, tjNumber);
|
List<TjOrderRemark> tjOrderRemarks = tjOrderRemarkService.list(wqq);
|
|
for (TjOrderRemark tjOrderRemark : tjOrderRemarks) {
|
printReport.put(tjOrderRemark, null);
|
}
|
|
for (Map.Entry<TjOrderRemark, List<TjPdfVO>> entry : printReport.entrySet()) {
|
List<TjPdfVO> tjPdfVOS = new ArrayList<>();
|
for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
|
if(null==tjOrderDetail.getProject()){
|
System.out.println("'''''''''''''''''''''''''''''''''''"+tjOrderDetail.getOrderDetailId());
|
}
|
|
if (tjOrderDetail.getProject().getProParentId().equals(entry.getKey().getProId())) {
|
|
LambdaQueryWrapper<TjStandard> wq6 = new LambdaQueryWrapper<>();
|
wq6.eq(TjStandard::getProId, tjOrderDetail.getProId());
|
List<TjStandard> list2 = tjStandardService.list(wq6);
|
if (list2.size() == 0) {
|
TjStandard s=new TjStandard();
|
s.setCompany(" ");
|
s.setTjStandardLtValue(" ");
|
s.setTjStandardGtValue(" ");
|
tjOrderDetail.setStandard(s);
|
} else if (list2.size() == 1) {
|
tjOrderDetail.setStandard(list2.get(0));
|
} else {
|
Long cusSex = customer.getCusSex();
|
Date cusBrithday = customer.getCusBrithday();
|
int age = DateUtil.ageOfNow(cusBrithday);
|
for (TjStandard tjStandard : list2) {
|
LambdaQueryWrapper<TjStandard> wq8 = new LambdaQueryWrapper<>();
|
if (tjStandard.getTjSex() != null) {
|
wq8.eq(TjStandard::getTjSex, cusSex);
|
}
|
if (tjStandard.getTjType() != null) {
|
wq8.eq(TjStandard::getTjType, StringUtils.getAgeType(age));
|
}
|
TjStandard standard = tjStandardService.getOne(wq8);
|
tjOrderDetail.setStandard(standard);
|
}
|
}
|
TjPdfVO tjPdfVO = new TjPdfVO();
|
tjPdfVO.setProName(tjOrderDetail.getProject().getProName());
|
tjPdfVO.setProResult(tjOrderDetail.getProResult());
|
tjPdfVO.setExc(tjOrderDetail.getExceptionDesc());
|
if (tjOrderDetail.getStandard() != null) {
|
//单位
|
if (tjOrderDetail.getStandard().getCompany()==null){
|
tjPdfVO.setCompany(" ");
|
}else {
|
tjPdfVO.setCompany(tjOrderDetail.getStandard().getCompany());
|
}
|
//最大值和最小值
|
String tjStandardGtValue = tjOrderDetail.getStandard().getTjStandardGtValue();
|
String tjStandardLtValue = tjOrderDetail.getStandard().getTjStandardLtValue();
|
if (tjStandardGtValue==null){
|
tjStandardGtValue=" ";
|
}
|
if (tjStandardLtValue==null){
|
tjStandardLtValue=" ";
|
}
|
tjPdfVO.setStandardValue(tjStandardLtValue + "-" + tjStandardGtValue);
|
}
|
tjPdfVOS.add(tjPdfVO);
|
}
|
}
|
printReport.put(entry.getKey(), tjPdfVOS);
|
}
|
return printReport;
|
}
|
|
|
@GetMapping("/preview/{flag}/{TjNumber}")
|
@ApiOperation(value = "下载体检报告")
|
public void preview(HttpServletResponse response, @PathVariable("flag") boolean flag, @PathVariable("TjNumber") String tjNumber) {
|
//修改order表中的下载报告时间为当前时间
|
LambdaUpdateWrapper<TjOrder> updateWrapper = new LambdaUpdateWrapper<>();
|
updateWrapper.eq(TjOrder::getTjNumber, tjNumber);
|
updateWrapper.set(TjOrder::getPrintLastTime, new Date());
|
updateWrapper.set(TjOrder::getDownloadLastTime, new Date());
|
updateWrapper.set(TjOrder::getStatus, TjConstants.TJ_END);
|
tjOrderService.update(updateWrapper);
|
|
|
LambdaQueryWrapper<TjOrder> wq1 = new LambdaQueryWrapper<>();
|
wq1.eq(TjOrder::getTjNumber,tjNumber);
|
TjOrder tjOrder = tjOrderService.getOne(wq1);
|
|
|
LambdaQueryWrapper<TjCustomer> wq2 = new LambdaQueryWrapper<>();
|
wq2.eq(TjCustomer::getCusId, tjOrder.getUserId());
|
TjCustomer tjCustomer = tjCustomerService.getOne(wq2);
|
|
|
LambdaQueryWrapper<TjReport> we = new LambdaQueryWrapper<>();
|
we.eq(TjReport::getTjNumber, tjNumber);
|
we.eq(TjReport::getType,"体检报告");
|
TjReport one = tjReportService.getOne(we);
|
if (one == null) {
|
return;
|
}
|
String userId = SecurityUtils.getLoginUser().getUsername();
|
PDFBinaryUtil.base64StringToPDF(one.getReport(), FileUtil.mkdir(value).getPath() + "\\" + userId+tjNumber +tjCustomer.getCusName()+ "_体检报告.pdf");
|
//String filePath = one.getPath();
|
String filePath = value+ "\\" + userId+tjNumber +tjCustomer.getCusName()+ "_体检报告.pdf";
|
File f = new File(filePath);
|
if (filePath.isEmpty()){
|
System.out.println("文件不存在!");
|
return;
|
}
|
BufferedInputStream br = null;
|
OutputStream out = null;
|
FileInputStream fileInputStream = null;
|
try {
|
fileInputStream = new FileInputStream(f);
|
br = new BufferedInputStream(fileInputStream);
|
byte[] bs = new byte[1024];
|
int len = 0;
|
response.reset(); // 非常重要
|
if (flag) {
|
// 在线打开方式
|
URL u = new URL("file:///" + filePath);
|
//System.out.println(u);
|
String contentType = u.openConnection().getContentType();
|
response.setContentType(contentType);
|
response.setHeader("Content-Disposition", "inline;filename="
|
+ userId+tjNumber + ".pdf");
|
} else {
|
// 纯下载方式
|
response.setContentType("application/x-msdownload");
|
response.setContentType("application/pdf;charset=utf-8");
|
response.setHeader("Content-Disposition", "attachment;filename="
|
+ userId+tjNumber + ".pdf");
|
}
|
out = response.getOutputStream();
|
while ((len = br.read(bs)) > 0) {
|
out.write(bs, 0, len);
|
}
|
out.flush();
|
out.close();
|
br.close();
|
fileInputStream.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
//System.out.println("pdf处理文件异常" + e);
|
} finally {
|
if (out != null) {
|
try {
|
out.close();
|
br.close();
|
fileInputStream.close();
|
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|
|
|
@GetMapping("/revocationReport/{TjNumber}")
|
@ApiOperation(value = "撤销生成体检报告")
|
public AjaxResult revocationReport(@PathVariable("TjNumber") String tjNumber) {
|
//逻辑删除数据库里的报告
|
QueryWrapper<TjReport> wq1 = new QueryWrapper<>();
|
wq1.eq("tj_number", tjNumber);
|
wq1.eq("type", "体检报告");
|
if (null!=tjReportService.getOne(wq1)){
|
if (!tjReportService.remove(wq1)) {
|
return AjaxResult.error("撤回失败!");
|
}
|
}
|
QueryWrapper<TjOrder> wq2 = new QueryWrapper<>();
|
wq2.eq("tj_number", tjNumber);
|
TjOrder one = tjOrderService.getOne(wq2);
|
one.setCheckStatus(0);
|
one.setStatus(TjConstants.TJ_WAIT);
|
//将状态改为未审核
|
// UpdateWrapper updateWrapper=new UpdateWrapper();
|
// updateWrapper.eq("tj_number",tjNumber);
|
// updateWrapper.set("check_status",0);
|
boolean update = tjOrderService.updateById(one);
|
|
if (update) {
|
return AjaxResult.success("撤回成功!");
|
}
|
return AjaxResult.error("撤回失败!");
|
|
}
|
|
|
@GetMapping("/tuanDuiReport")
|
@ApiOperation(value = "生成团队体检报告——年龄统计")
|
public Map<String,List<Map<String, Object>>> tuanDuiReport(@ApiParam(value = "单位") @RequestParam String firmId,
|
@ApiParam(value = "部门") @RequestParam String firmDeptId){
|
Map<String,List<Map<String, Object>>> all=new HashMap<>();
|
List<Map<String, Object>> res1=new ArrayList<>();
|
|
int a=0;
|
Map<String, Object> resMap1=new HashMap<>();
|
resMap1.put("name","0-19岁");
|
resMap1.put("value",a);
|
res1.add(resMap1);
|
Map<String, Object> resMap2=new HashMap<>();
|
resMap2.put("name","20-29岁");
|
resMap2.put("value",a);
|
res1.add(resMap2);
|
Map<String, Object> resMap3=new HashMap<>();
|
resMap3.put("name","30-39岁");
|
resMap3.put("value",a);
|
res1.add(resMap3);
|
Map<String, Object> resMap4=new HashMap<>();
|
resMap4.put("name","40-49岁");
|
resMap4.put("value",a);
|
res1.add(resMap4);
|
Map<String, Object> resMap5=new HashMap<>();
|
resMap5.put("name","50-59岁");
|
resMap5.put("value",a);
|
res1.add(resMap5);
|
Map<String, Object> resMap6=new HashMap<>();
|
resMap6.put("name","60-69岁");
|
resMap6.put("value",a);
|
res1.add(resMap6);
|
Map<String, Object> resMap7=new HashMap<>();
|
resMap7.put("name","70-79岁");
|
resMap7.put("value",a);
|
res1.add(resMap7);
|
Map<String, Object> resMap8=new HashMap<>();
|
resMap8.put("name","80岁+");
|
resMap8.put("value",a);
|
res1.add(resMap8);
|
|
|
LambdaQueryWrapper<TjOrder> wq2=new LambdaQueryWrapper<>();
|
wq2.eq(TjOrder::getFirmId,firmId);
|
wq2.eq(TjOrder::getFirmDeptId,firmDeptId);
|
wq2.eq(TjOrder::getTjType,"1");
|
wq2.in(TjOrder::getStatus,401,402);
|
final List<TjOrder> list = tjOrderService.list(wq2);
|
|
for (TjOrder tjOrder : list) {
|
a=0;
|
final TjCustomer byId = tjCustomerService.getById(tjOrder.getUserId());
|
final int ageByIdCard = MatchUtils.getAgeByIdCard(byId.getCusIdcard());
|
|
|
if (0<=ageByIdCard && ageByIdCard<=19){
|
for (int i = 0; i < res1.size(); i++) {
|
if ("0-19岁".equals(res1.get(i).get("name"))){
|
a+=1;
|
res1.get(i).put("value",a);
|
}
|
}
|
}else if (20<=ageByIdCard && ageByIdCard<=29){
|
for (int i = 0; i < res1.size(); i++) {
|
if ("20-29岁".equals(res1.get(i).get("name"))){
|
a+=1;
|
res1.get(i).put("value",a);
|
}
|
}
|
}else if (30<=ageByIdCard && ageByIdCard<=39){
|
for (int i = 0; i < res1.size(); i++) {
|
if ("30-39岁".equals(res1.get(i).get("name"))){
|
a+=1;
|
res1.get(i).put("value",a);
|
}
|
}
|
}else if (40<=ageByIdCard && ageByIdCard<=49){
|
for (int i = 0; i < res1.size(); i++) {
|
if ("40-49岁".equals(res1.get(i).get("name"))){
|
a+=1;
|
res1.get(i).put("value",a);
|
}
|
}
|
}else if (50<=ageByIdCard && ageByIdCard<=59){
|
for (int i = 0; i < res1.size(); i++) {
|
if ("50-59岁".equals(res1.get(i).get("name"))){
|
a+=1;
|
res1.get(i).put("value",a);
|
}
|
}
|
}else if (60<=ageByIdCard && ageByIdCard<=69){
|
for (int i = 0; i < res1.size(); i++) {
|
if ("60-69岁".equals(res1.get(i).get("name"))){
|
a+=1;
|
res1.get(i).put("value",a);
|
}
|
}
|
}else if (70<=ageByIdCard && ageByIdCard<=79){
|
for (int i = 0; i < res1.size(); i++) {
|
if ("70-79岁".equals(res1.get(i).get("name"))){
|
a+=1;
|
res1.get(i).put("value",a);
|
}
|
}
|
}else {
|
for (int i = 0; i < res1.size(); i++) {
|
if ("80岁+".equals(res1.get(i).get("name"))){
|
a+=1;
|
res1.get(i).put("value",a);
|
}
|
}
|
}
|
}
|
all.put("data",res1);
|
return all;
|
|
}
|
|
@GetMapping("/tuanDuiReportBySex")
|
@ApiOperation(value = "生成团队体检报告——年龄性别统计")
|
public Map<String,List<Map<String, Object>>> tuanDuiReportBySex(@ApiParam(value = "单位") @RequestParam String firmIds,
|
@ApiParam(value = "部门") @RequestParam String firmDeptIds){
|
Map<String,List<Map<String, Object>>> all=new HashMap<>();
|
List<Map<String, Object>> res1=new ArrayList<>();
|
|
int a=0;
|
int b=0;
|
int c=0;
|
Map<String, Object> resMap1=new HashMap<>();
|
resMap1.put("name","0-19岁");
|
resMap1.put("value",a);
|
resMap1.put("boy",b);
|
resMap1.put("girl",c);
|
resMap1.put("value1",0);
|
resMap1.put("boy1",0);
|
resMap1.put("girl1",0);
|
res1.add(resMap1);
|
Map<String, Object> resMap2=new HashMap<>();
|
resMap2.put("name","20-29岁");
|
resMap2.put("value",a);
|
resMap2.put("boy",b);
|
resMap2.put("girl",c);
|
resMap2.put("value1",0);
|
resMap2.put("boy1",0);
|
resMap2.put("girl1",0);
|
res1.add(resMap2);
|
Map<String, Object> resMap3=new HashMap<>();
|
resMap3.put("name","30-39岁");
|
resMap3.put("value",a);
|
resMap3.put("boy",b);
|
resMap3.put("girl",c);
|
resMap3.put("value1",0);
|
resMap3.put("boy1",0);
|
resMap3.put("girl1",0);
|
res1.add(resMap3);
|
Map<String, Object> resMap4=new HashMap<>();
|
resMap4.put("name","40-49岁");
|
resMap4.put("value",a);
|
resMap4.put("boy",b);
|
resMap4.put("girl",c);
|
resMap4.put("value1",0);
|
resMap4.put("boy1",0);
|
resMap4.put("girl1",0);
|
res1.add(resMap4);
|
Map<String, Object> resMap5=new HashMap<>();
|
resMap5.put("name","50-59岁");
|
resMap5.put("value",a);
|
resMap5.put("boy",b);
|
resMap5.put("girl",c);
|
resMap5.put("value1",0);
|
resMap5.put("boy1",0);
|
resMap5.put("girl1",0);
|
res1.add(resMap5);
|
Map<String, Object> resMap6=new HashMap<>();
|
resMap6.put("name","60-69岁");
|
resMap6.put("value",a);
|
resMap6.put("boy",b);
|
resMap6.put("girl",c);
|
resMap6.put("value1",0);
|
resMap6.put("boy1",0);
|
resMap6.put("girl1",0);
|
res1.add(resMap6);
|
Map<String, Object> resMap7=new HashMap<>();
|
resMap7.put("name","70-79岁");
|
resMap7.put("value",a);
|
resMap7.put("boy",b);
|
resMap7.put("girl",c);
|
resMap7.put("value1",0);
|
resMap7.put("boy1",0);
|
resMap7.put("girl1",0);
|
res1.add(resMap7);
|
Map<String, Object> resMap8=new HashMap<>();
|
resMap8.put("name","80岁+");
|
resMap8.put("value",a);
|
resMap8.put("boy",b);
|
resMap8.put("girl",c);
|
resMap8.put("value1",0);
|
resMap8.put("boy1",0);
|
resMap8.put("girl1",0);
|
res1.add(resMap8);
|
|
|
LambdaQueryWrapper<TjOrder> wq2=new LambdaQueryWrapper<>();
|
wq2.eq(TjOrder::getFirmId,firmIds);
|
wq2.eq(TjOrder::getFirmDeptId,firmDeptIds);
|
wq2.eq(TjOrder::getTjType,"1");
|
wq2.in(TjOrder::getStatus,401,402);
|
final List<TjOrder> list = tjOrderService.list(wq2);
|
|
for (TjOrder tjOrder : list) {
|
a=0;
|
b=0;
|
c=0;
|
final TjCustomer byId = tjCustomerService.getById(tjOrder.getUserId());
|
final int ageByIdCard = MatchUtils.getAgeByIdCard(byId.getCusIdcard());
|
|
if (0<=ageByIdCard && ageByIdCard<=19){
|
for (int i = 0; i < res1.size(); i++) {
|
if ("0-19岁".equals(res1.get(i).get("name"))){
|
a+=1;
|
res1.get(i).put("value",a);
|
if (byId.getCusSex()==0){
|
b+=1;
|
}else if (byId.getCusSex()==1){
|
c+=1;
|
}
|
res1.get(i).put("boy",b);
|
res1.get(i).put("girl",c);
|
}
|
}
|
}else if (20<=ageByIdCard && ageByIdCard<=29){
|
for (int i = 0; i < res1.size(); i++) {
|
if ("20-29岁".equals(res1.get(i).get("name"))){
|
a+=1;
|
res1.get(i).put("value",a);
|
if (byId.getCusSex()==0){
|
b+=1;
|
}else if (byId.getCusSex()==1){
|
c+=1;
|
}
|
res1.get(i).put("boy",b);
|
res1.get(i).put("girl",c);
|
}
|
}
|
}else if (30<=ageByIdCard && ageByIdCard<=39){
|
for (int i = 0; i < res1.size(); i++) {
|
if ("30-39岁".equals(res1.get(i).get("name"))){
|
a+=1;
|
res1.get(i).put("value",a);
|
if (byId.getCusSex()==0){
|
b+=1;
|
}else if (byId.getCusSex()==1){
|
c+=1;
|
}
|
res1.get(i).put("boy",b);
|
res1.get(i).put("girl",c);
|
}
|
}
|
}else if (40<=ageByIdCard && ageByIdCard<=49){
|
for (int i = 0; i < res1.size(); i++) {
|
if ("40-49岁".equals(res1.get(i).get("name"))){
|
a+=1;
|
res1.get(i).put("value",a);
|
if (byId.getCusSex()==0){
|
b+=1;
|
}else if (byId.getCusSex()==1){
|
c+=1;
|
}
|
res1.get(i).put("boy",b);
|
res1.get(i).put("girl",c);
|
}
|
}
|
}else if (50<=ageByIdCard && ageByIdCard<=59){
|
for (int i = 0; i < res1.size(); i++) {
|
if ("50-59岁".equals(res1.get(i).get("name"))){
|
a+=1;
|
res1.get(i).put("value",a);
|
if (byId.getCusSex()==0){
|
b+=1;
|
}else if (byId.getCusSex()==1){
|
c+=1;
|
}
|
res1.get(i).put("boy",b);
|
res1.get(i).put("girl",c);
|
}
|
}
|
}else if (60<=ageByIdCard && ageByIdCard<=69){
|
for (int i = 0; i < res1.size(); i++) {
|
if ("60-69岁".equals(res1.get(i).get("name"))){
|
a+=1;
|
res1.get(i).put("value",a);
|
if (byId.getCusSex()==0){
|
b+=1;
|
}else if (byId.getCusSex()==1){
|
c+=1;
|
}
|
res1.get(i).put("boy",b);
|
res1.get(i).put("girl",c);
|
}
|
}
|
}else if (70<=ageByIdCard && ageByIdCard<=79){
|
for (int i = 0; i < res1.size(); i++) {
|
if ("70-79岁".equals(res1.get(i).get("name"))){
|
a+=1;
|
res1.get(i).put("value",a);
|
if (byId.getCusSex()==0){
|
b+=1;
|
}else if (byId.getCusSex()==1){
|
c+=1;
|
}
|
res1.get(i).put("boy",b);
|
res1.get(i).put("girl",c);
|
}
|
}
|
}else {
|
for (int i = 0; i < res1.size(); i++) {
|
if ("80岁+".equals(res1.get(i).get("name"))){
|
a+=1;
|
res1.get(i).put("value",a);
|
if (byId.getCusSex()==0){
|
b+=1;
|
}else if (byId.getCusSex()==1){
|
c+=1;
|
}
|
res1.get(i).put("boy",b);
|
res1.get(i).put("girl",c);
|
}
|
}
|
}
|
}
|
//计算百分数
|
for (int i = 0; i < res1.size(); i++) {
|
final int value1 = (int) res1.get(i).get("boy");
|
final int value2 = (int) res1.get(i).get("girl");
|
final int value = (int) res1.get(i).get("value");
|
if (value!=0){
|
double percentage = (value1 * 1.0 / value) * 100;
|
NumberFormat nf = NumberFormat.getPercentInstance();
|
nf.setMinimumFractionDigits(2);
|
String percent1 = nf.format(percentage / 100);
|
|
double percentage1 = (value2 * 1.0 / value) * 100;
|
NumberFormat nf1 = NumberFormat.getPercentInstance();
|
nf1.setMinimumFractionDigits(2);
|
String percent2 = nf1.format(percentage1 / 100);
|
|
NumberFormat numberFormat = NumberFormat.getInstance();
|
numberFormat.setMaximumFractionDigits(2);
|
String result = numberFormat.format((float) value1 / (float) value2 * 100);
|
res1.get(i).put("boy1",percent1);
|
res1.get(i).put("girl1",percent2);
|
res1.get(i).put("value1",result);
|
|
}
|
|
}
|
all.put("data",res1);
|
return all;
|
|
}
|
|
|
@GetMapping("/tuanDuiYiChang")
|
@ApiOperation(value = "生成团队体检报告——异常结果统计")
|
public Map<String,List<Map<String, Object>>> tuanDuiYiChang(@ApiParam(value = "单位") @RequestParam String firmId,
|
@ApiParam(value = "部门") @RequestParam String firmDeptId){
|
|
Map<String,List<Map<String, Object>>> all=new HashMap<>();
|
|
LambdaQueryWrapper<TjOrder> wq2=new LambdaQueryWrapper<>();
|
wq2.eq(TjOrder::getFirmId,firmId);
|
wq2.eq(TjOrder::getFirmDeptId,firmDeptId);
|
wq2.eq(TjOrder::getTjType,"1");
|
wq2.in(TjOrder::getStatus,401,402);
|
final List<TjOrder> list = tjOrderService.list(wq2);
|
|
List<TjOrderDetailRules> res11=new ArrayList<>();
|
for (TjOrder tjOrder : list) {
|
LambdaQueryWrapper<TjOrderDetailRules> wq1=new LambdaQueryWrapper<>();
|
wq1.eq(TjOrderDetailRules::getTjNumber,tjOrder.getTjNumber());
|
final List<TjOrderDetailRules> list1 = detailRulesService.list(wq1);
|
//放进集合
|
res11.addAll(list1);
|
}
|
//去重收集
|
Map<String, Long> columnCountMap = res11.stream().collect(Collectors.groupingBy(TjOrderDetailRules::getAid, Collectors.counting()));
|
List<Map<String, Object>> aaa=new ArrayList<>();
|
if (columnCountMap!=null){
|
for(Map.Entry<String, Long> entry:columnCountMap.entrySet()){
|
Map<String, Object> resMap=new HashMap<>();
|
final TjRules byId = rulesService.getById(entry.getKey());
|
if (byId!=null){
|
resMap.put("name", byId.getBingzhong());
|
resMap.put("value", String.valueOf(entry.getValue()));
|
aaa.add(resMap);
|
}
|
}
|
}
|
all.put("data",aaa);
|
return all;
|
|
}
|
|
@GetMapping("/tuanDuiYiChangBySex")
|
@ApiOperation(value = "生成团队体检报告——男女异常结果统计")
|
public Map<String,List<Map<String, Object>>> tuanDuiYiChangBySex(@ApiParam(value = "单位") @RequestParam String firmId,
|
@ApiParam(value = "部门") @RequestParam String firmDeptId){
|
|
Map<String,List<Map<String, Object>>> all=new HashMap<>();
|
|
LambdaQueryWrapper<TjOrder> wq2=new LambdaQueryWrapper<>();
|
wq2.eq(TjOrder::getFirmId,firmId);
|
wq2.eq(TjOrder::getFirmDeptId,firmDeptId);
|
wq2.eq(TjOrder::getTjType,"1");
|
wq2.in(TjOrder::getStatus,401,402);
|
final List<TjOrder> list = tjOrderService.list(wq2);
|
|
List<String> tjNumberList=list.stream().map(TjOrder::getTjNumber).collect(Collectors.toList());
|
|
List<TjOrderDetailRules> res11=new ArrayList<>();
|
for (TjOrder tjOrder : list) {
|
LambdaQueryWrapper<TjOrderDetailRules> wq1=new LambdaQueryWrapper<>();
|
wq1.eq(TjOrderDetailRules::getTjNumber,tjOrder.getTjNumber());
|
final List<TjOrderDetailRules> list1 = detailRulesService.list(wq1);
|
//放进集合
|
res11.addAll(list1);
|
}
|
//去重收集
|
Map<String, Long> columnCountMap = res11.stream().collect(Collectors.groupingBy(TjOrderDetailRules::getAid, Collectors.counting()));
|
|
List<Map<String, Object>> aaa=new ArrayList<>();
|
if (columnCountMap!=null){
|
|
for(Map.Entry<String, Long> entry:columnCountMap.entrySet()){
|
int a=0;
|
int b=0;
|
Map<String, Object> resMap=new HashMap<>();
|
final TjRules byId = rulesService.getById(entry.getKey());
|
if (byId!=null){
|
resMap.put("name", byId.getBingzhong());
|
resMap.put("value", entry.getValue().intValue());
|
resMap.put("boy",a);
|
resMap.put("girl",b);
|
resMap.put("value1",0);
|
resMap.put("boy1",0);
|
resMap.put("girl1",0);
|
|
//
|
LambdaQueryWrapper<TjOrderDetailRules> wq11=new LambdaQueryWrapper<>();
|
wq11.eq(TjOrderDetailRules::getAid,entry.getKey());
|
wq11.in(TjOrderDetailRules::getTjNumber,tjNumberList);
|
final List<TjOrderDetailRules> list1 = detailRulesService.list(wq11);
|
for (TjOrderDetailRules orderDetailRules : list1) {
|
resMap.put("name", orderDetailRules.getBingzhong());
|
if ("0".equals(orderDetailRules.getCusSex())){
|
a+=1;
|
resMap.put("boy",a);
|
}else if ("1".equals(orderDetailRules.getCusSex())){
|
b+=1;
|
resMap.put("girl",b);
|
}
|
}
|
aaa.add(resMap);
|
}
|
}
|
}
|
|
//计算百分数
|
for (int i = 0; i < aaa.size(); i++) {
|
final Integer value1 = (Integer) aaa.get(i).get("boy");
|
final Integer value2 = (Integer) aaa.get(i).get("girl");
|
final Integer value = (Integer) aaa.get(i).get("value");
|
if (value!=0){
|
double percentage = (value1 * 1.0 / value) * 100;
|
NumberFormat nf = NumberFormat.getPercentInstance();
|
nf.setMinimumFractionDigits(2);
|
String percent1 = nf.format(percentage / 100);
|
|
double percentage1 = (value2 * 1.0 / value) * 100;
|
NumberFormat nf1 = NumberFormat.getPercentInstance();
|
nf1.setMinimumFractionDigits(2);
|
String percent2 = nf1.format(percentage1 / 100);
|
|
NumberFormat numberFormat = NumberFormat.getInstance();
|
numberFormat.setMaximumFractionDigits(2);
|
String result = numberFormat.format((float) value1 / (float) value2 * 100);
|
aaa.get(i).put("boy1",percent1);
|
aaa.get(i).put("girl1",percent2);
|
aaa.get(i).put("value1",result);
|
|
}
|
}
|
all.put("data",aaa);
|
return all;
|
|
}
|
}
|