zjh
2024-04-25 a74b5ffd9c25edd8096220920934e3e42f62cc23
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReportController.java
@@ -10,6 +10,7 @@
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;
@@ -18,6 +19,7 @@
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;
import com.itextpdf.text.pdf.draw.LineSeparator;
import com.ltkj.common.core.domain.entity.SysDictData;
import com.ltkj.common.utils.DateUtils;
import com.ltkj.common.utils.SecurityUtils;
import com.ltkj.common.utils.StringUtils;
@@ -25,6 +27,8 @@
import com.ltkj.hosp.domain.*;
import com.ltkj.hosp.service.*;
import com.ltkj.mall.mallOrderUtils.TjConstants;
import com.ltkj.system.service.ISysConfigService;
import com.ltkj.system.service.ISysDictDataService;
import com.ltkj.system.service.ISysUserService;
import com.ltkj.web.config.pdfutils.MergePdf;
import com.ltkj.web.config.pdfutils.MyHeaderFooter;
@@ -68,23 +72,64 @@
    @Resource
    private ITjStandardService tjStandardService;
    @Resource
    private ITjAdviceService tjAdviceService;
    @Resource
    private IDictCompService dictCompService;
    @Resource
    private ITjReportTemplateService reportTemplateService;
    @Value("${path.filePath}")
    private String value;
    @Value("${path.reportServer}")
    private String urlValue;
    @Resource
    private ISysUserService userService;
    @Resource
    private ITjOrderDetailRulesService detailRulesService;
    @Resource
    private ITjRulesService rulesService;
    @Autowired
    private ISysConfigService configService;
    @Autowired
    private ISysDictDataService dictDataService;
    @Resource
    private ITbTransitionService transitionService;
    @Autowired
    private ITjBigPositiveService tjBigPositiveService;
    @GetMapping("/savePdf")
    @ApiOperation(value = "从本地存储模板到数据库")
    public AjaxResult savePdf() {
        //从文件地址读入PDF文件  仅存储一次
        String base64String = PDFBinaryUtil.getPDFBinary("D:\\Tjreport\\体检模板5.pdf");
        TjReportTemplate tem = new TjReportTemplate();
        tem.setName("体检报告模板5");
        tem.setRemark("体检报告模板5");
        tem.setTemplate(base64String);
        tem.setFlag("1");
        tem.setOpen("0");
        final boolean save = reportTemplateService.save(tem);
        if(save){
            return AjaxResult.success("保存成功");
        }
        return AjaxResult.success("保存失败");
//        String base64String2 = PDFBinaryUtil.getPDFBinary("D:\\Tjreport\\心电图1.pdf");
//        TjReport tem2 = new TjReport();
//        tem2.setTjNumber(tjNumber);
//        tem2.setReport(base64String2);
//        tem2.setType("心电图");
//        tjReportService.save(tem2);
//
//        String base64String1 = PDFBinaryUtil.getPDFBinary("D:\\Tjreport\\附件2.pdf");
//        TjReport tem1 = new TjReport();
//        tem1.setTjNumber(tjNumber);
//        tem1.setReport(base64String1);
//        tem1.setType("附件");
//        tjReportService.save(tem1);
    }
     //    /* *//**
    //    /* *//**
