| | |
| | | private ITjReportTemplateService reportTemplateService; |
| | | @Value("${path.filePath}") |
| | | private String value; |
| | | @Value("${path.reportServer}") |
| | | private String urlValue; |
| | | @Resource |
| | | private ISysUserService userService; |
| | | @Resource |
| | |
| | | @Resource |
| | | private ITbTransitionService transitionService; |
| | | |
| | | @Autowired |
| | | private ITjBigPositiveService tjBigPositiveService; |
| | | |
| | | @GetMapping("/savePdf") |
| | | @ApiOperation(value = "从本地存储模板到数据库") |
| | | public AjaxResult savePdf() { |
| | | //从文件地址读入PDF文件 仅存储一次 |
| | | String base64String = PDFBinaryUtil.getPDFBinary("D:\\Tjreport\\体检模板4.pdf"); |
| | | String base64String = PDFBinaryUtil.getPDFBinary("D:\\Tjreport\\体检模板5.pdf"); |
| | | TjReportTemplate tem = new TjReportTemplate(); |
| | | tem.setName("体检报告模板4"); |
| | | tem.setRemark("体检报告模板4"); |
| | | tem.setName("体检报告模板5"); |
| | | tem.setRemark("体检报告模板5"); |
| | | tem.setTemplate(base64String); |
| | | tem.setFlag("1"); |
| | | tem.setOpen("0"); |
| | |
| | | tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getOpen, 0); |
| | | reportTemplate = reportTemplateService.list(tjReportTemplateLambdaQueryWrapper).get(2); |
| | | } |
| | | String template = reportTemplate.getTemplate(); |
| | | |
| | | String userId = SecurityUtils.getLoginUser().getUsername(); |
| | | PDFBinaryUtil.base64StringToPDF(template, FileUtil.mkdir(value).getPath() + "\\" + userId + "体检报告封面模板.pdf"); |
| | | // --------以上------- 根据数据库中的模板二进制文件 转pdf 创建文件夹 将pdf放进本地文件夹 |
| | | |
| | | |
| | | |
| | | |
| | | //判断表中有没有该体检报告 不能重复生成 |
| | | LambdaQueryWrapper<TjReport> wqa = new LambdaQueryWrapper<>(); |
| | |
| | | |
| | | 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); |
| | |
| | | // "【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", ""); |
| | | data.put("yichang", str.toString()); |
| | | |
| | | // 遍历data 给pdf表单表格赋值 |
| | | for (String key : data.keySet()) { |
| | |
| | | |
| | | |
| | | 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 ("N".equals(one11.getNeedReport())){ |
| | | if (null !=one11 && "N".equals(one11.getNeedReport())){ |
| | | continue; |
| | | } |
| | | if ("1".equals(one11.getResultType())) { |
| | | String titleName = one11.getProName(); |
| | | String titleName =null; |
| | | if (null !=one11 && "1".equals(one11.getResultType())) { |
| | | titleName =one11.getProName(); |
| | | // 设置标题字体样式 |
| | | Font titleFonts = PdfUtils.setFont(9); |
| | | Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName); |
| | |
| | | LineSeparator objectName = new LineSeparator(); |
| | | document.add(objectName); |
| | | } else { |
| | | String titleName = one11.getProName(); |
| | | if(null !=one11){ |
| | | titleName = one11.getProName(); |
| | | }else { |
| | | titleName = entry.getKey().getProName(); |
| | | } |
| | | |
| | | // 设置标题字体样式 |
| | | Font titleFonts = PdfUtils.setFont(9); |
| | | Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName); |
| | |
| | | |
| | | LambdaQueryWrapper<TjReport> rtwq = new LambdaQueryWrapper<>(); |
| | | rtwq.eq(TjReport::getType, "心电图"); |
| | | // rtwq.eq(TjReport::getTjNumber, tjNumber); |
| | | rtwq.eq(TjReport::getTjNumber, tjNumber); |
| | | TjReport one1111 = tjReportService.getOne(rtwq); |
| | | if(null !=one1111){ |
| | | String report = one1111.getReport(); |
| | |
| | | |
| | | LambdaQueryWrapper<TjReport> rtwq12 = new LambdaQueryWrapper<>(); |
| | | rtwq12.eq(TjReport::getType, "附件"); |
| | | // rtwq12.eq(TjReport::getTjNumber, tjNumber); |
| | | rtwq12.eq(TjReport::getTjNumber, tjNumber); |
| | | TjReport one111112 = tjReportService.getOne(rtwq12); |
| | | if(null !=one111112){ |
| | | String report12 = one111112.getReport(); |
| | |
| | | |
| | | 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); |
| | | |
| | | //FileUtil.del(value + "\\" + tjNumber + "体检报告.pdf"); |
| | |
| | | } |
| | | 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::getProId,projectService.getHuaYanProId()); |
| | | wq.eq(TjOrderDetail::getProId,projectService.getNotCcCtXdtProId()); |
| | | // wq.notIn(TjOrderDetail::getProId,projectService.getNneedReprotProId()); |
| | | List<TjOrderDetail> tjOrderDetails = tjOrderDetailService.list(wq); |
| | | |
| | | //遍历体检记录 将项目的具体信息 |
| | |
| | | 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(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); |
| | |
| | | } |
| | | 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}") |
| | |
| | | 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(); |