From 8c7934e10d0990b901e9f79c362c1d95209cd447 Mon Sep 17 00:00:00 2001
From: 赵文轩 <1652863494@qq.com>
Date: 星期二, 18 六月 2024 11:52:51 +0800
Subject: [PATCH] hisPDF工具类

---
 ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java |  860 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 836 insertions(+), 24 deletions(-)

diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java
index 3a8e3c8..18c1a70 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java
@@ -11,16 +11,16 @@
 import com.itextpdf.text.pdf.*;
 import com.itextpdf.text.pdf.draw.LineSeparator;
 import com.ltkj.common.core.domain.AjaxResult;
-import com.ltkj.common.core.domain.entity.SysDictData;
+import com.ltkj.common.core.domain.entity.SysUser;
 import com.ltkj.common.utils.DateUtils;
+import com.ltkj.common.utils.StringUtils;
 import com.ltkj.framework.config.MatchUtils;
 import com.ltkj.hosp.domain.*;
-import com.ltkj.hosp.service.ITjCustomerService;
-import com.ltkj.hosp.service.ITjOrderService;
-import com.ltkj.hosp.service.ITjReportService;
-import com.ltkj.hosp.service.ITjReportTemplateService;
+import com.ltkj.hosp.service.*;
+import com.ltkj.hosp.sqlDomain.LtkjHybgd;
+import com.ltkj.hosp.sqlDomain.LtkjHysqd;
 import com.ltkj.mall.mallOrderUtils.TjConstants;
-import com.ltkj.system.service.ISysDictDataService;
+import com.ltkj.system.service.ISysUserService;
 import com.ltkj.web.config.pdfutils.PdfUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -31,6 +31,7 @@
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.List;
 
@@ -50,11 +51,41 @@
     private ITjCustomerService tjCustomerService;
     @Autowired
     private ITjReportService tjReportService;
+    @Autowired
+    private ITjProjectService projectService;
+    @Autowired
+    private ITjOrderRemarkService tjOrderRemarkService;
+    @Autowired
+    private ITjOrderDetailService tjOrderDetailService;
+    @Autowired
+    private ITjStandardService tjStandardService;
+    @Autowired
+    private ISysUserService userService;
+    @Autowired
+    private IDictCompService dictCompService;
+    @Autowired
+    private ITjBigPositiveService tjBigPositiveService;
+    @Autowired
+    private LtkjHybgdService ltkjHybgdService;
+    @Autowired
+    private LtkjHysqdService ltkjHysqdService;
     @Value("${path.filePath}")
     private String value;
     @Value("${path.reportServer}")
     private String urlValue;
 
+//    private static final
+
+    /**
+     * 閫氳繃his API璇锋眰鑾峰彇鏁版嵁鐢熸垚PDF
+     * @param pdfInfoMap
+     * @param params
+     * @param tjOrder
+     * @param tjReportTemplate
+     * @return
+     * @deprecated 鏈夋暟鎹悓姝ヤ笉鍦ㄨ皟鐢ㄦ帴鍙h幏鍙栨暟鎹洿鎺ユ煡鏁版嵁搴撴嬁鏁版嵁鐢熸垚
+     */
+    @Deprecated
     public AjaxResult execHisRequest(HashMap<String, Object> pdfInfoMap, Map<String, Object> params,TjOrder tjOrder,TjReportTemplate tjReportTemplate) {
         List<Map<String, Object>> list;
         String hisRegistrationId = params.get("his_registration_id").toString();
@@ -104,10 +135,11 @@
             JSONObject obj = JSONUtil.createObj();
             putData(obj, getexamreportinfo, "妫�鏌ユ姤鍛�");
             jsonArray.put(obj);
-            System.out.println(JSONUtil.toJsonStr(jsonArray));
-            if (makePDF(hisRegistrationId, jsonArray,tjOrder,tjReportTemplate))
+//            System.out.println(JSONUtil.toJsonStr(jsonArray));
+            if (makePDF(hisRegistrationId, jsonArray,tjOrder,tjReportTemplate)) {
+                log.info("宸茬敓鎴愭姤鍛�");
                 return AjaxResult.success("宸茬敓鎴愭姤鍛婏紒鍙洿鎺ョ偣鍑婚瑙堬紒");
-            else return AjaxResult.error();
+            } else return AjaxResult.error();
         } else {
             return AjaxResult.error("鏈幏鍙栧埌妫�楠屾姤鍛婅褰曚俊鎭�");
         }
@@ -134,6 +166,454 @@
         }
     }
 