//     * 查询体检报告存储列表
//     *//*
//    @PreAuthorize("@ss.hasPermi('system:report:list')")
@@ -219,68 +264,87 @@
    @Transactional
    public AjaxResult toPdf(@PathVariable("TjNumber") @ApiParam(value = "体检号") String tjNumber) {
        //从文件地址读入PDF文件  仅存储一次
        // TODO: 2023/3/21 将模板保存到数据库 一次使用后注释
//        String base64String = PDFBinaryUtil.getPDFBinary("D:\\Tjreport\\体检模板4.pdf");
//        TjReportTemplate tem = new TjReportTemplate();
//        tem.setName("体检报告模板4");
//        tem.setRemark("体检报告模板4");
//        tem.setTemplate(base64String);
//        tem.setFlag("1");
//        tem.setOpen("0");
//        reportTemplateService.save(tem);
//        // TODO: 2023/3/21 将心电图保存到数据库 一次使用后注释  暂时用于测试
//        String base64String2 = PDFBinaryUtil.getPDFBinary("D:\\Tjreport\\心电图1.pdf");
//        TjReport tem2 = new TjReport();
//        tem2.setTjNumber(tjNumber);
//        tem2.setReport(base64String2);
//        tem2.setType("心电图");
//        tjReportService.save(tem2);
//
//        String base64String1 = PDFBinaryUtil.getPDFBinary("D:\\Tjreport\\附件2.pdf");
//        TjReport tem1 = new TjReport();
//        tem1.setTjNumber(tjNumber);
//        tem1.setReport(base64String1);
//        tem1.setType("附件");
//        tjReportService.save(tem1);
//
//        String base64String3 = PDFBinaryUtil.getPDFBinary("D:\\Tjreport\\医学名词.pdf");
//        TjReport tem3 = new TjReport();
//        tem3.setTjNumber(tjNumber);
//        tem3.setReport(base64String3);
//        tem3.setType("医学名词");
//        tjReportService.save(tem3);
        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("该客户报告已生成!不能重复生成!可直接预览或打印!");
        }
        if (num > 0) return AjaxResult.error("有延期项目暂不能生成报告!!!");
        LambdaQueryWrapper<TjOrder> wq = new LambdaQueryWrapper<>();
        wq.eq(TjOrder::getTjNumber, tjNumber);
        TjOrder tjOrder = tjOrderService.getOne(wq);
        if (null != tjOrder) {
            LambdaQueryWrapper<TjReportTemplate> tjReportTemplateLambdaQueryWrapper = new LambdaQueryWrapper<>();
            TjReportTemplate reportTemplate =null;
            if (tjOrder.getTjCategory()!=null){
                //查询字典
                LambdaQueryWrapper<SysDictData> wqq = new LambdaQueryWrapper<>();
                wqq.eq(SysDictData::getDictType, "dict_tjtype");
                wqq.eq(SysDictData::getDictValue, tjOrder.getTjCategory());
                SysDictData one = dictDataService.getOne(wqq);
                if (one!=null){
                    //查询字典
                    LambdaQueryWrapper<SysDictData> wqq1 = new LambdaQueryWrapper<>();
                    wqq1.eq(SysDictData::getDictType, "report_template_type");
                    wqq1.eq(SysDictData::getDictLabel, one.getDictLabel());
                    SysDictData one1 = dictDataService.getOne(wqq1);
                    if (one1!=null){
                        tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, one1.getDictValue());
                    }else {
                        tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, 1);
                    }
                }else {
                    tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, 1);
                }
                tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getOpen, 0);
                reportTemplate = reportTemplateService.getOne(tjReportTemplateLambdaQueryWrapper);
            }else {
                tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getOpen, 0);
                reportTemplate = reportTemplateService.list(tjReportTemplateLambdaQueryWrapper).get(2);
            }
            //判断表中有没有该体检报告  不能重复生成
            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("该客户报告已生成!不能重复生成!可直接预览或打印!");
            }
            Integer checkStatus = tjOrder.getCheckStatus();
            if (checkStatus == 1) {
                //判断报告生成 保存类型 2024/2/29
                if ("报表".equals(reportTemplate.getPrint())){
                    TjReport tjReport = new TjReport();
                    tjReport.setTjNumber(String.valueOf(tjNumber));
                    tjReport.setPath(reportTemplate.getUrl()+"?tjNum="+tjNumber);
                    tjReport.setType("体检报告");
                    tjReport.setPrint("报表");
                    tjReportService.save(tjReport);
                    //修改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("已生成报告!可直接点击预览!");
                }
                String template = reportTemplate.getTemplate();
                String userId = SecurityUtils.getLoginUser().getUsername();
                if (template!=null){
                    PDFBinaryUtil.base64StringToPDF(template, FileUtil.mkdir(value).getPath() + "\\" + userId + "体检报告封面模板.pdf");
                }
                // --------以上-------  根据数据库中的模板二进制文件  转pdf  创建文件夹  将pdf放进本地文件夹
                LambdaQueryWrapper<TjCustomer> wq1 = new LambdaQueryWrapper<>();
                wq1.eq(TjCustomer::getCusId, tjOrder.getUserId());
                TjCustomer tjCustomer = tjCustomerService.getOne(wq1);
@@ -328,31 +392,31 @@
                    String tjtype;
                    if (cusSex == 0) {
                        sex = "男";
                        name1=tjCustomer.getCusName()+"先生";
                        name1 = tjCustomer.getCusName() + "先生";
                    } else {
                        sex = "女";
                        name1=tjCustomer.getCusName()+"女士";
                        name1 = tjCustomer.getCusName() + "女士";
                    }
                    data.put("name",tjCustomer.getCusName());
                    data.put("cusId",tjCustomer.getCusId());
                    data.put("name1",name1);
                    data.put("name", tjCustomer.getCusName());
                    data.put("cusId", tjCustomer.getCusId());
                    data.put("name1", name1);
                    if ("1".equals(tjOrder.getTjType())) {
                        tjtype = "团队";
                        data.put("tjtype",tjtype);
                        data.put("tjtype", tjtype);
                    } else {
                        tjtype = "个人";
                        data.put("tjtype",tjtype);
                        data.put("tjtype", tjtype);
                    }
                    data.put("dstype","统一");
                    data.put("dstype", "统一");
                    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()));
                    data.put("num1",list.size());
                    data.put("num2",0);
                    data.put("num3",4);
                    data.put("num1", list.size());
                    data.put("num2", 0);
                    data.put("num3", 4);
                    if (dictComp == null) {
                        data.put("work", "无");
                    } else {
@@ -371,12 +435,40 @@
                        data.put("docname", tjOrder.getCheckDoctor());
                    }
                    //异常项目
                    data.put("yichang", "【1】屈光不正\n" +
                            "【2】扁桃体肥⼤\n" +
                            "【3】体重指数增⾼\n" +
                            "【4】⾎脂异常(总胆固醇增⾼;⽢油三酯增⾼)\n" +
                            "【5】γ-⾕氨酰转移酶增⾼;天⻔冬氨酸氨基转移酶增⾼;丙氨酸氨基转移酶增⾼\n" +
                            "【6】轻⾄中度脂肪肝");
