zjh
2024-07-16 f3445e5babad91627609b898dbc9b5ed844d7cdd
zjh 2024/07/16-1
6个文件已修改
1个文件已添加
931 ■■■■ 已修改文件
ltkj-admin/src/main/java/com/ltkj/web/config/JacksonConfig.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/config/pdfutils/PdfUtils.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/app/CustomerController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/app/ReportController.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java 381 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java 428 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/LtkjExamJcbgdMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/config/JacksonConfig.java
New file
@@ -0,0 +1,25 @@
package com.ltkj.web.config;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.math.BigInteger;
@Configuration
public class JacksonConfig {
    /**
     * Jackson全局转化long类型为String,解决jackson序列化时传入前端Long类型缺失精度问题
     * @return
     */
    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
        return builder -> builder
                .serializerByType(BigInteger.class, ToStringSerializer.instance)
                .serializerByType(Long.class, ToStringSerializer.instance);
    }
}
ltkj-admin/src/main/java/com/ltkj/web/config/pdfutils/PdfUtils.java
@@ -152,7 +152,7 @@
     */
    public static PdfPTable setTable(Font headFont, Font textFont, String[] title, List<TjPdfVO> list) {
        //四列
        PdfPTable table = createTable(new float[]{120, 120, 120, 120});
        PdfPTable table = createTable(new float[]{120, 120, 120});
        //画标题
        for (String head : title) {
            table.addCell(createCell(head, headFont));
@@ -162,7 +162,7 @@
            table.addCell(createCell(tjPdfVO.getProName(), textFont));
            table.addCell(createCell(tjPdfVO.getProResult(), textFont));
            table.addCell(createCell(tjPdfVO.getCompany(), textFont));
            table.addCell(createCell(tjPdfVO.getStandardValue(), textFont));
//            table.addCell(createCell(tjPdfVO.getStandardValue(), textFont));
        }
        return table;
    }
ltkj-admin/src/main/java/com/ltkj/web/controller/app/CustomerController.java
@@ -145,7 +145,7 @@
                    AjaxResult xinXi = suijieHisXinXi(tjCustomer);
                    if(!xinXi.get("code").toString().equals("200")){
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                        return AjaxResult.error("添加就诊人信息失败!" + xinXi.get("msg").toString());
                        return AjaxResult.error("注册失败,请到前台登记!" + xinXi.get("msg").toString());
                    }
                }
            }
@@ -169,7 +169,7 @@
                AjaxResult xinXi = suijieHisXinXi(tjCustomer);
                if(!xinXi.get("code").toString().equals("200")){
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    return AjaxResult.error("添加就诊人信息失败!" + xinXi.get("msg").toString());
                    return AjaxResult.error("注册失败,请到前台登记!" + xinXi.get("msg").toString());
                }
            }
            return AjaxResult.success(tjCustomer);
ltkj-admin/src/main/java/com/ltkj/web/controller/app/ReportController.java
@@ -15,6 +15,8 @@
import com.ltkj.framework.config.UserHoder;
import com.ltkj.hosp.domain.*;
import com.ltkj.hosp.service.*;
import com.ltkj.hosp.sqlDomain.LtkjExamJcbgd;
import com.ltkj.hosp.sqlDomain.LtkjExamJcsqd;
import com.ltkj.hosp.sqlDomain.LtkjHybgd;
import com.ltkj.hosp.sqlDomain.LtkjHysqd;
import com.ltkj.mall.mallOrderUtils.TjConstants;
@@ -54,39 +56,36 @@
    @Resource
    private ITjReportService reportService;
    @Resource
    private ITjCustomerService customerService;
    @Autowired
    private ITjOrderService orderService;
    @Autowired
    private ITjOrderDetailService detailService;
    @Resource
    private ITjProjectService projectService;
    @Resource
    private ITjOrderRemarkService remarkService;
    @Resource
    private ITjStandardService standardService;
    @Resource
    private ITjAdviceService adviceService;
    @Resource
    private IDictCompService compService;
    @Resource
    private ITjReportTemplateService reportTemplateService;
    @Value("${path.filePath}")
    private String value;
    @Resource
    private LtkjHybgdService ltkjHybgdService;
    @Resource
    private LtkjHysqdService ltkjHysqdService;
    @Resource
    private LtkjExamJcbgdService jcbgdService;
    @Resource
    private LtkjExamJcsqdService jcsqdService;
    /**
     * 小程序查询体检报告列表
     */
@@ -131,7 +130,7 @@
    public AjaxResult getRelativeReportList(@RequestParam @ApiParam(value = "姓名") String cusName,
                                            @RequestParam @ApiParam(value = "身份证号") String cusIdcard) {
        LambdaQueryWrapper<TjCustomer> wq1 = new LambdaQueryWrapper<>();
        wq1.eq(TjCustomer::getCusName, cusName);
        wq1.like(TjCustomer::getCusName, cusName);
        wq1.eq(TjCustomer::getCusIdcard, cusIdcard);
        TjCustomer customer = customerService.getOne(wq1);
        if (null != customer) {
@@ -208,26 +207,27 @@
                            }
                            LambdaQueryWrapper<TjProject> wqqqq = new LambdaQueryWrapper<>();
                            wqqqq.eq(TjProject::getProId, tjOrderDetail.getProId());
                            wqqqq.eq(TjProject::getNeedReport,"Y");
                            tjOrderDetail.setProject(projectService.getOne(wqqqq));
                            LambdaQueryWrapper<TjStandard> wq6 = new LambdaQueryWrapper<>();
                            wq6.eq(TjStandard::getProId, tjOrderDetail.getProId());
                            List<TjStandard> list2 = standardService.list(wq6);
                            if (list2.size() == 0) {
                                tjOrderDetail.setStandard(null);
                            } else if (list2.size() == 1) {
                                tjOrderDetail.setStandard(list2.get(0));
                            } else {
                                for (TjStandard tjStandard : list2) {
                                    LambdaQueryWrapper<TjStandard> wq8 = new LambdaQueryWrapper<>();
                                    if (tjStandard.getTjSex() != null) {
                                        wq8.eq(TjStandard::getTjSex, customer.getCusSex());
                                    }
                                    if (tjStandard.getTjType() != null) {
                                        wq8.eq(TjStandard::getTjType, StringUtils.getAgeType(DateUtil.ageOfNow(customer.getCusBrithday())));
                                    }
                                    tjOrderDetail.setStandard(standardService.getOne(wq8));
                                }
                            }
                            //                            LambdaQueryWrapper<TjStandard> wq6 = new LambdaQueryWrapper<>();
//                            wq6.eq(TjStandard::getProId, tjOrderDetail.getProId());
//                            List<TjStandard> list2 = standardService.list(wq6);
//                            if (list2.size() == 0) {
//                                tjOrderDetail.setStandard(null);
//                            } else if (list2.size() == 1) {
//                                tjOrderDetail.setStandard(list2.get(0));
//                            } else {
//                                for (TjStandard tjStandard : list2) {
//                                    LambdaQueryWrapper<TjStandard> wq8 = new LambdaQueryWrapper<>();
//                                    if (tjStandard.getTjSex() != null) {
//                                        wq8.eq(TjStandard::getTjSex, customer.getCusSex());
//                                    }
//                                    if (tjStandard.getTjType() != null) {
//                                        wq8.eq(TjStandard::getTjType, StringUtils.getAgeType(DateUtil.ageOfNow(customer.getCusBrithday())));
//                                    }
//                                    tjOrderDetail.setStandard(standardService.getOne(wq8));
//                                }
//                            }
                        }
                        LambdaQueryWrapper<TjAdvice> wq3 = new LambdaQueryWrapper<>();
                        wq3.eq(TjAdvice::getProId, remark.getProId());
@@ -299,6 +299,35 @@
    }
    @GetMapping("/getJcReportByTjNumber")
    @ApiOperation(value = "小程序-体检检查报告查询详情")
    public AjaxResult getJcReportByTjNumber(@RequestParam @ApiParam(value = "体检号") String tjNumber) {
        LambdaQueryWrapper<TjOrder> wq1 = new LambdaQueryWrapper<>();
        wq1.eq(TjOrder::getTjNumber, tjNumber);
        wq1.eq(TjOrder::getCheckStatus, 1);
        TjOrder one = orderService.getOne(wq1);
        if (one == null) {
            return AjaxResult.success("体检暂未完成!!");
        }
        List<LtkjExamJcsqd> jcsqdList = jcsqdService.getLtkjJcsqdByTjh(one.getCardId());
        if(null !=jcsqdList && jcsqdList.size()>0){
            List<Map<String, Object>> list = new ArrayList<>();
            for (LtkjExamJcsqd jcsqd : jcsqdList) {
                Map<String, Object> map = new HashMap<>();
                map.put("parent",jcsqd.getJcxmmc());
                map.put("jcbx",jcsqd.getJgbx());
                List<LtkjExamJcbgd> jcbgdList = jcbgdService.getJianJcBaoGaoDanList(jcsqd.getTmh());
                map.put("sons",jcbgdList);
                list.add(map);
            }
            return AjaxResult.success(list);
        }
        return AjaxResult.success("该客户在没有体检项目数据!");
    }
    /**
     * 小程序点击体检报告查询详情,显示身高体重体重指数收缩压舒张压
     */
ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java
@@ -71,15 +71,16 @@
    private LtkjHysqdService ltkjHysqdService;
    @Autowired
    private LtkjGetexamreportinfoService ltkjGetexamreportinfoService;
    @Value("${path.filePath}")
    @Value ("${path.filePath}")
    private String value;
    @Value("${path.reportServer}")
    @Value ("${path.reportServer}")
    private String urlValue;