+    public AjaxResult hisPDF(TjOrder tjOrder,TjCustomer customer,TjReportTemplate tjReportTemplate) throws DocumentException {
+        HashMap<String, Object> pdfChangGui = makePDFInfo(tjOrder, customer, tjReportTemplate);
+        Document document = (Document) pdfChangGui.get("document");
+        PdfCopy copy = (PdfCopy) pdfChangGui.get("copy");
+        ByteArrayOutputStream finalOutPut = (ByteArrayOutputStream) pdfChangGui.get("stream");
+        ByteArrayOutputStream byteArrayOutputStream1 = new ByteArrayOutputStream();
+        Document document1 = new Document(PageSize.A4);
+        PdfWriter pdfWriter = null;
+        try {
+             pdfWriter = PdfWriter.getInstance(document1, byteArrayOutputStream1);
+        } catch (DocumentException e) {
+            e.printStackTrace();
+            return AjaxResult.error();
+        }
+        document1.setMargins(70, 70, 40, 40);
+        document1.open();
+        // 闈炲寲楠岄」鐩姤鍛�
+        Map<TjOrderRemark, List<TjPdfVO>> printReport = new HashMap<>();
+        notHuaYanData(tjOrder.getTjNumber(), printReport,tjOrder,customer);
+        try {
+            notHuaYanTable(document1, printReport);
+        } catch (DocumentException e) {
+            log.error("闈炲寲楠岄」鐩~鍏呰〃鏍煎紓甯�");
+            e.printStackTrace();
+            return AjaxResult.error();
+        }
+        // 缁勮妫�楠屾暟鎹�
+        HashMap<String, Object> map = makeHisJianYan(tjOrder, customer);
+        makeHisJianYanTable(document1, map);
+
+        document1.close();
+        pdfWriter.close();
+        PdfReader reader = null;
+        try {
+            reader = new PdfReader(byteArrayOutputStream1.toByteArray());
+            int numberOfPages1 = reader.getNumberOfPages();
+            for (int i = 1; i <= numberOfPages1; i++) {
+                PdfImportedPage page = copy.getImportedPage(reader, i);
+                copy.addPage(page);
+            }
+            reader.close();
+            byteArrayOutputStream1.close();
+            document.close();
+            copy.close();
+        } catch (IOException e) {
+            log.error("鎷疯礉pdf寮傚父");
+            e.printStackTrace();
+            return AjaxResult.error();
+        }
+        String outputFileName1 = customer.getCusId() + tjOrder.getTjNumber() + customer.getCusName() + "_鎶ュ憡.pdf";
+        savePDFFile(outputFileName1,tjOrder, customer, finalOutPut);
+        TjReport tjReport = new TjReport();
+        String tjNumber = tjOrder.getTjNumber();
+        tjReport.setTjNumber(String.valueOf(tjNumber));
+        tjReport.setPath(urlValue + outputFileName1);
+        // TODO 鏂囦欢閰嶇疆
+//        String outputPath1 = "/Users/chacca/寮�鍙戠浉鍏�/浠g爜/";
+        String outputPath1 = value+"\\";
+        String pdfBinary = getPDFBinary(outputPath1 + outputFileName1);
+        tjReport.setReport(pdfBinary);
+        tjReport.setType("浣撴鎶ュ憡");
+        tjReport.setPrint("pdf");
+        tjReportService.save(tjReport);
+        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();
+    }
+
+    /**
+     * PDF鏂囦欢瀛樺偍鑷虫湰鍦�
+     * @param tjOrder
+     * @param customer
+     * @param finalOutPut
+     */
+    private void savePDFFile(String outputFileName1,TjOrder tjOrder, TjCustomer customer, ByteArrayOutputStream finalOutPut) {
+        // TODO 鏂囦欢閰嶇疆
+//        String outputPath1 = "/Users/chacca/寮�鍙戠浉鍏�/浠g爜/";
+        String outputPath1 = value+"\\";
+        File file = new File(outputPath1 + outputFileName1);
+        BufferedOutputStream outputStream = null;
+        try {
+            outputStream = new BufferedOutputStream(new FileOutputStream(file));
+            outputStream.write(finalOutPut.toByteArray());
+            outputStream.flush();
+            outputStream.close();
+            finalOutPut.close();
+        } catch (IOException e) {
+            log.error("鏈湴瀛樺偍pdf寮傚父");
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 濉厖妫�楠岃〃鏍兼暟鎹�
+     * @param document1
+     * @param map
+     * @throws DocumentException
+     */
+    private static void makeHisJianYanTable(Document document1, HashMap<String, Object> map) throws DocumentException {
+        if (!map.isEmpty()){
+            String[] titles = new String[]{"浣撴椤圭洰", "浣撴缁撴灉", "鍗曚綅", "鍙傝�冭寖鍥�"};
+            float[] titlesWidth = new float[]{120, 120, 120, 120};
+            for (Map.Entry<String, Object> entry : map.entrySet()) {
+                String titleName = entry.getKey().trim();
+                HashMap<String, Object> entryValue = (HashMap<String, Object>) entry.getValue();
+                HashSet<String> jyys = (HashSet<String>) entryValue.get("jyys");
+                ArrayList<List<String>> lists = (ArrayList<List<String>>) entryValue.get("data");
+                addJianYanTable(document1,titleName,titles,titlesWidth,lists);
+                Font doctorFonts = PdfUtils.setFont(9);
+                String doctors = "";
+                for (String s : jyys) {
+                    doctors+=s+"銆�";
+                }
+                String substring = doctors.substring(0, doctors.length() - 1);
+                Paragraph df = PdfUtils.setParagraph(doctorFonts, "妫�楠屽尰甯堬細"+substring);
+                df.setAlignment(Element.ALIGN_RIGHT);
+                document1.add(df);
+                //鍒嗗壊绾�
+                LineSeparator objectName = new LineSeparator();
+                document1.add(objectName);
+            }
+        }
+    }
+
+    /**
+     * 闈炲寲楠岄」鐩〃鏍煎~鍏�
+     * @param document1
+     * @param printReport
+     * @throws DocumentException
+     */
+    private void notHuaYanTable(Document document1, Map<TjOrderRemark, List<TjPdfVO>> printReport) throws DocumentException {
+        for (Map.Entry<TjOrderRemark, List<TjPdfVO>> entry : printReport.entrySet()) {
+            List<TjPdfVO> value = entry.getValue();
+            LambdaQueryWrapper<TjProject> wqqq = new LambdaQueryWrapper<>();
+            wqqq.eq(TjProject::getProId, entry.getKey().getProId());
+            TjProject one11 = projectService.getOne(wqqq);
+            //鍒ゆ柇璇ラ」鐩槸鍚﹂渶瑕佹墦鍗版姤鍛�
+            if (null != one11 && "N".equals(one11.getNeedReport())) {
+                continue;
+            }
+            String titleName = null;
+            if (null != one11 && "1".equals(one11.getResultType())) {
+                titleName = one11.getProName();
+                // TODO 鍗曚綅
+                // 璁剧疆鏍囬瀛椾綋鏍峰紡
+                Font titleFonts = PdfUtils.setFont(9);
+                Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
+                String[] titles = {"浣撴椤圭洰", "浣撴缁撴灉","鍗曚綅"};
+                // 鑾峰彇鍒楄〃鏁版嵁
+                //璁剧疆琛ㄥご瀛椾綋鏍峰紡
+                Font headFont = PdfUtils.setFont(9);
+                // 璁剧疆姝f枃瀛椾綋鏍峰紡锛�12鍙�
+                Font textFont = PdfUtils.setFont(9);
+                //鍒涘缓琛ㄦ牸  灏嗚〃澶村瓧浣撳拰姝f枃瀛椾綋鏀捐繘鍘�
+                PdfPTable table = PdfUtils.setTable2(headFont, textFont, titles, value);
+                document1.add(paragraph);
+                document1.add(table);
+                //鍒ゆ柇澶囨敞鏄惁涓虹┖  绌轰笉鑳芥樉绀簄ull
+                if (entry.getKey().getRemark() == null) {
+                    entry.getKey().setRemark("");
+                }
+                String remark = "澶囨敞锛�" + entry.getKey().getRemark();
+                if (entry.getKey().getRemark().length() > 50) {
+                    int j = 0;
+                    for (int i = 0; i < remark.length() / 50; i++) {
+                        String substring = remark.substring(j, j + 50);
+                        Font remarkFonts = PdfUtils.setFont(9);
+                        Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
+                        document1.add(pp);
+                        j = j + 50;
+                    }
+                    if (remark.length() % 50 != 0) {
+                        String substring = remark.substring((remark.length() / 50) * 50, remark.length() - 1);
+                        Font remarkFonts = PdfUtils.setFont(9);
+                        Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
+                        document1.add(pp);
+                    }
+                } else {
+                    Font remarkFonts = PdfUtils.setFont(9);
+                    Paragraph pp = PdfUtils.setParagraph(remarkFonts, remark);
+                    document1.add(pp);
+                }
+                //鍒ゆ柇涓绘鍖诲笀鏄惁涓虹┖  绌轰笉鑳芥樉绀簄ull
+                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);
+                    document1.add(df);
+                } else {
+                    String doctorName = "涓绘鍖诲笀锛�" + "鏃�";
+                    Font doctorFonts = PdfUtils.setFont(9);
+                    Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
+                    df.setAlignment(Element.ALIGN_RIGHT);
+                    document1.add(df);
+                }
+                //鍒嗗壊绾�
+                LineSeparator objectName = new LineSeparator();
+                document1.add(objectName);
+            } else {
+                if (null != one11) {
+                    titleName = one11.getProName();
+                } else {
+                    titleName = entry.getKey().getProName();
+                }
+                // 璁剧疆鏍囬瀛椾綋鏍峰紡
+                Font titleFonts = PdfUtils.setFont(9);
+                Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
+                String[] titles = {"浣撴椤圭洰", "浣撴缁撴灉", "鍗曚綅", "鍙傝�冭寖鍥�"};
+                // 鑾峰彇鍒楄〃鏁版嵁
+                //璁剧疆琛ㄥご瀛椾綋鏍峰紡
+                Font headFont = PdfUtils.setFont(9);
+                // 璁剧疆姝f枃瀛椾綋鏍峰紡锛�12鍙�
+                Font textFont = PdfUtils.setFont(9);
+                //鍒涘缓琛ㄦ牸  灏嗚〃澶村瓧浣撳拰姝f枃瀛椾綋鏀捐繘鍘�
+                PdfPTable table = PdfUtils.setTable(headFont, textFont, titles, value);
+                document1.add(paragraph);
+                document1.add(table);
+                //鍒ゆ柇澶囨敞鏄惁涓虹┖  绌轰笉鑳芥樉绀簄ull
+                if (entry.getKey().getRemark() == null) {
+                    entry.getKey().setRemark("");
+                }
+                String remark = "澶囨敞锛�" + entry.getKey().getRemark();
+                if (entry.getKey().getRemark().length() > 50) {
+                    int j = 0;
+                    for (int i = 0; i < remark.length() / 50; i++) {
+                        String substring = remark.substring(j, j + 50);
+                        Font remarkFonts = PdfUtils.setFont(9);
+                        Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
+                        document1.add(pp);
+                        j = j + 50;
+                    }
+                    if (remark.length() % 50 != 0) {
+                        String substring = remark.substring((remark.length() / 50) * 50, remark.length() - 1);
+                        Font remarkFonts = PdfUtils.setFont(9);
+                        Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
+                        document1.add(pp);
+                    }
+                } else {
+                    Font remarkFonts = PdfUtils.setFont(9);
+                    Paragraph pp = PdfUtils.setParagraph(remarkFonts, remark);
+                    document1.add(pp);
+                }
+                //鍒ゆ柇涓绘鍖诲笀鏄惁涓虹┖  绌轰笉鑳芥樉绀簄ull
+                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);
+                    document1.add(df);
+                } else {
+                    String doctorName = "涓绘鍖诲笀锛�" + "鏃�";
+                    Font doctorFonts = PdfUtils.setFont(9);
+                    Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
+                    df.setAlignment(Element.ALIGN_RIGHT);
+                    document1.add(df);
+                }
+                //鍒嗗壊绾�
+                LineSeparator objectName = new LineSeparator();
+                document1.add(objectName);
+            }
+        }
+    }
+
+    public HashMap<String, Object> makeHisJianYan(TjOrder tjOrder, TjCustomer customer){
+        // TODO 杩欓噷鍏堜娇鐢ㄦ煡鍏ㄩ儴娴嬭瘯
+        LambdaQueryWrapper<LtkjHysqd> ltkjHysqdLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        ltkjHysqdLambdaQueryWrapper.eq(LtkjHysqd::getTjh,tjOrder.getCardId());
+        List<LtkjHysqd> list = ltkjHysqdService.list(ltkjHysqdLambdaQueryWrapper);
+//        List<LtkjHysqd> list = ltkjHysqdService.list();
+        HashMap<String, Object> data = new HashMap<>();
+        for (LtkjHysqd hysqd : list) {
+            LambdaQueryWrapper<LtkjHybgd> ltkjHybgdLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            ltkjHybgdLambdaQueryWrapper.eq(LtkjHybgd::getTmh,hysqd.getTmh());
+            List<LtkjHybgd> hybgds = ltkjHybgdService.list(ltkjHybgdLambdaQueryWrapper);
+            // 澶х被椤圭洰鍚嶇О
+            String xmmc = hysqd.getXmmc();
+            ArrayList<List<String>> lists = new ArrayList<>();
+            HashSet<String> hashSet = new HashSet<>();
+            for (LtkjHybgd hybgd : hybgds) {
+                // 妫�鏌ラ」鐩�
+                String jcxm = hybgd.getJcxm();
+                // 妫�楠岀粨鏋�
+                String jyjg = hybgd.getJyjg();
+                // 缁撴灉鍗曚綅
+                String jgdw = hybgd.getJgdw();
+                // 鑼冨洿鍊�
+                String fwz = hybgd.getFwz();
+                // 妫�楠屽尰甯�
+                String jyys = hybgd.getJyys();
+                if (jyjg != null && StrUtil.isNotBlank(jyjg) && fwz != null && StrUtil.isNotBlank(fwz)){
+                    try {
+                        String[] fwzs = fwz.split("-");
+                        BigDecimal min = new BigDecimal(fwzs[0]);
+                        BigDecimal max = new BigDecimal(fwzs[1]);
+                        BigDecimal jyjgval = new BigDecimal(jyjg);
+                        // 姣旇緝妫�楠岀粨鏋滃拰鑼冨洿鍊�
+                        if (jyjgval.compareTo(min) < 0) {
+                            // jyjg 灏忎簬鑼冨洿鏈�灏忓�硷紝娣诲姞涓嬬澶�
+                            jyjg = jyjg + "   鈫�";
+                        } else if (jyjgval.compareTo(max) > 0) {
+                            // jyjg 澶т簬鑼冨洿鏈�澶у�硷紝娣诲姞涓婄澶�
+                            jyjg = jyjg + "   鈫�";
+                        }
+                    } catch (Exception ignored) {}
+                }
+                LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.eq(SysUser::getUserName,jyys);
+                List<SysUser> sysUsers = userService.list(queryWrapper);
+                if (!sysUsers.isEmpty())
+                    hashSet.add(sysUsers.get(0).getNickName());
+                ArrayList<String> strings = new ArrayList<>();
+                strings.add(jcxm);
+                strings.add(jyjg);
+                strings.add(jgdw);
+                strings.add(fwz);
+                lists.add(strings);
+            }
+            if (!lists.isEmpty()) {
+                HashMap<String, Object> map = new HashMap<>();
+                map.put("data",lists);
+                map.put("jyys",hashSet);
+                data.put(xmmc, map);
+            }
+        }
+        return data;
+    }
+
+    /**
+     * 鐢熸垚PDF妯$増浠ュ強鐢ㄦ埛淇℃伅閮ㄥ垎
+     * @param tjOrder
+     * @param reportTemplate
+     */
+    public HashMap<String ,Object> makePDFInfo(TjOrder tjOrder,TjCustomer tjCustomer,TjReportTemplate reportTemplate){
+        String tjNumber = tjOrder.getTjNumber();
+        String template = reportTemplate.getTemplate();
+        LambdaQueryWrapper<DictComp> wq111 = new LambdaQueryWrapper<>();
+        wq111.eq(DictComp::getDrugManufacturerId, tjOrder.getFirmId());
+        DictComp dictComp = dictCompService.getOne(wq111);
+        LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
+        wq2.eq(TjOrderDetail::getOrderId, tjOrder.getOrderId());
+        //20230306鍒ゆ柇璇ラ」鐩槸鍚﹂��璐�/缂磋垂
+        wq2.isNotNull(TjOrderDetail::getFlowingWaterId);
+        //20230323鍒ゆ柇璇ラ」鐩槸鍚﹀純妫�/鏈
+//        wq2.eq(TjOrderDetail::getTjStatus,1);
+        List<TjOrderDetail> list = tjOrderDetailService.list(wq2);
+        for (TjOrderDetail tjOrderDetail : list) {
+            TjProject tjProject = projectService.selectTjProjectByProId(tjOrderDetail.getProId());
+            tjOrderDetail.setProject(tjProject);
+        }
+        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+        PdfReader reader = null;
+        PdfStamper pdfStamper = null;
+        try {
+            reader = new PdfReader(new ByteArrayInputStream(Base64.getDecoder().decode(template)));
+            pdfStamper = new PdfStamper(reader, byteArrayOutputStream);
+            // 鑾峰彇pdf琛ㄥ崟
+            AcroFields acroFields = pdfStamper.getAcroFields();
+            BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
+            acroFields.addSubstitutionFont(bf);
+            HashMap<String, Object> data = new HashMap<>();
+            // 璁剧疆鐢ㄦ埛淇℃伅
+            setUserInfo(tjNumber, tjOrder, tjCustomer, data);
+            //寮傚父椤圭洰
+            if (dictComp == null) {
+                data.put("work", "鏃�");
+            } else {
+                data.put("work", dictComp.getCnName());
+            }
+            //灏侀潰椤典笅闈㈢殑鎬绘寤鸿鏄剧ず
+            if (tjOrder.getCheckAdvice() == null) {
+                data.put("remark", "鏃�");
+            } else {
+                data.put("remark", tjOrder.getCheckAdvice());
+            }
+            //灏侀潰椤典笅闈㈢殑鎬绘寤鸿鏄剧ず
+            if (tjOrder.getCheckDoctor() == null) {
+                data.put("docname", "鏃�");
+            } else {
+                data.put("docname", tjOrder.getCheckDoctor());
+            }
+            //鎷兼帴閲嶅ぇ闃虫�х粨鏋�
+            StringBuffer str = new StringBuffer();
+            str.append("銆愰噸澶ч槼鎬ч」鐩�慭n");
+            LambdaQueryWrapper<TjBigPositive> bigPositiveLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            bigPositiveLambdaQueryWrapper.eq(TjBigPositive::getTjNumber, tjNumber);
+            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 缁檖df琛ㄥ崟琛ㄦ牸璧嬪��
+            for (String key : data.keySet()) {
+                acroFields.setField(key, data.get(key).toString());
+            }
+            //璁剧疆涓烘棤娉曠紪杈�
+            pdfStamper.setFormFlattening(true);
+            pdfStamper.close();
+            reader.close();
+            // 灏嗕慨鏀瑰悗鐨凱DF鍐呭鍐欏叆
+            byte[] bytes = byteArrayOutputStream.toByteArray();
+            // 鍒涘缓鏂扮殑PDF鏂囨。
+            Document document = new Document(PageSize.A4);
+            ByteArrayOutputStream finalOutPut = new ByteArrayOutputStream();
+            PdfCopy copy = new PdfCopy(document, finalOutPut);
+            document.open();
+            reader = new PdfReader(bytes);
+            int numberOfPages = reader.getNumberOfPages();
+            for (int i = 1; i <= numberOfPages; i++) {
+                PdfImportedPage page = copy.getImportedPage(reader, i);
+                copy.addPage(page);
+            }
+            // 娣诲姞璇︽儏椤�
+            document.newPage();
+            HashMap<String, Object> map = new HashMap<>();
+            map.put("document",document);
+            map.put("copy",copy);
+            map.put("stream",finalOutPut);
+            return map;
+        } catch (IOException | DocumentException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
     public Boolean makePDF(String cardId, JSONArray jsonArray,TjOrder tjOrder,TjReportTemplate reportTemplate) {
         String tjNumber = tjOrder.getTjNumber();
         String template = reportTemplate.getTemplate();
@@ -141,6 +621,20 @@
         wq1.eq(TjCustomer::getCusId, tjOrder.getUserId());
         TjCustomer tjCustomer = tjCustomerService.getOne(wq1);
         Long userId = tjCustomer.getCusId();
+        LambdaQueryWrapper<DictComp> wq111 = new LambdaQueryWrapper<>();
+        wq111.eq(DictComp::getDrugManufacturerId, tjOrder.getFirmId());
+        DictComp dictComp = dictCompService.getOne(wq111);
+        LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
+        wq2.eq(TjOrderDetail::getOrderId, tjOrder.getOrderId());
+        //20230306鍒ゆ柇璇ラ」鐩槸鍚﹂��璐�/缂磋垂
+        wq2.isNotNull(TjOrderDetail::getFlowingWaterId);
+        //20230323鍒ゆ柇璇ラ」鐩槸鍚﹀純妫�/鏈
+//                wq2.eq(TjOrderDetail::getTjStatus,1);
+        List<TjOrderDetail> list = tjOrderDetailService.list(wq2);
+        for (TjOrderDetail tjOrderDetail : list) {
+            TjProject tjProject = projectService.selectTjProjectByProId(tjOrderDetail.getProId());
+            tjOrderDetail.setProject(tjProject);
+        }
         // 鐢熸垚pdf
         try {
             ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
@@ -154,6 +648,50 @@
             // 璁剧疆鐢ㄦ埛淇℃伅
             setUserInfo(tjNumber, tjOrder, tjCustomer, data);
             //寮傚父椤圭洰
+            if (dictComp == null) {
+                data.put("work", "鏃�");
+            } else {
+                data.put("work", dictComp.getCnName());
+            }
+            //灏侀潰椤典笅闈㈢殑鎬绘寤鸿鏄剧ず
+            if (tjOrder.getCheckAdvice() == null) {
+                data.put("remark", "鏃�");
+            } else {
+                data.put("remark", tjOrder.getCheckAdvice());
+            }
+            //灏侀潰椤典笅闈㈢殑鎬绘寤鸿鏄剧ず
+            if (tjOrder.getCheckDoctor() == null) {
+                data.put("docname", "鏃�");
+            } else {
+                data.put("docname", tjOrder.getCheckDoctor());
+            }
+            //鎷兼帴閲嶅ぇ闃虫�х粨鏋�
+            StringBuffer str = new StringBuffer();
+            str.append("銆愰噸澶ч槼鎬ч」鐩�慭n");
+            LambdaQueryWrapper<TjBigPositive> bigPositiveLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            bigPositiveLambdaQueryWrapper.eq(TjBigPositive::getTjNumber, tjNumber);
+            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 缁檖df琛ㄥ崟琛ㄦ牸璧嬪��
             for (String key : data.keySet()) {
                 acroFields.setField(key, data.get(key).toString());
@@ -182,6 +720,142 @@
             PdfWriter pdfWriter = PdfWriter.getInstance(document1, byteArrayOutputStream1);
             document1.setMargins(70, 70, 40, 40);
             document1.open();
+            // 闈炲寲楠岄」鐩姤鍛�
+            Map<TjOrderRemark, List<TjPdfVO>> printReport = new HashMap<>();
+            notHuaYanData(tjNumber, printReport,tjOrder,tjCustomer);
+            for (Map.Entry<TjOrderRemark, List<TjPdfVO>> entry : printReport.entrySet()) {
+                List<TjPdfVO> value = entry.getValue();
+                LambdaQueryWrapper<TjProject> wqqq = new LambdaQueryWrapper<>();
+                wqqq.eq(TjProject::getProId, entry.getKey().getProId());
+                TjProject one11 = projectService.getOne(wqqq);
+                //鍒ゆ柇璇ラ」鐩槸鍚﹂渶瑕佹墦鍗版姤鍛�
+                if (null != one11 && "N".equals(one11.getNeedReport())) {
+                    continue;
+                }
+                String titleName = null;
+                if (null != one11 && "1".equals(one11.getResultType())) {
+                    titleName = one11.getProName();
+                    // TODO 鍗曚綅
+                    // 璁剧疆鏍囬瀛椾綋鏍峰紡
+                    Font titleFonts = PdfUtils.setFont(9);
+                    Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
+                    String[] titles = {"浣撴椤圭洰", "浣撴缁撴灉","鍗曚綅"};
+                    // 鑾峰彇鍒楄〃鏁版嵁
+                    //璁剧疆琛ㄥご瀛椾綋鏍峰紡
+                    Font headFont = PdfUtils.setFont(9);
+                    // 璁剧疆姝f枃瀛椾綋鏍峰紡锛�12鍙�
+                    Font textFont = PdfUtils.setFont(9);
+                    //鍒涘缓琛ㄦ牸  灏嗚〃澶村瓧浣撳拰姝f枃瀛椾綋鏀捐繘鍘�
+                    PdfPTable table = PdfUtils.setTable2(headFont, textFont, titles, value);
+                    document1.add(paragraph);
+                    document1.add(table);
+                    //鍒ゆ柇澶囨敞鏄惁涓虹┖  绌轰笉鑳芥樉绀簄ull
+                    if (entry.getKey().getRemark() == null) {
+                        entry.getKey().setRemark("");
+                    }
+                    String remark = "澶囨敞锛�" + entry.getKey().getRemark();
+                    if (entry.getKey().getRemark().length() > 50) {
+                        int j = 0;
+                        for (int i = 0; i < remark.length() / 50; i++) {
+                            String substring = remark.substring(j, j + 50);
+                            Font remarkFonts = PdfUtils.setFont(9);
+                            Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
+                            document1.add(pp);
+                            j = j + 50;
+                        }
+                        if (remark.length() % 50 != 0) {
+                            String substring = remark.substring((remark.length() / 50) * 50, remark.length() - 1);
+                            Font remarkFonts = PdfUtils.setFont(9);
+                            Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
+                            document1.add(pp);
+                        }
+                    } else {
+                        Font remarkFonts = PdfUtils.setFont(9);
+                        Paragraph pp = PdfUtils.setParagraph(remarkFonts, remark);
+                        document1.add(pp);
+                    }
+                    //鍒ゆ柇涓绘鍖诲笀鏄惁涓虹┖  绌轰笉鑳芥樉绀簄ull
+                    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);
+                        document1.add(df);
+                    } else {
+                        String doctorName = "涓绘鍖诲笀锛�" + "鏃�";
+                        Font doctorFonts = PdfUtils.setFont(9);
+                        Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
+                        df.setAlignment(Element.ALIGN_RIGHT);
+                        document1.add(df);
+                    }
+                    //鍒嗗壊绾�
+                    LineSeparator objectName = new LineSeparator();
+                    document1.add(objectName);
+                } else {
+                    if (null != one11) {
+                        titleName = one11.getProName();
+                    } else {
+                        titleName = entry.getKey().getProName();
+                    }
+                    // 璁剧疆鏍囬瀛椾綋鏍峰紡
+                    Font titleFonts = PdfUtils.setFont(9);
+                    Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
+                    String[] titles = {"浣撴椤圭洰", "浣撴缁撴灉", "鍗曚綅", "鍙傝�冭寖鍥�"};
+                    // 鑾峰彇鍒楄〃鏁版嵁
+                    //璁剧疆琛ㄥご瀛椾綋鏍峰紡
+                    Font headFont = PdfUtils.setFont(9);
+                    // 璁剧疆姝f枃瀛椾綋鏍峰紡锛�12鍙�
+                    Font textFont = PdfUtils.setFont(9);
+                    //鍒涘缓琛ㄦ牸  灏嗚〃澶村瓧浣撳拰姝f枃瀛椾綋鏀捐繘鍘�
+                    PdfPTable table = PdfUtils.setTable(headFont, textFont, titles, value);
+                    document1.add(paragraph);
+                    document1.add(table);
+                    //鍒ゆ柇澶囨敞鏄惁涓虹┖  绌轰笉鑳芥樉绀簄ull
+                    if (entry.getKey().getRemark() == null) {
+                        entry.getKey().setRemark("");
+                    }
+                    String remark = "澶囨敞锛�" + entry.getKey().getRemark();
+                    if (entry.getKey().getRemark().length() > 50) {
+                        int j = 0;
+                        for (int i = 0; i < remark.length() / 50; i++) {
+                            String substring = remark.substring(j, j + 50);
+                            Font remarkFonts = PdfUtils.setFont(9);
+                            Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
+                            document1.add(pp);
+                            j = j + 50;
+                        }
+                        if (remark.length() % 50 != 0) {
+                            String substring = remark.substring((remark.length() / 50) * 50, remark.length() - 1);
+                            Font remarkFonts = PdfUtils.setFont(9);
+                            Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
+                            document1.add(pp);
+                        }
+                    } else {
+                        Font remarkFonts = PdfUtils.setFont(9);
+                        Paragraph pp = PdfUtils.setParagraph(remarkFonts, remark);
+                        document1.add(pp);
+                    }
+                    //鍒ゆ柇涓绘鍖诲笀鏄惁涓虹┖  绌轰笉鑳芥樉绀簄ull
+                    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);
+                        document1.add(df);
+                    } else {
+                        String doctorName = "涓绘鍖诲笀锛�" + "鏃�";
+                        Font doctorFonts = PdfUtils.setFont(9);
+                        Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
+                        df.setAlignment(Element.ALIGN_RIGHT);
+                        document1.add(df);
+                    }
+                    //鍒嗗壊绾�
+                    LineSeparator objectName = new LineSeparator();
+                    document1.add(objectName);
+                }
+            }
             List<ByteArrayOutputStream> jianchas = new ArrayList<>();
             for (Object o : jsonArray) {
                 JSONObject jsonObject = (JSONObject) o;
@@ -192,7 +866,7 @@
                     titleName = reportInfo.getStr("JYXMMC").trim();
                 }
                 JSONArray reportDetails = jsonObject.getJSONArray("妫�楠岀粨鏋滆褰�");
-                ArrayList<TjPdfVO> list = new ArrayList<>();
+                ArrayList<TjPdfVO> listPdf = new ArrayList<>();
                 String[] titles = null;
                 float[] titlesWidth = null;
                 // 缁撴灉淇℃伅
@@ -204,11 +878,11 @@
                         tjPdfVO.setProResult(detail.getStr("JCZBJG"));
                         tjPdfVO.setVal1(detail.getStr("JLDW"));
                         tjPdfVO.setVal2(detail.getStr("CKZFW"));
-                        list.add(tjPdfVO);
+                        listPdf.add(tjPdfVO);
                     }
                     titles = new String[]{"浣撴椤圭洰", "浣撴缁撴灉", "鍗曚綅", "鍙傝�冭寖鍥�"};
                     titlesWidth = new float[]{120, 120, 120, 120};