//                    data.put("yichang", "【1】屈光不正\n" +
//                            "【2】扁桃体肥⼤\n" +
//                            "【3】体重指数增⾼\n" +
//                            "【4】⾎脂异常(总胆固醇增⾼;⽢油三酯增⾼)\n" +
//                            "【5】γ-⾕氨酰转移酶增⾼;天⻔冬氨酸氨基转移酶增⾼;丙氨酸氨基转移酶增⾼\n" +
//                            "【6】轻⾄中度脂肪肝");
                    //拼接重大阳性结果
                    StringBuffer str=new StringBuffer();
                    str.append("【重大阳性项目】\n");
                    LambdaQueryWrapper<TjBigPositive> bigPositiveLambdaQueryWrapper=new LambdaQueryWrapper<>();
                    bigPositiveLambdaQueryWrapper.eq(TjBigPositive::getTjNumber,tjNumber);
                    final List<TjBigPositive> list1 = tjBigPositiveService.list(bigPositiveLambdaQueryWrapper);
                    if(list1!=null&&list1.size()>0){
                        for (int i = 0; i < list1.size(); i++) {
                            str.append((i+1)+"、"+list1.get(i).getProName()+";\n");
                        }
                    }else {
                        str.append("    无;\n");
                    }
                    //拼接异常项目
                    str.append("【异常情况项目】\n");
                    if(list.size()>0){
                        for (int i = 0; i < list.size(); i++) {
                            if (list.get(i).getExceptionDesc()==1){
                                str.append((i+1)+"、"+projectService.getById(list.get(i).getProId()).getProName()+";\n");
                            }
                        }
                    }else {
                        str.append("    无;\n");
                    }
                    //异常项目
                    data.put("yichang", str.toString());
                    // 遍历data 给pdf表单表格赋值
                    for (String key : data.keySet()) {
@@ -395,25 +487,32 @@
                    //设置文档的页边距就是距离页面边上的距离,分别为:左边距,右边距,上边距,下边距
                    document.setMargins(70, 70, 40, 40);
                    //生成pdf的位置以及名称
                    String fileName = value + "\\" + userId + "体检报告项目详情页.pdf";
                    String fileName = value + "\\" + userId +tjNumber+ "体检报告项目详情页.pdf";
                    OutputStream outputStream = Files.newOutputStream(Paths.get(fileName));
                    PdfWriter pdfWriter = PdfWriter.getInstance(document, outputStream);
                    pdfWriter.setPageEvent(new MyHeaderFooter());// 页眉页脚
                    //pdfWriter.setPageEvent(new MyHeaderFooter());// 页眉页脚
                    document.open();
                    document.add(new Header("健康体检结果","健康体检结果"));
                    document.add(new Header("健康体检结果", "健康体检结果"));
                    Map<TjOrderRemark, List<TjPdfVO>> tjOrderRemarkObjectMap = addTable(tjNumber);
                    Map<TjOrderRemark, List<TjPdfVO>> tjOrderRemarkListMap = addHuaYanTable(tjNumber);
                    tjOrderRemarkObjectMap.putAll(tjOrderRemarkListMap);
                    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();
                        //判断该项目是否需要打印报告
                        if (null !=one11 && "N".equals(one11.getNeedReport())){
                            continue;
                        }
                        String titleName =null;
                        if (null !=one11 && "1".equals(one11.getResultType())) {
                             titleName =one11.getProName();
                            // 设置标题字体样式
                            Font titleFonts = PdfUtils.setFont(9);
                            Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
@@ -435,36 +534,36 @@
                            }
                            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);
                            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;
                                    j = j + 50;
                                }
                                if (remark.length()%50!=0){
                                    String substring = remark.substring((remark.length()/50)*50, remark.length()-1);
                                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 {
                            } 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())) {
                            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 {
                            } else {
                                String doctorName = "主检医师:" + "无";
                                Font doctorFonts = PdfUtils.setFont(9);
                                Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
@@ -476,8 +575,13 @@
                            //分割线
                            LineSeparator objectName = new LineSeparator();
                            document.add(objectName);
                        }else {
                            String titleName = one11.getProName();
                        } else {
                            if(null !=one11){
                                titleName = one11.getProName();
                            }else {
                                titleName = entry.getKey().getProName();
                            }
                            // 设置标题字体样式
                            Font titleFonts = PdfUtils.setFont(9);
                            Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
@@ -499,36 +603,36 @@
                            }
                            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);
                            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;
                                    j = j + 50;
                                }
                                if (remark.length()%50!=0){
                                    String substring = remark.substring((remark.length()/50)*50, remark.length()-1);
                                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 {
                            } 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())) {
                            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 {
                            } else {
                                String doctorName = "主检医师:" + "无";
                                Font doctorFonts = PdfUtils.setFont(9);
                                Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
@@ -544,33 +648,52 @@
                    pdfWriter.close();
                    outputStream.close();
                    // TODO: 2023/3/29  查询附件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");
//                    LambdaQueryWrapper<TjReport> rtwq1 = new LambdaQueryWrapper<>();
//                    rtwq1.eq(TjReport::getType, "医学名词");
////                    rtwq1.eq(TjReport::getTjNumber, tjNumber);
//                    TjReport one11111 = tjReportService.getOne(rtwq1);
//                    if(null !=one11111){
//                        String report1 = one11111.getReport();
//                        PDFBinaryUtil.base64StringToPDF(report1, FileUtil.mkdir(value).getPath() + "\\" + userId + "医学名词.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");
                    if(null !=one1111){
                        String report = one1111.getReport();
                        PDFBinaryUtil.base64StringToPDF(report, FileUtil.mkdir(value).getPath() + "\\" +tjNumber+ userId + "心电图.pdf");
                    }
                    LambdaQueryWrapper<TjReport> rtwq12 = new LambdaQueryWrapper<>();
                    rtwq12.eq(TjReport::getType, "附件");
                    rtwq12.eq(TjReport::getTjNumber, tjNumber);
                    TjReport one111112 = tjReportService.getOne(rtwq12);
                    String report12 = one111112.getReport();
                    PDFBinaryUtil.base64StringToPDF(report12, FileUtil.mkdir(value).getPath() + "\\" + userId + "附件.pdf");
                    if(null !=one111112){
                        String report12 = one111112.getReport();
                        PDFBinaryUtil.base64StringToPDF(report12, FileUtil.mkdir(value).getPath() + "\\" +tjNumber+ userId + "附件.pdf");
                    }
                    //合并
                    String[] files1 = {value + "\\" + userId + "体检报告封面页.pdf", value + "\\" + userId + "体检报告项目详情页.pdf",value + "\\" + userId + "医学名词.pdf",value + "\\" + userId + "附件.pdf",value + "\\" + userId + "心电图.pdf"};
                    String[] files1=null;
                    if (one1111!=null ){
                        if (one111112!=null){
                            files1 = new String[ ]{value + "\\" + userId + "体检报告封面页.pdf", value + "\\" + userId + tjNumber + "体检报告项目详情页.pdf", value + "\\" + tjNumber + userId + "附件.pdf", value + "\\" + tjNumber + userId + "心电图.pdf"};
                        }else {
                            files1 = new String[]{value + "\\" + userId + "体检报告封面页.pdf", value + "\\" + userId + tjNumber + "体检报告项目详情页.pdf",value + "\\" + tjNumber + userId + "心电图.pdf"};
                        }
                    }else {
                        if (one111112!=null){
                            files1 = new String[]{value + "\\" + userId + "体检报告封面页.pdf", value + "\\" + userId + tjNumber + "体检报告项目详情页.pdf", value + "\\" + tjNumber + userId + "附件.pdf"};
                        }else {
                            files1 = new String[]{value + "\\" + userId + "体检报告封面页.pdf", value + "\\" + userId + tjNumber + "体检报告项目详情页.pdf"};
                        }
                    }
                    //合并
//                    String[] files1 = {value + "\\" + userId + "体检报告封面页.pdf", value + "\\" + userId + tjNumber+"体检报告项目详情页.pdf", value + "\\" +tjNumber+ userId + "附件.pdf", value + "\\" + tjNumber + userId + "心电图.pdf"};
                    String outputPath1 = value + "\\";
                    String outputFileName1 = userId+tjNumber +tjCustomer.getCusName()+ "_体检报告.pdf";
                    String outputFileName1 = userId + tjNumber + tjCustomer.getCusName() + "_体检报告.pdf";
                    File file1 = new File(outputPath1 + outputFileName1);
                    List<File> f = new ArrayList<>();
@@ -581,16 +704,16 @@
                    TjReport tjReport = new TjReport();
                    tjReport.setTjNumber(String.valueOf(tjNumber));
                    tjReport.setPath(outputPath1 + outputFileName1);
                    tjReport.setPath(urlValue + outputFileName1);
                    String pdfBinary = getPDFBinary(outputPath1 + outputFileName1);
                    tjReport.setReport(pdfBinary);
                    tjReport.setType("体检报告");
                    tjReport.setPrint("pdf");
                    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 +tjNumber+ "体检报告项目详情页.pdf");
                    //FileUtil.del(value + "\\" + userId + "体检报告封面页.pdf");
                    //FileUtil.del(value + "\\" + userId + "心电图.pdf");
@@ -609,62 +732,147 @@
                } catch (Exception e) {
                    e.printStackTrace();
                    return AjaxResult.success("PDF导出失败");
                }finally {
                    transitionService.deletedTbTransitionListByCusIdAndTjNum(tjCustomer.getCusIdcard(),tjOrder.getCardId());
                }
            }
        }
        return AjaxResult.success("该用户体检未完成,不能打印报告!!!");
    }
    //非化验项目报告
    public Map<TjOrderRemark, List<TjPdfVO>> addTable(String tjNumber) {
        //创建map 键为父项目  值为子项目集合
        Map<TjOrderRemark, List<TjPdfVO>> printReport = new HashMap<>();
        Map<TjOrderRemark, List<TjPdfVO>> printReport = new LinkedHashMap<>();
        //查到该客户的体检记录
        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);
        wq.ne(TjOrderDetail::getTjStatus, 0);
        wq.ne(TjOrderDetail::getProId,projectService.getHuaYanProId());
        wq.eq(TjOrderDetail::getProId,projectService.getNotCcCtXdtProId());