//    private static final
    /**
     * 通过his API请求获取数据生成PDF
     *
     * @param pdfInfoMap
     * @param params
     * @param tjOrder
@@ -88,7 +89,7 @@
     * @deprecated 有数据同步不在调用接口获取数据直接查数据库拿数据生成
     */
    @Deprecated
    public AjaxResult execHisRequest(HashMap<String, Object> pdfInfoMap, Map<String, Object> params,TjOrder tjOrder,TjReportTemplate tjReportTemplate) {
    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();
        AjaxResult getlabreportinfo = apiGetMethodService.getHISDataNew("Getlabreportinfo", params);
@@ -138,7 +139,7 @@
            putData(obj, getexamreportinfo, "检查报告");
            jsonArray.put(obj);
//            System.out.println(JSONUtil.toJsonStr(jsonArray));
            if (makePDF(hisRegistrationId, jsonArray,tjOrder,tjReportTemplate)) {
            if (makePDF(hisRegistrationId, jsonArray, tjOrder, tjReportTemplate)) {
                log.info("已生成报告");
                return AjaxResult.success("已生成报告!可直接点击预览!");
            } else return AjaxResult.error();
@@ -168,7 +169,7 @@
        }
    }
    public AjaxResult hisPDF(TjOrder tjOrder,TjCustomer customer,TjReportTemplate tjReportTemplate) throws DocumentException {
    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");
@@ -177,7 +178,7 @@
        Document document1 = new Document(PageSize.A4);
        PdfWriter pdfWriter = null;
        try {
             pdfWriter = PdfWriter.getInstance(document1, byteArrayOutputStream1);
            pdfWriter = PdfWriter.getInstance(document1, byteArrayOutputStream1);
        } catch (DocumentException e) {
            e.printStackTrace();
            return AjaxResult.error();
@@ -186,7 +187,7 @@
        document1.open();
        // 非化验项目报告
        Map<TjOrderRemark, List<TjPdfVO>> printReport = new HashMap<>();
        notHuaYanData(tjOrder.getTjNumber(), printReport,tjOrder,customer);
        notHuaYanData(tjOrder.getTjNumber(), printReport, tjOrder, customer);
        try {
            notHuaYanTable(document1, printReport);
        } catch (DocumentException e) {
@@ -227,14 +228,14 @@
            return AjaxResult.error();
        }
        String outputFileName1 = customer.getCusId() + tjOrder.getTjNumber() + customer.getCusName() + "_报告.pdf";
        savePDFFile(outputFileName1,tjOrder, customer, finalOutPut);
        savePDFFile(outputFileName1, tjOrder, customer, finalOutPut);
        TjReport tjReport = new TjReport();
        String tjNumber = tjOrder.getTjNumber();
        tjReport.setTjNumber(String.valueOf(tjNumber));
        tjReport.setPath(urlValue + outputFileName1);
        // 文件配置
//        String outputPath1 = "/Users/chacca/开发相关/代码/";
        String outputPath1 = value+"\\";
        String outputPath1 = value + "\\";
        String pdfBinary = getPDFBinary(outputPath1 + outputFileName1);
        tjReport.setReport(pdfBinary);
        tjReport.setType("体检报告");
@@ -252,6 +253,7 @@
    /**
     * 生成检查表格
     *
     * @param tjOrder
     * @return
     */
@@ -283,8 +285,8 @@
            String sqrxm = getexamreportinfo.getSqrxm();
            String zyh = "";
            String ch = "";
            String footer = "申请人:"+sqrxm + "     审核医师:"+shysqm+"     医师签名:"+bgysqm;
            ByteArrayOutputStream outputStream = makeJcPDFByteArrayStream(xm, xb, nl, jcks, zyh, ch, sjks, jcsb, jch, jcxm, ms, ts, null,footer);
            String footer = "申请人:" + sqrxm + "     审核医师:" + shysqm + "     医师签名:" + bgysqm;
            ByteArrayOutputStream outputStream = makeJcPDFByteArrayStream(xm, xb, nl, jcks, zyh, ch, sjks, jcsb, jch, jcxm, ms, ts, null, footer);
            jianchas.add(outputStream);
        }
        return jianchas;
@@ -292,14 +294,15 @@
    /**
     * PDF文件存储至本地
     *
     * @param tjOrder
     * @param customer
     * @param finalOutPut
     */
    private void savePDFFile(String outputFileName1,TjOrder tjOrder, TjCustomer customer, ByteArrayOutputStream finalOutPut) {
    private void savePDFFile(String outputFileName1, TjOrder tjOrder, TjCustomer customer, ByteArrayOutputStream finalOutPut) {
        // 文件配置
//        String outputPath1 = "/Users/chacca/开发相关/代码/";
        String outputPath1 = value+"\\";
        String outputPath1 = value + "\\";
        File file = new File(outputPath1 + outputFileName1);
        BufferedOutputStream outputStream = null;
        try {
@@ -316,12 +319,13 @@
    /**
     * 填充检验表格数据
     *
     * @param document1
     * @param map
     * @throws DocumentException
     */
    private static void makeHisJianYanTable(Document document1, HashMap<String, Object> map) throws DocumentException {
        if (!map.isEmpty()){
        if (!map.isEmpty()) {
            String[] titles = new String[]{"体检项目", "体检结果", "单位", "参考范围"};
            float[] titlesWidth = new float[]{120, 120, 120, 120};
            for (Map.Entry<String, Object> entry : map.entrySet()) {
@@ -329,14 +333,14 @@
                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);
                addJianYanTable(document1, titleName, titles, titlesWidth, lists);
                Font doctorFonts = PdfUtils.setFont(9);
                String doctors = "";
                for (String s : jyys) {
                    doctors+=s+"、";
                    doctors += s + "、";
                }
                String substring = doctors.substring(0, doctors.length() - 1);
                Paragraph df = PdfUtils.setParagraph(doctorFonts, "检验医师:"+substring);
                Paragraph df = PdfUtils.setParagraph(doctorFonts, "检验医师:" + substring);
                df.setAlignment(Element.ALIGN_RIGHT);
                document1.add(df);
                //分割线
@@ -348,156 +352,156 @@
    /**
     * 非化验项目表格填充
     *
     * @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);
                // 设置正文字体样式:12号
                Font textFont = PdfUtils.setFont(9);
                //创建表格  将表头字体和正文字体放进去
                PdfPTable table = PdfUtils.setTable2(headFont, textFont, titles, value);
                document1.add(paragraph);
                document1.add(table);
                //判断备注是否为空  空不能显示null
                if (entry.getKey().getRemark() == null) {
                    entry.getKey().setRemark("");
                }
                String remark = "备注:" + entry.getKey().getRemark();
                if (entry.getKey().getRemark().length() > 50) {
                    int j = 0;
                    for (int i = 0; i < remark.length() / 50; i++) {
                        String substring = remark.substring(j, j + 50);
                        Font remarkFonts = PdfUtils.setFont(9);
                        Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
                        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);
                }
                //判断主检医师是否为空  空不能显示null
                if (null != entry.getKey().getDoctorName() && null != userService.getById(entry.getKey().getDoctorName())) {
                    //主检医师
                    String doctorName = "主检医师:" + userService.getById(entry.getKey().getDoctorName()).getNickName();
                    Font doctorFonts = PdfUtils.setFont(9);
                    Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
                    df.setAlignment(Element.ALIGN_RIGHT);
                    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) {
            if (null != one11 && "Y".equals(one11.getNeedReport())) {
                List<TjPdfVO> value = entry.getValue();
                String titleName = null;
                if (null != one11 && "1".equals(one11.getResultType())) {
                    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);
                // 设置正文字体样式:12号
                Font textFont = PdfUtils.setFont(9);
                //创建表格  将表头字体和正文字体放进去
                PdfPTable table = PdfUtils.setTable(headFont, textFont, titles, value);
                document1.add(paragraph);
                document1.add(table);
                //判断备注是否为空  空不能显示null
                if (entry.getKey().getRemark() == null) {
                    entry.getKey().setRemark("");
                }
                String remark = "备注:" + entry.getKey().getRemark();
                if (entry.getKey().getRemark().length() > 50) {
                    int j = 0;
                    for (int i = 0; i < remark.length() / 50; i++) {
                        String substring = remark.substring(j, j + 50);
                        Font remarkFonts = PdfUtils.setFont(9);
                        Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
                        document1.add(pp);
                        j = j + 50;
                    // TODO 单位
                    // 设置标题字体样式
                    Font titleFonts = PdfUtils.setFont(9);
                    Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
                    String[] titles = {"体检项目", "体检结果", "单位"};
                    // 获取列表数据
                    //设置表头字体样式
                    Font headFont = PdfUtils.setFont(9);
                    // 设置正文字体样式:12号
                    Font textFont = PdfUtils.setFont(9);
                    //创建表格  将表头字体和正文字体放进去
                    PdfPTable table = PdfUtils.setTable2(headFont, textFont, titles, value);
                    document1.add(paragraph);
                    document1.add(table);
                    //判断备注是否为空  空不能显示null
                    if (entry.getKey().getRemark() == null) {
                        entry.getKey().setRemark("");
                    }
                    if (remark.length() % 50 != 0) {
                        String substring = remark.substring((remark.length() / 50) * 50, remark.length() - 1);
                    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, substring);
                        Paragraph pp = PdfUtils.setParagraph(remarkFonts, remark);
                        document1.add(pp);
                    }
                    //判断主检医师是否为空  空不能显示null
                    if (null != entry.getKey().getDoctorName() && null != userService.getById(entry.getKey().getDoctorName())) {
                        //主检医师
                        String doctorName = "主检医师:" + userService.getById(entry.getKey().getDoctorName()).getNickName();
                        Font doctorFonts = PdfUtils.setFont(9);
                        Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
                        df.setAlignment(Element.ALIGN_RIGHT);
                        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 {
                    Font remarkFonts = PdfUtils.setFont(9);
                    Paragraph pp = PdfUtils.setParagraph(remarkFonts, remark);
                    document1.add(pp);
                    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);
                    // 设置正文字体样式:12号
                    Font textFont = PdfUtils.setFont(9);
                    //创建表格  将表头字体和正文字体放进去
                    PdfPTable table = PdfUtils.setTable(headFont, textFont, titles, value);
                    document1.add(paragraph);
                    document1.add(table);
                    //判断备注是否为空  空不能显示null
                    if (entry.getKey().getRemark() == null) {
                        entry.getKey().setRemark("");
                    }
                    String remark = "备注:" + entry.getKey().getRemark();
                    if (entry.getKey().getRemark().length() > 50) {
                        int j = 0;
                        for (int i = 0; i < remark.length() / 50; i++) {
                            String substring = remark.substring(j, j + 50);
                            Font remarkFonts = PdfUtils.setFont(9);
                            Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
                            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);
                    }
                    //判断主检医师是否为空  空不能显示null
                    if (null != entry.getKey().getDoctorName() && null != userService.getById(entry.getKey().getDoctorName())) {
                        //主检医师
                        String doctorName = "主检医师:" + userService.getById(entry.getKey().getDoctorName()).getNickName();
                        Font doctorFonts = PdfUtils.setFont(9);
                        Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
                        df.setAlignment(Element.ALIGN_RIGHT);
                        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);
                }
                //判断主检医师是否为空  空不能显示null
                if (null != entry.getKey().getDoctorName() && null != userService.getById(entry.getKey().getDoctorName())) {
                    //主检医师
                    String doctorName = "主检医师:" + userService.getById(entry.getKey().getDoctorName()).getNickName();
                    Font doctorFonts = PdfUtils.setFont(9);
                    Paragraph df = PdfUtils.setParagraph(doctorFonts, doctorName);
                    df.setAlignment(Element.ALIGN_RIGHT);
                    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){
    public HashMap<String, Object> makeHisJianYan(TjOrder tjOrder, TjCustomer customer) {
        // TODO 这里先使用查全部测试
        LambdaQueryWrapper<LtkjHysqd> ltkjHysqdLambdaQueryWrapper = new LambdaQueryWrapper<>();
        ltkjHysqdLambdaQueryWrapper.eq(LtkjHysqd::getTjh,tjOrder.getCardId());
        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());
            ltkjHybgdLambdaQueryWrapper.eq(LtkjHybgd::getTmh, hysqd.getTmh());
            List<LtkjHybgd> hybgds = ltkjHybgdService.list(ltkjHybgdLambdaQueryWrapper);
            // 大类项目名称
            String xmmc = hysqd.getXmmc();
@@ -516,7 +520,7 @@
//                String jyys = hybgd.getJyys();
                //审核医生
                String shysmc = hybgd.getShysmc();
                if (jyjg != null && StrUtil.isNotBlank(jyjg) && fwz != null && StrUtil.isNotBlank(fwz)){
                if (jyjg != null && StrUtil.isNotBlank(jyjg) && fwz != null && StrUtil.isNotBlank(fwz)) {
                    try {
                        String[] fwzs = fwz.split("-");
                        BigDecimal min = new BigDecimal(fwzs[0]);
@@ -530,14 +534,15 @@
                            // jyjg 大于范围最大值,添加上箭头
                            jyjg = jyjg + "   ↑";
                        }
                    } catch (Exception ignored) {}
                    } 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());
                if(null !=shysmc) hashSet.add(shysmc);
                if (null != shysmc) hashSet.add(shysmc);
                ArrayList<String> strings = new ArrayList<>();
                strings.add(jcxm);
                strings.add(jyjg);
@@ -547,8 +552,8 @@
            }
            if (!lists.isEmpty()) {
                HashMap<String, Object> map = new HashMap<>();
                map.put("data",lists);
                map.put("jyys",hashSet);
                map.put("data", lists);
                map.put("jyys", hashSet);
                data.put(xmmc, map);
            }
        }
@@ -557,10 +562,11 @@
    /**
     * 生成PDF模版以及用户信息部分
     *
     * @param tjOrder
     * @param reportTemplate
     */
    public HashMap<String ,Object> makePDFInfo(TjOrder tjOrder,TjCustomer tjCustomer,TjReportTemplate 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<>();
@@ -658,9 +664,9 @@
            // 添加详情页
            document.newPage();
            HashMap<String, Object> map = new HashMap<>();
            map.put("document",document);
            map.put("copy",copy);
            map.put("stream",finalOutPut);
            map.put("document", document);
            map.put("copy", copy);
            map.put("stream", finalOutPut);
            return map;
        } catch (IOException | DocumentException e) {
            e.printStackTrace();
@@ -668,7 +674,7 @@
        }
    }
    public Boolean makePDF(String cardId, JSONArray jsonArray,TjOrder tjOrder,TjReportTemplate reportTemplate) {
    public Boolean makePDF(String cardId, JSONArray jsonArray, TjOrder tjOrder, TjReportTemplate reportTemplate) {
        String tjNumber = tjOrder.getTjNumber();
        String template = reportTemplate.getTemplate();
        LambdaQueryWrapper<TjCustomer> wq1 = new LambdaQueryWrapper<>();
@@ -776,7 +782,7 @@
            document1.open();
            // 非化验项目报告
            Map<TjOrderRemark, List<TjPdfVO>> printReport = new HashMap<>();
            notHuaYanData(tjNumber, printReport,tjOrder,tjCustomer);
            notHuaYanData(tjNumber, printReport, tjOrder, tjCustomer);
            for (Map.Entry<TjOrderRemark, List<TjPdfVO>> entry : printReport.entrySet()) {
                List<TjPdfVO> value = entry.getValue();
                LambdaQueryWrapper<TjProject> wqqq = new LambdaQueryWrapper<>();
@@ -793,7 +799,7 @@
                    // 设置标题字体样式
                    Font titleFonts = PdfUtils.setFont(9);
                    Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
                    String[] titles = {"体检项目", "体检结果","单位"};
                    String[] titles = {"体检项目", "体检结果", "单位"};
                    // 获取列表数据
                    //设置表头字体样式
                    Font headFont = PdfUtils.setFont(9);
@@ -1034,8 +1040,8 @@
                        String shysqm = obj.getStr("SHYSQM");
                        // 申请人
                        String sqrxm = obj.getStr("SQRXM");
                        String footer = "申请人:"+sqrxm + "     审核医师:"+shysqm+"     "+bgysqm;
                        ByteArrayOutputStream outputStream = makeJcPDFByteArrayStream(xm, xb, nl, jcks, zyh, ch, sjks, jcsb, jch, jcxm, ms, ts, null,footer);
                        String footer = "申请人:" + sqrxm + "     审核医师:" + shysqm + "     " + bgysqm;
                        ByteArrayOutputStream outputStream = makeJcPDFByteArrayStream(xm, xb, nl, jcks, zyh, ch, sjks, jcsb, jch, jcxm, ms, ts, null, footer);
                        jianchas.add(outputStream);
                    }
                }
@@ -1064,7 +1070,7 @@
            String outputFileName1 = userId + tjNumber + tjCustomer.getCusName() + "_报告.pdf";
            // 文件配置
//            String outputPath1 = "/Users/chacca/开发相关/代码/";
            String outputPath1 = value+"\\";
            String outputPath1 = value + "\\";
            File file = new File(outputPath1 + outputFileName1);
            BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(file));
            outputStream.write(finalOutPut.toByteArray());
@@ -1098,16 +1104,17 @@
    /**
     * 组合非化验项目报告数据
     *
     * @param tjNumber
     * @param printReport
     * @param one
     * @param customer
     */
    private void notHuaYanData(String tjNumber, Map<TjOrderRemark, List<TjPdfVO>> printReport,TjOrder one,TjCustomer customer) {
    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.in(TjOrderRemark::getDeptId, "269", "270", "253", "254", "255", "257", "271");
        wqq.notIn(TjOrderRemark::getProId, projectService.getNneedReprotProId());
        List<TjOrderRemark> tjOrderRemarks = tjOrderRemarkService.list(wqq);
        for (TjOrderRemark tjOrderRemark : tjOrderRemarks) {
@@ -1118,61 +1125,21 @@
            List<TjOrderDetail> tjOrderDetails = tjOrderDetailService.getDetailByOrderIdAndParId(one.getOrderId(), entry.getKey().getProId());
            for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
                TjProject tjProject = projectService.getById(tjOrderDetail.getProId());
                if (null != tjProject) {
                if (null != tjProject && tjProject.getNeedReport().equals("Y")) {
                    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);
                    if(null !=tjProject.getProMetering()){
                        tjPdfVO.setCompany(tjProject.getProMetering());
                    }else {
                        tjPdfVO.setCompany("/");
                    }
                    tjPdfVOS.add(tjPdfVO);
                }
                }
            }
            printReport.put(entry.getKey(), tjPdfVOS);
@@ -1222,7 +1189,6 @@
    }
    /**
     *
     * @param document
     * @param titleName
     * @param titles
@@ -1301,7 +1267,7 @@
        document.add(table);
    }
    private static void addJianYanTable(Document document, String titleName, String[] titles, float[] titlesWidth, ArrayList<List<String >> lists) throws DocumentException {
    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);
        // 设置文字居中
@@ -1344,6 +1310,7 @@
    /**
     * 创建检查pdf
     *
     * @param xm
     * @param xb
     * @param nl
@@ -1360,7 +1327,7 @@
     * @param footer
     * @return bytearrayoutputstream
     */
    public static ByteArrayOutputStream makeJcPDFByteArrayStream(String xm, String xb, String nl, String jcks, String zyh, String ch, String sjks, String jcsb, String jch, String jcxm, String ms, String ts, File[] files,String footer) {
    public static ByteArrayOutputStream makeJcPDFByteArrayStream(String xm, String xb, String nl, String jcks, String zyh, String ch, String sjks, String jcsb, String jch, String jcxm, String ms, String ts, File[] files, String footer) {
        try {
            Document document = new Document(PageSize.A4);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -1528,7 +1495,7 @@
            float[] columnWidths = {0.8f, 0.8f, 0.8f, 0.8f, 0.1f, 0.1f, 0.8f, 0.8f, 0.8f, 0.8f};
            table2.setWidths(columnWidths);
            if(files != null){
            if (files != null) {
                int imageIndex = 0;
                while (imageIndex < files.length) {
                    // 第一张图片占位符
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java
@@ -99,8 +99,8 @@
 * @date 2022-11-21
 */
@RestController
@RequestMapping("/hosp/order")
@Api(tags = "PC端 ----体检记录接口")
@RequestMapping ("/hosp/order")
@Api (tags = "PC端 ----体检记录接口")
@Slf4j
public class TjOrderController extends BaseController {
    @Resource
@@ -125,7 +125,7 @@
    private ITbTransitionService transitionService;
    @Resource
    private ISysConfigService configService;
    @Value("${path.filePath}")
    @Value ("${path.filePath}")
    private String value;
    @Resource
    private ITjOrderRemarkService remarkService;
@@ -217,8 +217,8 @@
     * 查询体检记录列表
     */
//    @PreAuthorize("@ss.hasPermi('hosp:order:list')")
    @GetMapping("/list")
    @ApiOperation(value = "查询体检记录列表(默认)")
    @GetMapping ("/list")
    @ApiOperation (value = "查询体检记录列表(默认)")
    public TableDataInfo list(TjOrder tjOrder) {
        startPage();
        startOrderBy();
@@ -251,16 +251,16 @@
    }
    @GetMapping("/getWenJuanList")
    @ApiOperation(value = "查询体检记录列表")
    public AjaxResult getWenJuanList(@ApiParam(value = "页码数(默认1)") @RequestParam(defaultValue = "1") Integer pageNum,
                                     @ApiParam(value = "显示条数(默认10)") @RequestParam(defaultValue = "10") Integer pageSize,
                                     @ApiParam(value = "体检号") @RequestParam(required = false) String tjNum,
                                     @ApiParam(value = "姓名") @RequestParam(required = false) String name,
                                     @ApiParam(value = "登记开始时间") @RequestParam(required = false) Date djbeginTime,
                                     @ApiParam(value = "登记结束时间") @RequestParam(required = false) Date djendTime,
                                     @ApiParam(value = "报告开始时间") @RequestParam(required = false) Date bgbeginTime,
                                     @ApiParam(value = "报告结束时间") @RequestParam(required = false) Date bgendTime) {
    @GetMapping ("/getWenJuanList")
    @ApiOperation (value = "查询体检记录列表")
    public AjaxResult getWenJuanList(@ApiParam (value = "页码数(默认1)") @RequestParam (defaultValue = "1") Integer pageNum,
                                     @ApiParam (value = "显示条数(默认10)") @RequestParam (defaultValue = "10") Integer pageSize,
                                     @ApiParam (value = "体检号") @RequestParam (required = false) String tjNum,
                                     @ApiParam (value = "姓名") @RequestParam (required = false) String name,
                                     @ApiParam (value = "登记开始时间") @RequestParam (required = false) Date djbeginTime,
                                     @ApiParam (value = "登记结束时间") @RequestParam (required = false) Date djendTime,
                                     @ApiParam (value = "报告开始时间") @RequestParam (required = false) Date bgbeginTime,
                                     @ApiParam (value = "报告结束时间") @RequestParam (required = false) Date bgendTime) {
        Map<String, Object> map = new HashMap<>();
        if (null != name) {
            LambdaQueryWrapper<TjCustomer> wqq = new LambdaQueryWrapper<>();
@@ -380,16 +380,16 @@
    }
    @GetMapping("/getOrderList")
    @ApiOperation(value = "查询体检记录列表")
    public AjaxResult getOrderList(@ApiParam(value = "页码数(默认1)") @RequestParam(defaultValue = "1") Integer pageNum,
                                   @ApiParam(value = "显示条数(默认10)") @RequestParam(defaultValue = "10") Integer pageSize,
                                   @ApiParam(value = "体检号)") @RequestParam(required = false) String tjNum,
                                   @ApiParam(value = "姓名)") @RequestParam(required = false) String name,
                                   @ApiParam(value = "登记开始时间") @RequestParam(required = false) Date djbeginTime,
                                   @ApiParam(value = "登记结束时间") @RequestParam(required = false) Date djendTime,
                                   @ApiParam(value = "报告开始时间") @RequestParam(required = false) Date bgbeginTime,
                                   @ApiParam(value = "报告结束时间") @RequestParam(required = false) Date bgendTime) {
    @GetMapping ("/getOrderList")
    @ApiOperation (value = "查询体检记录列表")
    public AjaxResult getOrderList(@ApiParam (value = "页码数(默认1)") @RequestParam (defaultValue = "1") Integer pageNum,
                                   @ApiParam (value = "显示条数(默认10)") @RequestParam (defaultValue = "10") Integer pageSize,
                                   @ApiParam (value = "体检号)") @RequestParam (required = false) String tjNum,
                                   @ApiParam (value = "姓名)") @RequestParam (required = false) String name,
                                   @ApiParam (value = "登记开始时间") @RequestParam (required = false) Date djbeginTime,
                                   @ApiParam (value = "登记结束时间") @RequestParam (required = false) Date djendTime,
                                   @ApiParam (value = "报告开始时间") @RequestParam (required = false) Date bgbeginTime,
                                   @ApiParam (value = "报告结束时间") @RequestParam (required = false) Date bgendTime) {
        Map<String, Object> map = new HashMap<>();
        if (null != name) {
            LambdaQueryWrapper<TjCustomer> wqq = new LambdaQueryWrapper<>();
@@ -497,14 +497,14 @@
    }
    @GetMapping("/getOrderListOO")
    @ApiOperation(value = "体检报告页面——体检记录列表")
    public AjaxResult getOrderListOO(@ApiParam(value = "页码数(默认1)") @RequestParam(defaultValue = "1") Integer pageNum,
                                     @ApiParam(value = "显示条数(默认10)") @RequestParam(defaultValue = "10") Integer pageSize,
                                     @ApiParam(value = "体检号)") @RequestParam(required = false) String tjNum,
                                     @ApiParam(value = "姓名)") @RequestParam(required = false) String name,
                                     @ApiParam(value = "报告开始时间") @RequestParam(required = false) Date bgbeginTime,
                                     @ApiParam(value = "报告结束时间") @RequestParam(required = false) Date bgendTime) {
    @GetMapping ("/getOrderListOO")
    @ApiOperation (value = "体检报告页面——体检记录列表")
    public AjaxResult getOrderListOO(@ApiParam (value = "页码数(默认1)") @RequestParam (defaultValue = "1") Integer pageNum,
                                     @ApiParam (value = "显示条数(默认10)") @RequestParam (defaultValue = "10") Integer pageSize,
                                     @ApiParam (value = "体检号)") @RequestParam (required = false) String tjNum,
                                     @ApiParam (value = "姓名)") @RequestParam (required = false) String name,
                                     @ApiParam (value = "报告开始时间") @RequestParam (required = false) Date bgbeginTime,
                                     @ApiParam (value = "报告结束时间") @RequestParam (required = false) Date bgendTime) {
        Map<String, Object> map = new HashMap<>();
        if (null != name) {
            LambdaQueryWrapper<TjCustomer> wqq = new LambdaQueryWrapper<>();
@@ -626,15 +626,15 @@
    }
    @GetMapping("/getPrintOrderList")
    @ApiOperation(value = "体检发票打印接口")
    public AjaxResult getPrintOrderList(@ApiParam(value = "页码数(默认1)") @RequestParam(defaultValue = "1") Integer pageNum,
                                        @ApiParam(value = "显示条数(默认10)") @RequestParam(defaultValue = "10") Integer pageSize,
                                        @ApiParam(value = "体检号)") @RequestParam(required = false) String tjNum,
                                        @ApiParam(value = "已打印未打印0未打印1已打印)") @RequestParam(required = false) Integer type,
                                        @ApiParam(value = "姓名") @RequestParam(required = false) String name,
                                        @ApiParam(value = "报告开始时间") @RequestParam(required = false) Date bgbeginTime,
                                        @ApiParam(value = "报告结束时间") @RequestParam(required = false) Date bgendTime) {
    @GetMapping ("/getPrintOrderList")
    @ApiOperation (value = "体检发票打印接口")
    public AjaxResult getPrintOrderList(@ApiParam (value = "页码数(默认1)") @RequestParam (defaultValue = "1") Integer pageNum,
                                        @ApiParam (value = "显示条数(默认10)") @RequestParam (defaultValue = "10") Integer pageSize,
                                        @ApiParam (value = "体检号)") @RequestParam (required = false) String tjNum,
                                        @ApiParam (value = "已打印未打印0未打印1已打印)") @RequestParam (required = false) Integer type,
                                        @ApiParam (value = "姓名") @RequestParam (required = false) String name,
                                        @ApiParam (value = "报告开始时间") @RequestParam (required = false) Date bgbeginTime,
                                        @ApiParam (value = "报告结束时间") @RequestParam (required = false) Date bgendTime) {
        Map<String, Object> map = new HashMap<>();
        List<TjOrder> collect = null;
        if (null != name) {
@@ -825,9 +825,9 @@
     * 导出体检记录列表
     */
//    @PreAuthorize("@ss.hasPermi('hosp:order:export')")
    @Log(title = "体检记录", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    @ApiOperation(value = "导出体检记录列表")
    @Log (title = "体检记录", businessType = BusinessType.EXPORT)
    @PostMapping ("/export")
    @ApiOperation (value = "导出体检记录列表")
    public void export(HttpServletResponse response, TjOrder tjOrder) {
        //List<TjOrder> list = tjOrderService.selectTjOrderList(tjOrder);
        List<TjOrder> list = tjOrderService.selectExportOrderList(tjOrder);
@@ -839,15 +839,15 @@
     * 获取体检记录详细信息
     */
//    @PreAuthorize("@ss.hasPermi('hosp:order:query')")
    @GetMapping(value = "/{orderId}")
    @ApiOperation(value = "获取体检记录详细信息")
    public AjaxResult getInfo(@PathVariable("orderId") Long orderId) {
    @GetMapping (value = "/{orderId}")
    @ApiOperation (value = "获取体检记录详细信息")
    public AjaxResult getInfo(@PathVariable ("orderId") Long orderId) {
        return success(tjOrderService.selectTjOrderByOrderId(orderId));
    }
    @GetMapping("/getIsRequired")
    @ApiOperation(value = "根据参数配置获取是否必填项(身份证、性别、电话、照片、是否直接下单)")
    @GetMapping ("/getIsRequired")
    @ApiOperation (value = "根据参数配置获取是否必填项(身份证、性别、电话、照片、是否直接下单)")
    public AjaxResult getIsRequired() {
        Map<String, String> res = new HashMap<>();
        res.put("has_idcard", configService.selectConfigByKey("has_idcard"));
@@ -863,7 +863,7 @@
     * 体检签到登记接口
     */
    @PostMapping
    @ApiOperation(value = "体检签到登记接口")
    @ApiOperation (value = "体检签到登记接口")
    @Transactional  //(切换数据库出错,所以注释)
    public AjaxResult addOrderAndDetail(@RequestBody TjOrder tjOrder) throws Exception {
        Long userId = Long.valueOf(SecurityUtils.getLoginUser().getUserId());
@@ -948,7 +948,7 @@
        if (null != mallOrder) tjOrder.setMallOrderId(String.valueOf(mallOrder.getId()));
        tjOrder.setStatus(TjConstants.TJ_BEGIN);
        tjOrder.setCardId(tjCustomer.getCardId());
        if(null !=tjOrder.getTjCategory() && tjOrder.getTjCategory().equals("13")){
        if (null != tjOrder.getTjCategory() && tjOrder.getTjCategory().equals("13")) {
            tjOrder.setFinishTime(new Date());
            tjOrder.setCheckStatus(1);
            tjOrder.setStatus(TjConstants.TJ_WAIT);
@@ -1085,8 +1085,8 @@
    }
    @PostMapping("/addPlOrderAndDetail")
    @ApiOperation(value = "体检批量签到登记接口")
    @PostMapping ("/addPlOrderAndDetail")
    @ApiOperation (value = "体检批量签到登记接口")
    @Transactional  //(切换数据库出错,所以注释)
    public AjaxResult addPlOrderAndDetail(@RequestBody QianDaoDto daoDto, HttpServletResponse response) {
        SysUser sysUser = UserHoder.getLoginUser().getUser();
@@ -1484,9 +1484,9 @@
     * 修改体检记录
     */
//    @PreAuthorize("@ss.hasPermi('hosp:order:edit')")
    @Log(title = "体检记录", businessType = BusinessType.UPDATE)
    @Log (title = "体检记录", businessType = BusinessType.UPDATE)
    @PutMapping
    @ApiOperation(value = "修改体检记录")
    @ApiOperation (value = "修改体检记录")
    public AjaxResult edit(@RequestBody TjOrder tjOrder) {
        return toAjax(tjOrderService.updateTjOrder(tjOrder));
    }
@@ -1495,16 +1495,16 @@
     * 删除体检记录
     */
//    @PreAuthorize("@ss.hasPermi('hosp:order:remove')")
    @Log(title = "体检记录", businessType = BusinessType.DELETE)
    @DeleteMapping("/{orderIds}")
    @ApiOperation(value = "删除体检记录")
    @Log (title = "体检记录", businessType = BusinessType.DELETE)
    @DeleteMapping ("/{orderIds}")
    @ApiOperation (value = "删除体检记录")
    public AjaxResult remove(@PathVariable Long[] orderIds) {
        return toAjax(tjOrderService.deleteTjOrderByOrderIds(orderIds));
    }
    @GetMapping("/getOrderDetailByTjNumber")
    @ApiOperation(value = "根据体检号获取体检详情")
    public AjaxResult getOrderDetailByTjNumber(@RequestParam @ApiParam(value = "体检号") String tjNumber) {
    @GetMapping ("/getOrderDetailByTjNumber")
    @ApiOperation (value = "根据体检号获取体检详情")
    public AjaxResult getOrderDetailByTjNumber(@RequestParam @ApiParam (value = "体检号") String tjNumber) {
        LambdaQueryWrapper<TjOrder> wq0 = new LambdaQueryWrapper<>();
        wq0.eq(TjOrder::getTjNumber, tjNumber);
        TjOrder tjOrder = tjOrderService.getOne(wq0);
@@ -1524,8 +1524,8 @@
        return AjaxResult.success("暂无数据");
    }
    @PostMapping("/addtTransition")
    @ApiOperation(value = "添加过渡表数据")
    @PostMapping ("/addtTransition")
    @ApiOperation (value = "添加过渡表数据")
    @Transactional
    public AjaxResult addtTransition(@RequestBody Map<String, Object> map) {
        Object packId = map.get("pacId");
@@ -1571,7 +1571,7 @@
//                }
                List<TjPackageProject> ppList = tjPackageProjectService.getTjPackageProjectListByPacId(String.valueOf(pacId));
                if (null != ppList && ppList.size() > 0) {
                    transitionService.saveRedisTransitionByPacId(cusId,cardId ,pacId);
                    transitionService.saveRedisTransitionByPacId(cusId, cardId, pacId);
                    //异步保存数据库
//                    asyncService.addRedisTransitionPac(cusId, pacId, ppList);
//                    asyncService.saveRedisTransitionByPacId(cusId, cardId, pacId, null);
@@ -1622,10 +1622,10 @@
//            asyncService.saveRedisTransitionByPacId(cusId, cardId, null, proIds);
            for (Long proId : proIds) {
                TjProject project = projectService.selectTjProjectByProId(proId);
                if(null !=project){ //&& (!project.getProName().contains("静脉采血")|| !project.getProName().contains("费"))
                if (null != project) { //&& (!project.getProName().contains("静脉采血")|| !project.getProName().contains("费"))
                    List<TbTransition> transitionList = transitionService.getTbTransitionListByCusIdAndPacIdAndProId(cusId, String.valueOf(proId));
                    if (null == transitionList || transitionList.size() == 0) {
                        transitionService.saveRedisTransitionByProId(cusId,cardId, proId);
                        transitionService.saveRedisTransitionByProId(cusId, cardId, proId);
                    }
                }
//            if(null !=project) transitionService.saveRedisTransitionByProId(cusId,cardId, proId);
@@ -1691,9 +1691,9 @@
    }
    @GetMapping("/getTransitionList")
    @ApiOperation(value = "查询过渡表数据")
    public AjaxResult getTransitionList(@RequestParam @ApiParam(value = "客户id") String cusId) {
    @GetMapping ("/getTransitionList")
    @ApiOperation (value = "查询过渡表数据")
    public AjaxResult getTransitionList(@RequestParam @ApiParam (value = "客户id") String cusId) {
        if (redisCache.hasKey(cusId + "cusId")) {
            List<Map<String, Object>> list = redisCache.getCacheMapValue(cusId + "cusId", cusId);
            return AjaxResult.success(list);
@@ -1708,16 +1708,16 @@
    }
    @GetMapping("/getQianLiList")
    @ApiOperation(value = "查询体检记录列表")
    public AjaxResult getQianLiList(@ApiParam(value = "页码数(默认1)") @RequestParam(defaultValue = "1") Integer pageNum,
                                    @ApiParam(value = "显示条数(默认10)") @RequestParam(defaultValue = "10") Integer pageSize,
                                    @ApiParam(value = "体检号") @RequestParam(required = false) String tjNum,
                                    @ApiParam(value = "姓名") @RequestParam(required = false) String name,
                                    @ApiParam(value = "登记开始时间") @RequestParam(required = false) Date djbeginTime,
                                    @ApiParam(value = "登记结束时间") @RequestParam(required = false) Date djendTime,
                                    @ApiParam(value = "报告开始时间") @RequestParam(required = false) Date bgbeginTime,
                                    @ApiParam(value = "报告结束时间") @RequestParam(required = false) Date bgendTime) {
    @GetMapping ("/getQianLiList")
    @ApiOperation (value = "查询体检记录列表")
    public AjaxResult getQianLiList(@ApiParam (value = "页码数(默认1)") @RequestParam (defaultValue = "1") Integer pageNum,
                                    @ApiParam (value = "显示条数(默认10)") @RequestParam (defaultValue = "10") Integer pageSize,
                                    @ApiParam (value = "体检号") @RequestParam (required = false) String tjNum,
                                    @ApiParam (value = "姓名") @RequestParam (required = false) String name,
                                    @ApiParam (value = "登记开始时间") @RequestParam (required = false) Date djbeginTime,
                                    @ApiParam (value = "登记结束时间") @RequestParam (required = false) Date djendTime,
                                    @ApiParam (value = "报告开始时间") @RequestParam (required = false) Date bgbeginTime,
                                    @ApiParam (value = "报告结束时间") @RequestParam (required = false) Date bgendTime) {
        Map<String, Object> map = new HashMap<>();
        if (null != name) {
            LambdaQueryWrapper<TjCustomer> wqq = new LambdaQueryWrapper<>();
@@ -1826,9 +1826,9 @@
    /**
     * 签离弃检确认返回数据
     */
    @GetMapping("/abandon")
    @ApiOperation(value = "签离弃检确认返回数据")
    public AjaxResult abandon(@RequestParam @ApiParam(value = "体检号") String tjNumber) {
    @GetMapping ("/abandon")
    @ApiOperation (value = "签离弃检确认返回数据")
    public AjaxResult abandon(@RequestParam @ApiParam (value = "体检号") String tjNumber) {
        LambdaQueryWrapper<TjOrderRemark> wq = new LambdaQueryWrapper<>();
        wq.eq(TjOrderRemark::getTjNumber, tjNumber);
        List<TjOrderRemark> remarkList = remarkService.list(wq);
@@ -1853,8 +1853,8 @@
     *
     * @ApiParam(value = "体检号") String tjNumber
     */
    @PostMapping("/tjGoOut")
    @ApiOperation(value = "体检签离")
    @PostMapping ("/tjGoOut")
    @ApiOperation (value = "体检签离")
    @Transactional
    public AjaxResult tjGoOut(@RequestBody Map<String, Object> map) {
        Long userId = Long.valueOf(SecurityUtils.getLoginUser().getUserId());
@@ -1930,10 +1930,10 @@
    /**
     * 签离
     */
    @GetMapping("/goOut")
    @ApiOperation(value = "签离")
    @GetMapping ("/goOut")
    @ApiOperation (value = "签离")
    @Transactional
    public AjaxResult goOut(@RequestParam @ApiParam(value = "体检号") String tjNumber) {
    public AjaxResult goOut(@RequestParam @ApiParam (value = "体检号") String tjNumber) {
        return getAjaxResult(tjNumber);
    }
@@ -1941,9 +1941,9 @@
    /**
     * 核销订单接口
     */
    @GetMapping("/orderShip")
    @ApiOperation(value = "PC端手动核销订单接口")
    public AjaxResult orderShip(@RequestParam @ApiParam(value = "体检号") String tjNum) {
    @GetMapping ("/orderShip")
    @ApiOperation (value = "PC端手动核销订单接口")
    public AjaxResult orderShip(@RequestParam @ApiParam (value = "体检号") String tjNum) {
        if (tjNum == null) {
            return AjaxResult.error();
        }
@@ -1994,7 +1994,7 @@
            map.put("proPrantId", entry.getKey().toString());
            if (null != pacId) {
                TjPackage aPackage = tjPackageService.getById(entry.getValue().get(0).getPacId());
                map.put("tjCategory",aPackage.getTjCategory());
                map.put("tjCategory", aPackage.getTjCategory());
                map.put("pacName", aPackage.getPacName());
                TjProject tjProject = projectService.getById(entry.getKey());
//                TjPackageProject project = tjPackageProjectService.getOne(new LambdaQueryWrapper<TjPackageProject>().eq(TjPackageProject::getPacId, pacId)
@@ -2007,7 +2007,7 @@
//                }
                map.put("nowPrice", transitionService.getTbTransitionDxPriceByPac(cusId, entry.getKey(), cardId, pacId));
            } else {
                map.put("tjCategory",null);
                map.put("tjCategory", null);
                map.put("pacName", "单项");
                List<TbTransition> tbTransitionList = entry.getValue();
                if (null != tbTransitionList && tbTransitionList.size() > 0) {
@@ -2046,7 +2046,7 @@
            map.put("proPrantId", entry.getKey().toString());
            if (null != pacId) {
                TjPackage aPackage = tjPackageService.getById(entry.getValue().get(0).getPacId());
                map.put("tjCategory",aPackage.getTjCategory());
                map.put("tjCategory", aPackage.getTjCategory());
                map.put("pacName", aPackage.getPacName());
                TjProject tjProject = projectService.getById(entry.getKey());
//                TjPackageProject project = tjPackageProjectService.getOne(new LambdaQueryWrapper<TjPackageProject>().eq(TjPackageProject::getPacId, pacId)
@@ -2057,9 +2057,9 @@
//                } else {
//                    map.put("nowPrice", tjProject.getProPrice());
//                }
                map.put("nowPrice",tjProject.getProPrice());
                map.put("nowPrice", tjProject.getProPrice());
            } else {
                map.put("tjCategory",null);
                map.put("tjCategory", null);
                map.put("pacName", "单项");
                List<TbTransition> tbTransitionList = entry.getValue();
                if (null != tbTransitionList && tbTransitionList.size() > 0) {
@@ -2110,15 +2110,15 @@
    }
    @GetMapping("/tuanTiListById")
    @ApiOperation(value = "查询团体体检状态")
    public AjaxResult tuanTiListById(@ApiParam(value = "页码数(默认1)") @RequestParam(defaultValue = "1") Integer pageNum,
                                     @ApiParam(value = "显示条数(默认10)") @RequestParam(defaultValue = "10") Integer pageSize,
                                     @ApiParam(value = "单位") @RequestParam String firmId,
                                     @ApiParam(value = "部门") @RequestParam(required = false) String dwDeptId,
                                     @ApiParam(value = "分组") @RequestParam(required = false) String groupId,
                                     @ApiParam(value = "登记开始时间") @RequestParam Date beginTime,
                                     @ApiParam(value = "登记结束时间") @RequestParam Date endTime) {
    @GetMapping ("/tuanTiListById")
    @ApiOperation (value = "查询团体体检状态")
    public AjaxResult tuanTiListById(@ApiParam (value = "页码数(默认1)") @RequestParam (defaultValue = "1") Integer pageNum,
                                     @ApiParam (value = "显示条数(默认10)") @RequestParam (defaultValue = "10") Integer pageSize,
                                     @ApiParam (value = "单位") @RequestParam String firmId,
                                     @ApiParam (value = "部门") @RequestParam (required = false) String dwDeptId,
                                     @ApiParam (value = "分组") @RequestParam (required = false) String groupId,
                                     @ApiParam (value = "登记开始时间") @RequestParam Date beginTime,
                                     @ApiParam (value = "登记结束时间") @RequestParam Date endTime) {
        Map<String, Object> map = new HashMap<>();
        int a = 0;
        int b = 0;
@@ -2183,11 +2183,11 @@
    }
    @GetMapping("/tuanTiBingById")
    @ApiOperation(value = "查询团体体检病种详细信息")
    public AjaxResult tuanTiBingById(@ApiParam(value = "单位") @RequestParam String firmId,
                                     @ApiParam(value = "部门") @RequestParam String firmDeptId,
                                     @ApiParam(value = "病种") @RequestParam(required = false) String bingZhong) {
    @GetMapping ("/tuanTiBingById")
    @ApiOperation (value = "查询团体体检病种详细信息")
    public AjaxResult tuanTiBingById(@ApiParam (value = "单位") @RequestParam String firmId,
                                     @ApiParam (value = "部门") @RequestParam String firmDeptId,
                                     @ApiParam (value = "病种") @RequestParam (required = false) String bingZhong) {
        List<TjOrderDetailRules> res1 = new ArrayList<>();
        List<BingZhongVO> res = new ArrayList<>();
@@ -2246,8 +2246,8 @@
    }
    @PostMapping("/tuanTiBingChart")
    @ApiOperation(value = "查询团体体检病种统计图")
    @PostMapping ("/tuanTiBingChart")
    @ApiOperation (value = "查询团体体检病种统计图")
    public AjaxResult tuanTiBingChart(@RequestBody BingZhongVO bingZhongVO) {
        List<TjOrderDetailRules> res1 = new ArrayList<>();
@@ -2286,90 +2286,90 @@
    }
    @PostMapping("/deletedTbTransitionByCusId")
    @ApiOperation(value = "根据身份证号删除临时表数据")
    public AjaxResult deletedTbTransitionByCusId(@RequestParam @ApiParam(value = "身份证号") String cusId) {
    @PostMapping ("/deletedTbTransitionByCusId")
    @ApiOperation (value = "根据身份证号删除临时表数据")
    public AjaxResult deletedTbTransitionByCusId(@RequestParam @ApiParam (value = "身份证号") String cusId) {
        LambdaQueryWrapper<TbTransition> wq = new LambdaQueryWrapper<>();
        wq.between(TbTransition::getCreateTime, transitionService.getTbTransitionCreateTimeByCusId(cusId), new Date());
        wq.eq(TbTransition::getCusId, cusId);
        return AjaxResult.success(transitionService.remove(wq));
    }
    @GetMapping("/getTransitionInfo")
    @ApiOperation(value = "根据体检号获取汇总和明细的数据")
    public AjaxResult getTransitionInfo(@RequestParam("tjNumber")String tjNumber){
    @GetMapping ("/getTransitionInfo")
    @ApiOperation (value = "根据体检号获取汇总和明细的数据")
    public AjaxResult getTransitionInfo(@RequestParam ("tjNumber") String tjNumber) {
        QueryWrapper<TbTransition> wrapper = new QueryWrapper<>();
        wrapper.select("parent_pro_id","parent_pro_name","sum(ord_price) as ord_price")
                .eq("tj_num",tjNumber)
        wrapper.select("parent_pro_id", "parent_pro_name", "sum(ord_price) as ord_price")
                .eq("tj_num", tjNumber)
                .groupBy("parent_pro_name");
        List<TbTransition> list = transitionService.list(wrapper);
        List<Long> parentProIds = list.stream().map(item -> item.getParentProId()).collect(Collectors.toList());
        LambdaQueryWrapper<TjProject> projectQueryWrapper = new LambdaQueryWrapper<>();
        projectQueryWrapper.in(TjProject::getProId,parentProIds);
        projectQueryWrapper.in(TjProject::getProId, parentProIds);
        List<TjProject> projects = projectService.list(projectQueryWrapper);
        JSONArray huiZong = JSONUtil.createArray();
        int index = 1;
        for (TjProject project : projects) {
            LambdaQueryWrapper<SysDept> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.eq(SysDept::getDeptId,project.getDeptId());
            queryWrapper.eq(SysDept::getDeptId, project.getDeptId());
            SysDept dept = sysDeptService.getOne(queryWrapper);
            for (TbTransition tbTransition : list) {
                if (tbTransition.getParentProId().toString().equals(project.getProId().toString())){
                if (tbTransition.getParentProId().toString().equals(project.getProId().toString())) {
                    JSONObject obj = JSONUtil.createObj();
                    obj.putOpt("index",index++);
                    obj.putOpt("parent_pro_name",tbTransition.getParentProName());
                    obj.putOpt("price",tbTransition.getOrdPrice());
                    obj.putOpt("ks",dept.getDeptName());
                    obj.putOpt("index", index++);
                    obj.putOpt("parent_pro_name", tbTransition.getParentProName());
                    obj.putOpt("price", tbTransition.getOrdPrice());
                    obj.putOpt("ks", dept.getDeptName());
                    huiZong.add(obj);
                }
            }
        }
        wrapper = new QueryWrapper<>();
        wrapper.eq("tj_num",tjNumber);
        wrapper.eq("tj_num", tjNumber);
        list = transitionService.list(wrapper);
        JSONArray info = JSONUtil.createArray();
        index = 1;
        for (TbTransition tbTransition : list) {
            JSONObject obj = JSONUtil.createObj();
            obj.putOpt("index",index++);
            obj.putOpt("parent_pro_name",tbTransition.getParentProName());
            obj.putOpt("pro_name",tbTransition.getProName());
            obj.putOpt("index", index++);
            obj.putOpt("parent_pro_name", tbTransition.getParentProName());
            obj.putOpt("pro_name", tbTransition.getProName());
            BigDecimal ordPrice = tbTransition.getOrdPrice();
            obj.putOpt("zongjia",ordPrice);
            obj.putOpt("zongjia", ordPrice);
            QueryWrapper<TjProject> queryWrapper = new QueryWrapper<>();
            queryWrapper.eq("pro_id",tbTransition.getProId());
            queryWrapper.eq("pro_id", tbTransition.getProId());
            TjProject tjProject = projectService.getOne(queryWrapper);
            Integer num = tjProject.getSl();
            obj.putOpt("num",num);
            obj.putOpt("num", num);
            BigDecimal price = ordPrice.divide(new BigDecimal(num));
            obj.putOpt("danjia",price);
            obj.putOpt("danjia", price);
            Date createTime = tbTransition.getCreateTime();
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            obj.putOpt("time",dateFormat.format(createTime));
            obj.putOpt("time", dateFormat.format(createTime));
            info.put(obj);
        }
        HashMap<String, Object> map = new HashMap<>();
        map.put("huizong",huiZong);
        map.put("info",info);
        return AjaxResult.success().put("data",map);
        map.put("huizong", huiZong);
        map.put("info", info);
        return AjaxResult.success().put("data", map);
    }
    public void newSaveextracted(TjOrder tjOrder, TjCustomer tjCustomer, BigDecimal discount, SysUser sysUser, TjReservation tjReservation, TjFlowingWater tjFlowingWater) {
        tjAskMedicalHistoryService.updateTjAskMedicalHistoryByCusId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjCustomer.getCusId()));
         if(null !=tjOrder.getTjCategory() && tjOrder.getTjCategory().equals("13")){
             tjOrderDetailService.saveJSYTjOrderDetailsByCusId(tjCustomer.getCusIdcard(), String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()));
         }else {
             tjOrderDetailService.saveTjOrderDetailsByCusId(tjCustomer.getCusIdcard(), String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()));
         }
        if (null != tjOrder.getTjCategory() && tjOrder.getTjCategory().equals("13")) {
            tjOrderDetailService.saveJSYTjOrderDetailsByCusId(tjCustomer.getCusIdcard(), String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()));
        } else {
            tjOrderDetailService.saveTjOrderDetailsByCusId(tjCustomer.getCusIdcard(), String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()));
        }
        tjOrderDetailService.saveTjPureToneTesByCusId(tjCustomer.getCusIdcard(), tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()));
        //修改每项的原价现价 //修改临时表体检号
        transitionService.updateTbTransitionPriceByCusId(tjCustomer.getCusIdcard(), discount, tjOrder.getTjNumber());
        //添加remark表数据
        if(null !=tjOrder.getTjCategory() && tjOrder.getTjCategory().equals("13")){
        if (null != tjOrder.getTjCategory() && tjOrder.getTjCategory().equals("13")) {
            remarkService.saveJSYTjOrderRemarkByOrderId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjOrder.getOrderId()));
        }else {
        } else {
            remarkService.saveTjOrderRemarkByOrderId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjOrder.getOrderId()));
        }
@@ -2393,8 +2393,8 @@
    }
    @PostMapping("/heXiaoByIds/{orderIds}")
    @ApiOperation(value = "核收报告——————总检审核通过后可以核销,核收后才能打印")
    @PostMapping ("/heXiaoByIds/{orderIds}")
    @ApiOperation (value = "核收报告——————总检审核通过后可以核销,核收后才能打印")
    @Transactional
    public AjaxResult heXiaoByIds(@PathVariable String[] orderIds) {
        for (String orderId : orderIds) {
@@ -2410,8 +2410,8 @@
        return AjaxResult.success("核收成功");
    }
    @GetMapping("/getHistryTjOrderByCusIdCard")
    @ApiOperation(value = "根据身份证号查看历史体检记录")
    @GetMapping ("/getHistryTjOrderByCusIdCard")
    @ApiOperation (value = "根据身份证号查看历史体检记录")
    @Transactional
    public AjaxResult getHistryTjOrderByCusIdCard(@RequestParam String cusIdCard) {
        TjCustomer tjCustomer = tjCustomerService.getTjCustomerByCusIdCard(cusIdCard);
@@ -2431,8 +2431,8 @@
    }
    @GetMapping("/getHistryTjOrderProByCusIdCard")
    @ApiOperation(value = "根据身份证号查看历史体检项目记录")
    @GetMapping ("/getHistryTjOrderProByCusIdCard")
    @ApiOperation (value = "根据身份证号查看历史体检项目记录")
    @Transactional
    public AjaxResult getHistryTjOrderProByCusIdCard(@RequestParam String cusIdCard) {
        TjCustomer tjCustomer = tjCustomerService.getTjCustomerByCusIdCard(cusIdCard);
@@ -2491,8 +2491,8 @@
    }
    @GetMapping("/getHistryTjOrderByCusId")
    @ApiOperation(value = "根据客户id查看历史体检记录")
    @GetMapping ("/getHistryTjOrderByCusId")
    @ApiOperation (value = "根据客户id查看历史体检记录")
    @Transactional
    public AjaxResult getHistryTjOrderByCusId(@RequestParam String cusId) {
        TjCustomer tjCustomer = tjCustomerService.getById(cusId);
@@ -2526,10 +2526,10 @@
    }
    @GetMapping("/revokeTjOrderByTjNum")
    @ApiOperation(value = "根据客户体检号撤销体检记录")
    @GetMapping ("/revokeTjOrderByTjNum")
    @ApiOperation (value = "根据客户体检号撤销体检记录")
    @Transactional
    public AjaxResult revokeTjOrderByTjNum(@RequestParam @ApiParam(value = "体检号") String tjNum) {
    public AjaxResult revokeTjOrderByTjNum(@RequestParam @ApiParam (value = "体检号") String tjNum) {
        TjOrder order = tjOrderService.getOrderByTjNum(tjNum);
        if (null != order) {
@@ -2544,15 +2544,14 @@
            transitionService.deletedTbTransitionByTjNum(tjNum);
            TjCustomer customer = tjCustomerService.getById(order.getUserId());
            if (null != customer) {
                customer.setCardId("0");
                tjCustomerService.updateById(customer);
            }
            customer.setCardId("0");
            tjCustomerService.updateById(customer);
            String configByKey = configService.selectConfigByKey("sfkqdyhis");
            if (configByKey.equals("Y")) {
                HashMap<String, Object> map = new HashMap<>();
                map.put("cardtype", "4");
                map.put("input", order.getCardId());
//                map.put("input", order.getCardId());
                map.put("input", customer.getPationId());
                LocalDate currentDate = LocalDate.now();
                LocalDateTime startOfDay = currentDate.atStartOfDay();
                LocalDateTime nineteenOClock = currentDate.atTime(LocalTime.of(19, 0));
@@ -2564,7 +2563,7 @@
                AjaxResult result = hisApiGetMethodService.getHISDataNew("Getoutpatientcostinfo", map);
                if (Integer.parseInt(String.valueOf(result.get("code"))) == 200) {
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    return AjaxResult.error("撤销失败,门诊患者费用清单信息不为空");
                    return AjaxResult.error("撤销失败,该人员已缴费,请先退费!");
                } else {
                    boolean zfHisApiMethods = hisApiMethod.ZfHisApiMethods(null, order);
                    if (zfHisApiMethods) {
@@ -2575,22 +2574,20 @@
                    }
                }
            }
//            transitionService.updateTbTransitionByTjNum(tjNum);
            return AjaxResult.success("撤销成功!!!");
        }
        return AjaxResult.success("签到记录不存在!");
    }
    @GetMapping("/getCusTomterListByCompId")
    @ApiOperation(value = "获取单位id体检人信息接口")
    public AjaxResult getCusTomterListByCompId(@RequestParam(required = false) @ApiParam(value = "单位id") String compId,
                                               @RequestParam(required = false) @ApiParam(value = "名字") String name,
                                               @RequestParam(required = false) @ApiParam(value = "部门id") String deptId,
                                               @RequestParam(required = false) @ApiParam(value = "预约时间") Date reservationTime,
                                               @RequestParam(defaultValue = "1") Integer page,
                                               @RequestParam(defaultValue = "10") Integer pageSize) {
    @GetMapping ("/getCusTomterListByCompId")
    @ApiOperation (value = "获取单位id体检人信息接口")
    public AjaxResult getCusTomterListByCompId(@RequestParam (required = false) @ApiParam (value = "单位id") String compId,
                                               @RequestParam (required = false) @ApiParam (value = "名字") String name,
                                               @RequestParam (required = false) @ApiParam (value = "部门id") String deptId,
                                               @RequestParam (required = false) @ApiParam (value = "预约时间") Date reservationTime,
                                               @RequestParam (defaultValue = "1") Integer page,
                                               @RequestParam (defaultValue = "10") Integer pageSize) {
        Page<TjReservation> pages = new Page<>(page, pageSize);
        LambdaQueryWrapper<TjReservation> wq = new LambdaQueryWrapper<>();
        if (null != compId) wq.eq(TjReservation::getCompanyId, compId);
@@ -2616,10 +2613,10 @@
    }
    @PostMapping("/plRevokeTjOrderByTjNum")
    @ApiOperation(value = "根据客户体检号批量撤销体检记录")
    @PostMapping ("/plRevokeTjOrderByTjNum")
    @ApiOperation (value = "根据客户体检号批量撤销体检记录")
    @Transactional
    public AjaxResult plRevokeTjOrderByTjNum(@RequestBody @ApiParam(value = "预约主键id集合") List<String> reservationIds) {
    public AjaxResult plRevokeTjOrderByTjNum(@RequestBody @ApiParam (value = "预约主键id集合") List<String> reservationIds) {
        if (null != reservationIds && reservationIds.size() > 0) {
            LambdaQueryWrapper<TjOrder> wq1 = new LambdaQueryWrapper<>();
            wq1.in(TjOrder::getReservationId, reservationIds);
@@ -2653,8 +2650,8 @@
        return AjaxResult.error("请选择要撤销的人员!");
    }
    @PostMapping("makeTjPDF")
    @ApiOperation(value = "批量生成PDF")
    @PostMapping ("makeTjPDF")
    @ApiOperation (value = "批量生成PDF")
    public AjaxResult makeTjPDF(@RequestBody List<String> reservations) {
        QueryWrapper<TjOrder> queryWrapper = new QueryWrapper<>();
        queryWrapper.in("reservation_id", reservations);
@@ -2696,11 +2693,11 @@
    }
    @GetMapping("/delTbBycusCardIdAndProId")
    @ApiOperation(value = "根据客户身份证号和项目父项id删除临时表数据")
    @GetMapping ("/delTbBycusCardIdAndProId")
    @ApiOperation (value = "根据客户身份证号和项目父项id删除临时表数据")
    @Transactional
    public AjaxResult delTbBycusCardIdAndProId(@RequestParam @ApiParam(value = "身份证号") String cusCardId,
                                               @RequestParam @ApiParam(value = "父项id") String proId) {
    public AjaxResult delTbBycusCardIdAndProId(@RequestParam @ApiParam (value = "身份证号") String cusCardId,
                                               @RequestParam @ApiParam (value = "父项id") String proId) {
        if (transitionService.delTbBycusCardIdAndProId(cusCardId, proId)) {
            return AjaxResult.success();
@@ -2709,10 +2706,10 @@
    }
    @GetMapping("/revokeTjOrderByTjCardId")
    @ApiOperation(value = "根据就诊号撤销申请记录")
    @GetMapping ("/revokeTjOrderByTjCardId")
    @ApiOperation (value = "根据就诊号撤销申请记录")
    @Transactional
    public AjaxResult revokeTjOrderByTjCardId(@RequestParam @ApiParam(value = "就诊号") String cardId) {
    public AjaxResult revokeTjOrderByTjCardId(@RequestParam @ApiParam (value = "就诊号") String cardId) {
        TjOrder order = new TjOrder();
        order.setCardId(cardId);
@@ -2747,10 +2744,10 @@
    }
    @GetMapping("/revokeTjOrderByTjh")
    @ApiOperation(value = "根据就体检号删除记录")
    @GetMapping ("/revokeTjOrderByTjh")
    @ApiOperation (value = "根据就体检号删除记录")
    @Transactional
    public AjaxResult revokeTjOrderByTjh(@RequestParam @ApiParam(value = "体检号") String tjNum) {
    public AjaxResult revokeTjOrderByTjh(@RequestParam @ApiParam (value = "体检号") String tjNum) {
        TjOrder order = tjOrderService.getOrderByTjNum(tjNum);
        if (null != order) {
@@ -2768,25 +2765,25 @@
    }
    @GetMapping("/getBlproByTjh")
    @ApiOperation(value = "根据体检号获取补录项目记录")
    @GetMapping ("/getBlproByTjh")
    @ApiOperation (value = "根据体检号获取补录项目记录")
    @Transactional
    public AjaxResult getBlproByTjh(@RequestParam @ApiParam(value = "体检号") String tjNum) {
    public AjaxResult getBlproByTjh(@RequestParam @ApiParam (value = "体检号") String tjNum) {
        TjOrder order = tjOrderService.getOrderByTjNum(tjNum);
        if (null != order) {
            LambdaQueryWrapper<TjProBl> wq=new LambdaQueryWrapper<>();
            wq.eq(TjProBl::getTjh,tjNum);
            LambdaQueryWrapper<TjProBl> wq = new LambdaQueryWrapper<>();
            wq.eq(TjProBl::getTjh, tjNum);
            List<TjProBl> blList = blService.list(wq);
            if(null !=blList && blList.size()>0){
            if (null != blList && blList.size() > 0) {
                for (TjProBl bl : blList) {
                    LambdaQueryWrapper<TjOrderRemark>wqr=new LambdaQueryWrapper<>();
                    wqr.eq(TjOrderRemark::getJxbz,bl.getBldh());
                    LambdaQueryWrapper<TjOrderRemark> wqr = new LambdaQueryWrapper<>();
                    wqr.eq(TjOrderRemark::getJxbz, bl.getBldh());
                    List<TjOrderRemark> remarkList = remarkService.list(wqr);
                    if(null !=remarkList && remarkList.size()>0){
                    if (null != remarkList && remarkList.size() > 0) {
                        List<Long> collect = remarkList.stream().map(TjOrderRemark::getProId).collect(Collectors.toList());
                        LambdaQueryWrapper<TjProject> wqp=new LambdaQueryWrapper<>();
                        wqp.in(TjProject::getProId,collect);
                        LambdaQueryWrapper<TjProject> wqp = new LambdaQueryWrapper<>();
                        wqp.in(TjProject::getProId, collect);
                        List<TjProject> projectList = projectService.list(wqp);
                        for (TjProject project : projectList) {
                            project.setChildren(projectService.getTjProjectListBySoneId(String.valueOf(project.getProId())));
@@ -2802,44 +2799,43 @@
    }
    @PostMapping("/revokeBlProByBldhAndTjh")
    @ApiOperation(value = "根据补录单号和体检号删除记录")
    @PostMapping ("/revokeBlProByBldhAndTjh")
    @ApiOperation (value = "根据补录单号和体检号删除记录")
    @Transactional
    public AjaxResult revokeBlProByBldhAndTjh(@RequestBody TjProBlDto dto) {
        if(null ==dto.getBldhs() || dto.getBldhs().size()==0){
        if (null == dto.getBldhs() || dto.getBldhs().size() == 0) {
            return AjaxResult.error("请选择要撤销的补录项目");
        }
        TjOrder order = tjOrderService.getOrderByTjNum(dto.getTjh());
        if (null != order) {
            String configByKey = configService.selectConfigByKey("sfkqdyhis");
            if(null !=configByKey && configByKey.equals("Y")){
            if (null != configByKey && configByKey.equals("Y")) {
                HashMap<String, Object> hisRequestParams = new HashMap<>();
                hisRequestParams.put("patientId",order.getCardId());
                hisRequestParams.put("patientId", order.getCardId());
                AjaxResult queryPay = hisApiGetMethodService.getHISDataNew("QueryPay", hisRequestParams);
                if (Integer.parseInt(queryPay.get("code").toString()) == 200) {
                    List<Map<String, String>> data = (List<Map<String, String>>) queryPay.get("data");
                    BigDecimal cateFeeAll = BigDecimal.ZERO;
                    List<String> advIds=new ArrayList<>();
                    List<String> advIds = new ArrayList<>();
                    for (Map<String, String> datum : data) {
                        String advId = datum.get("Adv_Id").split("_")[1];
                        BigDecimal cateFee = new BigDecimal(datum.get("CateFee"));
                        cateFeeAll = cateFeeAll.add(cateFee);
                        advIds.add(advId);
                    }
                    if (advIds.containsAll(dto.getBldhs()) && cateFeeAll.compareTo(BigDecimal.ZERO)!=0 ){
                    if (advIds.containsAll(dto.getBldhs()) && cateFeeAll.compareTo(BigDecimal.ZERO) != 0) {
                        return AjaxResult.error("改项目已缴费不可撤销!!!");
                    }
                }
            }
            for (String bldh : dto.getBldhs()) {
               remarkService.deleteTjOrderDetailByjxbz(bldh);
                remarkService.deleteTjOrderDetailByjxbz(bldh);
                tjOrderDetailService.deleteTjOrderDetailByjxbz(bldh);
                tjFlowingWaterService.deleteTjOrderDetailByjxbz(bldh);
                transitionService.deleteTjOrderDetailByjxbz(bldh);
                blService.remove(new LambdaQueryWrapper<TjProBl>().eq(TjProBl::getTjh,dto.getTjh()).eq(TjProBl::getBldh,bldh));
                blService.remove(new LambdaQueryWrapper<TjProBl>().eq(TjProBl::getTjh, dto.getTjh()).eq(TjProBl::getBldh, bldh));
            }
            return AjaxResult.success();
        }
@@ -2847,25 +2843,19 @@
    }
    @PostMapping("/addYaoPinShenQing")
    @ApiOperation(value = "药品信息申请")
    @PostMapping ("/addYaoPinShenQing")
    @ApiOperation (value = "药品信息申请")
    @Transactional
    public AjaxResult addYaoPinShenQing(@RequestBody OutpinmedicapplyDto dto){
    public AjaxResult addYaoPinShenQing(@RequestBody OutpinmedicapplyDto dto) {
        AjaxResult result = controller.Outpinmedicapply(dto);
        String result1 = getAjaxResult(result);
        JSONObject object = getJSONObject(result1);
        String code = object.getStr("ResultCode");
        if(null !=code && code.equals("200")){
        if (null != code && code.equals("200")) {
        }
        return AjaxResult.success();
    }
}
ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/LtkjExamJcbgdMapper.java
@@ -26,6 +26,6 @@
    @Select ("SELECT  a.sqdh FROM ltkj_jianchajianyan_tree a WHERE a.card_id =#{cardId} AND a.type='检查' GROUP BY a.sqdh")
    List<String> getJianJcBaoGaoDan(String cardId);
    @Select("SELECT * FROM ltkj_exam_jcbgd WHERE tmh=#{tmh}")
    @Select("SELECT * FROM ltkj_exam_jcbgd WHERE tmh=#{tmh} GROUP BY xmmc ")
    List<LtkjExamJcbgd> getJianJcBaoGaoDanList(String tmh);
}