-                    addTable(document1, titleName, titles, titlesWidth, list);
+                    addTable(document1, titleName, titles, titlesWidth, listPdf);
                     // 涓绘鍖诲笀
                     String bgysqm = reportInfo.getStr("BGYSQM");
                     String doctorName = "涓绘鍖诲笀锛�" + bgysqm;
@@ -223,17 +897,17 @@
                 // 寰敓鐗╂姤鍛婅褰曚俊鎭�
                 JSONArray labgermrepInfos = jsonObject.getJSONArray("寰敓鐗╂姤鍛婅褰�");
                 if (labgermrepInfos != null && labgermrepInfos.size() > 0) {
-                    list = new ArrayList<>();
+                    listPdf = new ArrayList<>();
                     for (Object info : labgermrepInfos) {
                         JSONObject object = (JSONObject) info;
                         TjPdfVO tjPdfVO = new TjPdfVO();
                         tjPdfVO.setProName(object.getStr("XJMC"));
                         tjPdfVO.setProResult(object.getStr("JCJG"));
-                        list.add(tjPdfVO);
+                        listPdf.add(tjPdfVO);
                     }
                     titles = new String[]{"浣撴椤圭洰", "浣撴缁撴灉"};
                     titlesWidth = new float[]{120, 120};
-                    addTable(document1, titleName, titles, titlesWidth, list);
+                    addTable(document1, titleName, titles, titlesWidth, listPdf);
                     //鍒嗗壊绾�
                     LineSeparator objectName = new LineSeparator();
                     document1.add(objectName);
@@ -241,7 +915,7 @@
                 // 寰敓鐗╄嵂鏁忎俊鎭�
                 JSONArray labgermdetailinfos = jsonObject.getJSONArray("寰敓鐗╄嵂鏁忎俊鎭�");
                 if (labgermdetailinfos != null && labgermdetailinfos.size() > 0) {
-                    list = new ArrayList<>();
+                    listPdf = new ArrayList<>();
                     for (Object info : labgermdetailinfos) {
                         JSONObject object = (JSONObject) info;
                         TjPdfVO tjPdfVO = new TjPdfVO();
@@ -250,11 +924,11 @@
                         tjPdfVO.setVal1(object.getStr("ZPHYL"));
                         tjPdfVO.setVal2(object.getStr("YJND"));
                         tjPdfVO.setVal3(object.getStr("YJHZJ"));
-                        list.add(tjPdfVO);
+                        listPdf.add(tjPdfVO);
                     }
                     titles = new String[]{"鑽晱鍚嶇О", "妫�鏌ョ粨鏋�", "绾哥墖鍚嵂閲�", "鎶戣弻娴撳害", "鎶戣弻鐜洿寰�"};
                     titlesWidth = new float[]{90, 90, 90, 90, 90};
-                    addTable(document1, titleName, titles, titlesWidth, list);
+                    addTable(document1, titleName, titles, titlesWidth, listPdf);
                     //鍒嗗壊绾�
                     LineSeparator objectName = new LineSeparator();
                     document1.add(objectName);
@@ -262,7 +936,7 @@
                 // 鍗辨�ュ�间俊鎭�
                 JSONArray laburgentinfos = jsonObject.getJSONArray("鍗辨満鍊间俊鎭�");
                 if (laburgentinfos != null && laburgentinfos.size() > 0) {
-                    list = new ArrayList<>();
+                    listPdf = new ArrayList<>();
                     for (Object info : laburgentinfos) {
                         JSONObject object = (JSONObject) info;
                         TjPdfVO tjPdfVO = new TjPdfVO();
@@ -270,11 +944,11 @@
                         tjPdfVO.setProResult(object.getStr("jg"));
                         tjPdfVO.setVal1(object.getStr("clfs"));
                         tjPdfVO.setVal2(object.getStr("bgcljg"));
-                        list.add(tjPdfVO);
+                        listPdf.add(tjPdfVO);
                     }
                     titles = new String[]{"鎸囨爣鍚嶇О", "鍗辨�ュ�肩粨鏋�", "澶勭悊鏂瑰紡", "澶勭悊鎰忚"};
                     titlesWidth = new float[]{120, 120, 120, 120};
-                    addTable(document1, titleName, titles, titlesWidth, list);
+                    addTable(document1, titleName, titles, titlesWidth, listPdf);
                     //鍒嗗壊绾�
                     LineSeparator objectName = new LineSeparator();
                     document1.add(objectName);
@@ -333,9 +1007,10 @@
             document.close();
             copy.close();
             reader.close();
+            String outputFileName1 = userId + tjNumber + tjCustomer.getCusName() + "_鎶ュ憡.pdf";
+            // TODO 鏂囦欢閰嶇疆
 //            String outputPath1 = "/Users/chacca/寮�鍙戠浉鍏�/浠g爜/";
             String outputPath1 = value+"\\";
-            String outputFileName1 = userId + tjNumber + tjCustomer.getCusName() + "_鎶ュ憡.pdf";
             File file = new File(outputPath1 + outputFileName1);
             BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(file));
             outputStream.write(finalOutPut.toByteArray());
@@ -365,6 +1040,83 @@
             return false;
         }
         return true;
+    }
+
+    // 缁勫悎闈炲寲楠岄」鐩姤鍛婃暟鎹�
+    private void notHuaYanData(String tjNumber, Map<TjOrderRemark, List<TjPdfVO>> printReport,TjOrder one,TjCustomer customer) {
+        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);
+        }
+        for (Map.Entry<TjOrderRemark, List<TjPdfVO>> entry : printReport.entrySet()) {
+            List<TjPdfVO> tjPdfVOS = new ArrayList<>();
+            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 (tjOrderDetail.getProject().getProParentId().equals(entry.getKey().getProId())) {
+                    LambdaQueryWrapper<TjStandard> wq6 = new LambdaQueryWrapper<>();
+                    wq6.eq(TjStandard::getProId, tjOrderDetail.getProId());
+                    List<TjStandard> list2 = tjStandardService.list(wq6);
+                    if (list2.size() == 0) {
+                        TjStandard s = new TjStandard();
+                        s.setCompany(" ");
+                        s.setTjStandardLtValue(" ");
+                        s.setTjStandardGtValue(" ");
+                        tjOrderDetail.setStandard(s);
+                    } else if (list2.size() == 1) {
+                        tjOrderDetail.setStandard(list2.get(0));
+                    } else {
+                        Long cusSex = customer.getCusSex();
+                        Date cusBrithday = customer.getCusBrithday();
+                        int age = DateUtil.ageOfNow(cusBrithday);
+                        for (TjStandard tjStandard : list2) {
+                            LambdaQueryWrapper<TjStandard> wq8 = new LambdaQueryWrapper<>();
+                            if (tjStandard.getTjSex() != null) {
+                                wq8.eq(TjStandard::getTjSex, cusSex);
+                            }
+                            if (tjStandard.getTjType() != null) {
+                                wq8.eq(TjStandard::getTjType, StringUtils.getAgeType(age));
+                            }
+                            TjStandard standard = tjStandardService.getOne(wq8);
+                            tjOrderDetail.setStandard(standard);
+                        }
+                    }
+                    TjPdfVO tjPdfVO = new TjPdfVO();
+                    tjPdfVO.setProName(tjOrderDetail.getProject().getProName());
+                    tjPdfVO.setProResult(tjOrderDetail.getProResult());
+                    tjPdfVO.setExc(tjOrderDetail.getExceptionDesc());
+                    if (tjOrderDetail.getStandard() != null) {
+                        //鍗曚綅
+                        if (tjOrderDetail.getStandard().getCompany() == null) {
+                            tjPdfVO.setCompany(" ");
+                        } else {
+                            tjPdfVO.setCompany(tjOrderDetail.getStandard().getCompany());
+                        }
+                        // TODO 璁剧疆鍗曚綅
+                        //鏈�澶у�煎拰鏈�灏忓��
+                        String tjStandardGtValue = tjOrderDetail.getStandard().getTjStandardGtValue();
+                        String tjStandardLtValue = tjOrderDetail.getStandard().getTjStandardLtValue();
+                        if (tjStandardGtValue == null) {
+                            tjStandardGtValue = " ";
+                        }
+                        if (tjStandardLtValue == null) {
+                            tjStandardLtValue = " ";
+                        }
+                        tjPdfVO.setStandardValue(tjStandardLtValue + "-" + tjStandardGtValue);
+                    }
+                    tjPdfVOS.add(tjPdfVO);
+                }
+            }
+            printReport.put(entry.getKey(), tjPdfVOS);
+        }
     }
 
     /**
@@ -409,13 +1161,24 @@
         data.put("num3", 4);
     }
 
+    /**
+     *
+     * @param document
+     * @param titleName
+     * @param titles
+     * @param titlesWidth
+     * @param list
+     * @throws DocumentException
+     * @deprecated 鏁版嵁浠庢暟鎹簱鏌ユ湁鍏蜂綋鐨勫疄浣撶被
+     */
+    @Deprecated
     private static void addTable(Document document, String titleName, String[] titles, float[] titlesWidth, ArrayList<TjPdfVO> list) throws DocumentException {
         Font titleFont = PdfUtils.setFont(9);
         Paragraph paragraph = new Paragraph(titleName, titleFont);
         // 璁剧疆鏂囧瓧灞呬腑
         paragraph.setAlignment(Element.ALIGN_LEFT);
         // 琛岄棿璺�
-//        paragraph.setLeading(5f);
+        paragraph.setLeading(5f);
         // 璁剧疆娈佃惤涓婄┖鐧�
         paragraph.setSpacingBefore(10f);
         // 璁剧疆娈佃惤涓嬬┖鐧�
@@ -427,8 +1190,13 @@
         PdfPTable table = new PdfPTable(titlesWidth);
         table.setTotalWidth(PageSize.A4.getWidth() - 100); // 璁剧疆琛ㄦ牸鎬诲搴�
         table.setLockedWidth(true); // 閿佸畾琛ㄦ牸瀹藉害
+        table.setHorizontalAlignment(Element.ALIGN_LEFT);
+        table.getDefaultCell().setBorder(0);
+        table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
         for (String title : titles) {
             PdfPCell cell = new PdfPCell(new Paragraph(title, headFont));
+            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
             cell.setBorder(Rectangle.NO_BORDER); // 绉婚櫎鍗曞厓鏍艰竟妗�
             table.addCell(cell);
         }
@@ -461,7 +1229,10 @@
                 } else {
                     elements = new Paragraph(value, textFont);
                 }