//        wq.notIn(TjOrderDetail::getProId,projectService.getNneedReprotProId());
        List<TjOrderDetail> tjOrderDetails = tjOrderDetailService.list(wq);
        //遍历体检记录 将项目的具体信息
        //遍历客户所选的项目(包含子项父项)
        for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
            TjProject tjProject = projectService.getById(tjOrderDetail.getProId());
            if(null !=tjProject){
            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);
        wqq.ne(TjOrderRemark::getDeptId,"241");
        wqq.in(TjOrderRemark::getDeptId,"269","270","253","254","255","257","251","271");
        wqq.notIn(TjOrderRemark::getProId,projectService.getNneedReprotProId());
        List<TjOrderRemark> tjOrderRemarks = tjOrderRemarkService.list(wqq);
        for (TjOrderRemark tjOrderRemark : tjOrderRemarks) {
            printReport.put(tjOrderRemark, null);
            printReport.put(tjOrderRemark,null);
        }
        extracted(printReport,one, customer);
        return printReport;
    }
    //化验项目报告
    public Map<TjOrderRemark, List<TjPdfVO>> addHuaYanTable(String tjNumber) {
        //创建map 键为父项目  值为子项目集合
        Map<TjOrderRemark, List<TjPdfVO>> printReport = new LinkedHashMap<>();
        //查到该客户的体检记录
//        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);
//        wq.eq(TjOrderDetail::getProId,projectService.getHuaYanProId());
//        List<TjOrderDetail> tjOrderDetails = tjOrderDetailService.list(wq);
        List<TjOrderDetail> tjOrderDetails = tjOrderDetailService.addHuaYanTable(tjNumber);
        //遍历体检记录 将项目的具体信息
        //遍历客户所选的项目(包含子项父项)
//        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);
//        wqq.eq(TjOrderRemark::getDeptId,"241");
//        List<TjOrderRemark> tjOrderRemarks = tjOrderRemarkService.list(wqq);
        List<TjOrderRemark> tjOrderRemarks = tjOrderRemarkService.addHuaYanTable(tjNumber);
        for (TjOrderRemark tjOrderRemark : tjOrderRemarks) {
            printReport.put(tjOrderRemark,null);
        }
        List<Object> toRemoveKeys = new ArrayList<>();
        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(entry.getKey().getProId().equals(tjOrderDetail.getProId())){
                        TjPdfVO tjPdfVO = new TjPdfVO();
                        tjPdfVO.setProName(tjOrderDetail.getProName());
                        if(null !=tjOrderDetail.getYcbz() && !tjOrderDetail.getYcbz().equals("")){
                            tjPdfVO.setProResult(tjOrderDetail.getProResult()+" ["+tjOrderDetail.getYcbz()+"]");
                        }else {
                            tjPdfVO.setProResult(tjOrderDetail.getProResult());
                        }
                        tjPdfVO.setExc(tjOrderDetail.getExceptionDesc());
                        tjPdfVO.setStandardValue(tjOrderDetail.getStanId());
                        tjPdfVO.setCompany(tjOrderDetail.getProAdvice());
                        tjPdfVOS.add(tjPdfVO);
                    }
            }
            printReport.put(entry.getKey(), tjPdfVOS);
            if(tjPdfVOS.size()==0)
            {toRemoveKeys.add(entry.getKey());}
        }
        toRemoveKeys.forEach(printReport::remove);
        return printReport;
    }
    private void extracted(Map<TjOrderRemark, List<TjPdfVO>> printReport, TjOrder one, TjCustomer customer) {
        for (Map.Entry<TjOrderRemark, List<TjPdfVO>> entry : printReport.entrySet()) {
            List<TjPdfVO> tjPdfVOS = new ArrayList<>();
//            TjOrder one = tjOrderService.getOrderByTjNum(entry.getKey().getTjNumber());
            List<TjOrderDetail> tjOrderDetails = tjOrderDetailService.getDetailByOrderIdAndParId(one.getOrderId(),entry.getKey().getProId());
            for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
                TjProject tjProject = projectService.getById(tjOrderDetail.getProId());
                if (null != tjProject) {
                    tjOrderDetail.setProject(tjProject);
                }
                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();
                        TjStandard s = new TjStandard();
                        s.setCompany(" ");
                        s.setTjStandardLtValue(" ");
                        s.setTjStandardGtValue(" ");
@@ -693,19 +901,19 @@
                    tjPdfVO.setExc(tjOrderDetail.getExceptionDesc());
                    if (tjOrderDetail.getStandard() != null) {
                        //单位
                        if (tjOrderDetail.getStandard().getCompany()==null){
                        if (tjOrderDetail.getStandard().getCompany() == null) {
                            tjPdfVO.setCompany(" ");
                        }else {
                        } else {
                            tjPdfVO.setCompany(tjOrderDetail.getStandard().getCompany());
                        }
                        //最大值和最小值
                        String tjStandardGtValue = tjOrderDetail.getStandard().getTjStandardGtValue();
                        String tjStandardLtValue = tjOrderDetail.getStandard().getTjStandardLtValue();
                        if (tjStandardGtValue==null){
                            tjStandardGtValue=" ";
                        if (tjStandardGtValue == null) {
                            tjStandardGtValue = " ";
                        }
                        if (tjStandardLtValue==null){
                            tjStandardLtValue=" ";
                        if (tjStandardLtValue == null) {
                            tjStandardLtValue = " ";
                        }
                        tjPdfVO.setStandardValue(tjStandardLtValue + "-" + tjStandardGtValue);
                    }
@@ -714,8 +922,33 @@
            }
            printReport.put(entry.getKey(), tjPdfVOS);
        }
        return printReport;
    }
    @GetMapping("/isPdfOrJimu")
    @ApiOperation(value = "判断报告打开类型")
    public AjaxResult isPdfOrJimu(String tjNumber) {
        Map<String,String> res=new HashMap<>();
        LambdaQueryWrapper<TjReport> we = new LambdaQueryWrapper<>();
        we.eq(TjReport::getTjNumber, tjNumber);
        we.eq(TjReport::getType, "体检报告");
        TjReport one = tjReportService.getOne(we);
        if (one==null){
            return AjaxResult.error("暂无体检报告");
        }
        if ("pdf".equals(one.getPrint())){
            res.put("flag","0");
            return AjaxResult.success(res);
        }else if ("报表".equals(one.getPrint())){
            res.put("flag","1");
            res.put("url",one.getPath());
            return AjaxResult.success(res);
        }else {
            return AjaxResult.error("暂无体检报告");
        }
    }
    @GetMapping("/preview/{flag}/{TjNumber}")
@@ -731,7 +964,7 @@
        LambdaQueryWrapper<TjOrder> wq1 = new LambdaQueryWrapper<>();
        wq1.eq(TjOrder::getTjNumber,tjNumber);
        wq1.eq(TjOrder::getTjNumber, tjNumber);
        TjOrder tjOrder = tjOrderService.getOne(wq1);
@@ -742,17 +975,18 @@
        LambdaQueryWrapper<TjReport> we = new LambdaQueryWrapper<>();
        we.eq(TjReport::getTjNumber, tjNumber);
        we.eq(TjReport::getType,"体检报告");
        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");
        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";
        String filePath = value + "\\" + userId + tjNumber + tjCustomer.getCusName() + "_体检报告.pdf";
        File f = new File(filePath);
        if (filePath.isEmpty()){
        if (filePath.isEmpty()) {
            System.out.println("文件不存在!");
            return;
        }
@@ -772,13 +1006,13 @@
                String contentType = u.openConnection().getContentType();
                response.setContentType(contentType);
                response.setHeader("Content-Disposition", "inline;filename="
                        + userId+tjNumber + ".pdf");
                        + 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");
                        + userId + tjNumber + ".pdf");
            }
            out = response.getOutputStream();
            while ((len = br.read(bs)) > 0) {
@@ -813,7 +1047,7 @@
        QueryWrapper<TjReport> wq1 = new QueryWrapper<>();
        wq1.eq("tj_number", tjNumber);
        wq1.eq("type", "体检报告");
        if (null!=tjReportService.getOne(wq1)){
        if (null != tjReportService.getOne(wq1)) {
            if (!tjReportService.remove(wq1)) {
                return AjaxResult.error("撤回失败!");
            }
@@ -822,7 +1056,12 @@
        wq2.eq("tj_number", tjNumber);
        TjOrder one = tjOrderService.getOne(wq2);
        one.setCheckStatus(0);
        one.setStatus(TjConstants.TJ_WAIT);
        String config = configService.selectConfigByKey("tj_confirm");
        if ("Y".equals(config)) {
            one.setStatus(TjConstants.TJ_CHECK);
        } else {
            one.setStatus(TjConstants.TJ_CONFIRM);
        }
        //将状态改为未审核
//        UpdateWrapper updateWrapper=new UpdateWrapper();
//        updateWrapper.eq("tj_number",tjNumber);
@@ -839,330 +1078,330 @@
    @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<>();
    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);
        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);
        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);
        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);
        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);
        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);
        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);
        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);
        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);
        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;
            a = 0;
            final TjCustomer byId = tjCustomerService.getById(tjOrder.getUserId());
            final int ageByIdCard = MatchUtils.getAgeByIdCard(byId.getCusIdcard());
            if (0<=ageByIdCard && ageByIdCard<=19){
            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 ("0-19岁".equals(res1.get(i).get("name"))) {
                        a += 1;
                        res1.get(i).put("value", a);
                    }
                }
            }else if (20<=ageByIdCard && ageByIdCard<=29){
            } 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 ("20-29岁".equals(res1.get(i).get("name"))) {
                        a += 1;
                        res1.get(i).put("value", a);
                    }
                }
            }else if (30<=ageByIdCard && ageByIdCard<=39){
            } 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 ("30-39岁".equals(res1.get(i).get("name"))) {
                        a += 1;
                        res1.get(i).put("value", a);
                    }
                }
            }else if (40<=ageByIdCard && ageByIdCard<=49){
            } 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 ("40-49岁".equals(res1.get(i).get("name"))) {
                        a += 1;
                        res1.get(i).put("value", a);
                    }
                }
            }else if (50<=ageByIdCard && ageByIdCard<=59){
            } 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 ("50-59岁".equals(res1.get(i).get("name"))) {
                        a += 1;
                        res1.get(i).put("value", a);
                    }
                }
            }else if (60<=ageByIdCard && ageByIdCard<=69){
            } 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 ("60-69岁".equals(res1.get(i).get("name"))) {
                        a += 1;
                        res1.get(i).put("value", a);
                    }
                }
            }else if (70<=ageByIdCard && ageByIdCard<=79){
            } 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 ("70-79岁".equals(res1.get(i).get("name"))) {
                        a += 1;
                        res1.get(i).put("value", a);
                    }
                }
            }else {
            } 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 ("80岁+".equals(res1.get(i).get("name"))) {
                        a += 1;
                        res1.get(i).put("value", a);
                    }
                }
            }
        }
        all.put("data",res1);
        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<>();
    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);
        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);
        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);
        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);
        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);
        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);
        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);
        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);
        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);
        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;
            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){
            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;
                    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);
                        res1.get(i).put("boy", b);
                        res1.get(i).put("girl", c);
                    }
                }
            }else if (20<=ageByIdCard && ageByIdCard<=29){
            } 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;
                    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);
                        res1.get(i).put("boy", b);
                        res1.get(i).put("girl", c);
                    }
                }
            }else if (30<=ageByIdCard && ageByIdCard<=39){
            } 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;
                    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);
                        res1.get(i).put("boy", b);
                        res1.get(i).put("girl", c);
                    }
                }
            }else if (40<=ageByIdCard && ageByIdCard<=49){
            } 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;
                    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);
                        res1.get(i).put("boy", b);
                        res1.get(i).put("girl", c);
                    }
                }
            }else if (50<=ageByIdCard && ageByIdCard<=59){
            } 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;
                    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);
                        res1.get(i).put("boy", b);
                        res1.get(i).put("girl", c);
                    }
                }
            }else if (60<=ageByIdCard && ageByIdCard<=69){
            } 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;
                    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);
                        res1.get(i).put("boy", b);
                        res1.get(i).put("girl", c);
                    }
                }
            }else if (70<=ageByIdCard && ageByIdCard<=79){
            } 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;
                    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);
                        res1.get(i).put("boy", b);
                        res1.get(i).put("girl", c);
                    }
                }
            }else {
            } 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;
                    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);
                        res1.get(i).put("boy", b);
                        res1.get(i).put("girl", c);
                    }
                }
            }