-                PdfPCell nameCell = new PdfPCell(elements);
+                PdfPCell nameCell = new PdfPCell();
+                nameCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+                nameCell.setHorizontalAlignment(Element.ALIGN_LEFT);
+                nameCell.setPhrase(elements);
                 nameCell.setBorder(Rectangle.NO_BORDER); // 绉婚櫎鍗曞厓鏍艰竟妗�
                 table.addCell(nameCell);
             }
@@ -470,6 +1241,47 @@
         document.add(table);
     }
 
+    private static void addJianYanTable(Document document, String titleName, String[] titles, float[] titlesWidth, ArrayList<List<String >> lists) throws DocumentException {
+        Font titleFont = PdfUtils.setFont(9);
+        Paragraph paragraph = new Paragraph(titleName, titleFont);
+        // 璁剧疆鏂囧瓧灞呬腑
+        paragraph.setAlignment(Element.ALIGN_LEFT);
+        // 琛岄棿璺�
+        paragraph.setLeading(5f);
+        // 璁剧疆娈佃惤涓婄┖鐧�
+        paragraph.setSpacingBefore(10f);
+        // 璁剧疆娈佃惤涓嬬┖鐧�
+        paragraph.setSpacingAfter(10f);
+        document.add(paragraph);
+        // 鍒涘缓涓�涓〃鏍煎苟娣诲姞鍒版枃妗�
+        Font headFont = PdfUtils.setFont(9);
+        Font textFont = PdfUtils.setFont(9);
+        PdfPTable table = new PdfPTable(titlesWidth);
+        table.setTotalWidth(PageSize.A4.getWidth() - 100); // 璁剧疆琛ㄦ牸鎬诲搴�
+        table.setLockedWidth(true); // 閿佸畾琛ㄦ牸瀹藉害
+        table.setHorizontalAlignment(Element.ALIGN_LEFT);
+        table.getDefaultCell().setBorder(0);
+        table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
+        for (String title : titles) {
+            PdfPCell cell = new PdfPCell(new Paragraph(title, headFont));
+            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
+            cell.setBorder(Rectangle.NO_BORDER); // 绉婚櫎鍗曞厓鏍艰竟妗�
+            table.addCell(cell);
+        }
+        for (List<String> list : lists) {
+            for (String s : list) {
+                PdfPCell nameCell = new PdfPCell();
+                nameCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+                nameCell.setHorizontalAlignment(Element.ALIGN_LEFT);
+                nameCell.setPhrase(new Paragraph(s, textFont));
+                nameCell.setBorder(Rectangle.NO_BORDER); // 绉婚櫎鍗曞厓鏍艰竟妗�
+                table.addCell(nameCell);
+            }
+        }
+        document.add(table);
+    }
+
     /**
      * 鍒涘缓妫�鏌df
      * @param xm

--
Gitblit v1.8.0