@@ -1172,7 +1411,7 @@
            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){
            if (value != 0) {
                double percentage = (value1 * 1.0 / value) * 100;
                NumberFormat nf = NumberFormat.getPercentInstance();
                nf.setMinimumFractionDigits(2);
@@ -1186,14 +1425,14 @@
                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);
                res1.get(i).put("boy1", percent1);
                res1.get(i).put("girl1", percent2);
                res1.get(i).put("value1", result);
            }
        }
        all.put("data",res1);
        all.put("data", res1);
        return all;
    }
@@ -1201,65 +1440,65 @@
    @GetMapping("/tuanDuiYiChang")
    @ApiOperation(value = "生成团队体检报告——异常结果统计")
    public Map<String,List<Map<String, Object>>> tuanDuiYiChang(@ApiParam(value = "单位") @RequestParam String firmId,
                                                               @ApiParam(value = "部门") @RequestParam String firmDeptId){
    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<>();
        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);
        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<>();
        List<TjOrderDetailRules> res11 = new ArrayList<>();
        for (TjOrder tjOrder : list) {
            LambdaQueryWrapper<TjOrderDetailRules> wq1=new LambdaQueryWrapper<>();
            wq1.eq(TjOrderDetailRules::getTjNumber,tjOrder.getTjNumber());
            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<>();
        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){
                if (byId != null) {
                    resMap.put("name", byId.getBingzhong());
                    resMap.put("value", String.valueOf(entry.getValue()));
                    aaa.add(resMap);
                }
            }
        }
        all.put("data",aaa);
        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){
    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<>();
        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);
        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<String> tjNumberList = list.stream().map(TjOrder::getTjNumber).collect(Collectors.toList());
        List<TjOrderDetailRules> res11=new ArrayList<>();
        List<TjOrderDetailRules> res11 = new ArrayList<>();
        for (TjOrder tjOrder : list) {
            LambdaQueryWrapper<TjOrderDetailRules> wq1=new LambdaQueryWrapper<>();
            wq1.eq(TjOrderDetailRules::getTjNumber,tjOrder.getTjNumber());
            LambdaQueryWrapper<TjOrderDetailRules> wq1 = new LambdaQueryWrapper<>();
            wq1.eq(TjOrderDetailRules::getTjNumber, tjOrder.getTjNumber());
            final List<TjOrderDetailRules> list1 = detailRulesService.list(wq1);
            //放进集合
            res11.addAll(list1);
@@ -1267,36 +1506,36 @@
        //去重收集
        Map<String, Long> columnCountMap = res11.stream().collect(Collectors.groupingBy(TjOrderDetailRules::getAid, Collectors.counting()));
        List<Map<String, Object>> aaa=new ArrayList<>();
        if (columnCountMap!=null){
        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<>();
            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){
                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);
                    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);
                    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);
                        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);
@@ -1309,7 +1548,7 @@
            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){
            if (value != 0) {
                double percentage = (value1 * 1.0 / value) * 100;
                NumberFormat nf = NumberFormat.getPercentInstance();
                nf.setMinimumFractionDigits(2);
@@ -1323,14 +1562,38 @@
                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);
                aaa.get(i).put("boy1", percent1);
                aaa.get(i).put("girl1", percent2);
                aaa.get(i).put("value1", result);
            }
        }
        all.put("data",aaa);
        all.put("data", aaa);
        return all;
    }
    @GetMapping("/reportHistory")
    @ApiOperation(value = "历史报告")
    public AjaxResult reportHistory(Long cusId) {
        List<TjReport> res=new ArrayList<>();
        LambdaQueryWrapper<TjOrder> wqq = new LambdaQueryWrapper<>();
        wqq.like(TjOrder::getUserId, cusId);
        List<TjOrder> orderList = tjOrderService.list(wqq);
        if (orderList!=null && orderList.size()>0){
            for (TjOrder tjOrder : orderList) {
                if (tjOrder!=null){
                    LambdaQueryWrapper<TjReport> wq = new LambdaQueryWrapper<>();
                    wq.eq(TjReport::getTjNumber, tjOrder.getTjNumber());
                    wq.eq(TjReport::getType,"体检报告");
                    TjReport one = tjReportService.getOne(wq);
                    if(null !=one){
                        res.add(one);
                    }
                }
            }
            return AjaxResult.success(res);
        }
        return AjaxResult.error("暂无历史报告");
    }
}