zhaowenxuan
2025-01-02 4761f2bc70814bde9929f1081a213a9ab38a7393
ltkj-admin/src/main/java/com/ltkj/web/controller/app/ReportController.java
@@ -3,6 +3,7 @@
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -14,6 +15,11 @@
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.hosp.vodomain.ShenGaoTiZhongVo;
import com.ltkj.mall.mallOrderUtils.TjConstants;
import com.ltkj.web.config.pdfutils.PDFBinaryUtil;
import io.swagger.annotations.Api;
@@ -32,6 +38,7 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.math.BigDecimal;
import java.net.URL;
import java.util.*;
import java.util.stream.Collectors;
@@ -50,35 +57,35 @@
    @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;
    /**
     * 小程序查询体检报告列表
@@ -87,7 +94,7 @@
    @ApiOperation(value = "小程序-体检报告列表")
    public AjaxResult getReportList(String cusPhone) {
//        Wxuser wxuser = UserHoder.getWxuser();
        if (cusPhone==null){
        if (cusPhone == null) {
            return AjaxResult.error("请绑定手机号!");
        }
        List<Object> result = new ArrayList<>();
@@ -124,7 +131,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) {
@@ -166,6 +173,7 @@
        TjCustomer customer = customerService.getOne(wq22);
        LambdaQueryWrapper<TjOrderRemark> wqm = new LambdaQueryWrapper<>();
        wqm.eq(TjOrderRemark::getTjNumber, tjNumber);
        wqm.in(TjOrderRemark::getDeptId,"100", "240", "253", "254", "255", "257", "258", "259", "269", "270");
        List<TjOrderRemark> remarkList = remarkService.list(wqm);
        List<Map<String, Object>> abnormalList = new ArrayList<>();
        if (null != remarkList && remarkList.size() > 0) {
@@ -173,66 +181,64 @@
                Map<String, Object> parent = new HashMap<>();
                Map<String, Object> parent1 = new HashMap<>();
                TjProject tjProject = projectService.getById(remark.getProId());
                if (null != tjProject) {
                if (null != tjProject && tjProject.getNeedReport().equals("Y")) {
                    parent.put("parent", tjProject.getProName());
                    parent1.put("parent", tjProject.getProName());
                } else {
                    parent.put("parent", null);
                    parent1.put("parent", null);
                }
                LambdaQueryWrapper<TjProject> wq2 = new LambdaQueryWrapper<>();
                wq2.eq(TjProject::getProParentId, remark.getProId());
                List<Long> sonsTjProjectList = null;
                if (null != projectService.list(wq2) && projectService.list(wq2).size() > 0) {
                    sonsTjProjectList = projectService.list(wq2).stream().map(TjProject::getProId).collect(Collectors.toList());
                }
                if (sonsTjProjectList == null) {
                    log.info("我报空指针了::::::::::::" + remark.toString());
                    continue;
                }
                LambdaQueryWrapper<TjOrderDetail> wq = new LambdaQueryWrapper<>();
                wq.eq(TjOrderDetail::getOrderId, one.getOrderId());
                wq.in(TjOrderDetail::getProId, sonsTjProjectList);
                List<TjOrderDetail> tjOrderDetails = detailService.list(wq);
                if (null != tjOrderDetails && tjOrderDetails.size() > 0) {
                    List<TjOrderDetail> abnormals = new ArrayList<>();
                    for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
                        if (tjOrderDetail.getExceptionDesc() == 1) {
                            abnormals.add(tjOrderDetail);
                            parent1.put("abnormalList", abnormals);
                            abnormalList.add(parent1);
                        }
                        LambdaQueryWrapper<TjProject> wqqqq = new LambdaQueryWrapper<>();
                        wqqqq.eq(TjProject::getProId, tjOrderDetail.getProId());
                        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<TjProject> wq2 = new LambdaQueryWrapper<>();
                    wq2.eq(TjProject::getProParentId, remark.getProId());
                    List<Long> sonsTjProjectList = null;
                    if (null != projectService.list(wq2) && projectService.list(wq2).size() > 0) {
                        sonsTjProjectList = projectService.list(wq2).stream().map(TjProject::getProId).collect(Collectors.toList());
                    }
                    LambdaQueryWrapper<TjAdvice> wq3 = new LambdaQueryWrapper<>();
                    wq3.eq(TjAdvice::getProId, remark.getProId());
                    parent.put("sons", tjOrderDetails);
                    parent.put("parentAdvice", adviceService.list(wq3));
                    parent.put("advice", remark.getSummary());
                    list.add(parent);
                } else {
                    return AjaxResult.success("该客户在没有体检项目数据");
                    if (sonsTjProjectList == null) {
                        log.info("我报空指针了::::::::::::" + remark.toString());
                        continue;
                    }
                    LambdaQueryWrapper<TjOrderDetail> wq = new LambdaQueryWrapper<>();
                    wq.eq(TjOrderDetail::getOrderId, one.getOrderId());
                    wq.in(TjOrderDetail::getProId, sonsTjProjectList);
                    List<TjOrderDetail> tjOrderDetails = detailService.list(wq);
                    if (null != tjOrderDetails && tjOrderDetails.size() > 0) {
                        List<TjOrderDetail> abnormals = new ArrayList<>();
                        for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
                            if (tjOrderDetail.getExceptionDesc() == 1) {
                                abnormals.add(tjOrderDetail);
                                parent1.put("abnormalList", abnormals);
                                abnormalList.add(parent1);
                            }
                            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<TjAdvice> wq3 = new LambdaQueryWrapper<>();
                        wq3.eq(TjAdvice::getProId, remark.getProId());
                        parent.put("sons", tjOrderDetails);
                        parent.put("parentAdvice", adviceService.list(wq3));
                        parent.put("advice", remark.getSummary());
                        list.add(parent);
                    } else {
                        return AjaxResult.success("该客户在没有体检项目数据");
                    }
                }
            }
            objectMap.put("list", list);
@@ -240,6 +246,87 @@
            objectMap.put("tjAbnormal", abnormalList);
            objectMap.put("customter", customer);
            return AjaxResult.success(objectMap);
        }
        return AjaxResult.success("该客户在没有体检项目数据!");
    }
    @GetMapping("/getHyReportByTjNumber")
    @ApiOperation(value = "小程序-体检化验报告查询详情")
    public AjaxResult getHyReportByTjNumber(@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<LtkjHysqd> hysqdList = ltkjHysqdService.getLtkjHysqdByTjh(one.getCardId());
        if(null !=hysqdList && hysqdList.size()>0){
            List<Map<String, Object>> list = new ArrayList<>();
            for (LtkjHysqd hysqd : hysqdList) {
                Map<String, Object> map = new HashMap<>();
                map.put("parent",hysqd.getXmmc());
                List<LtkjHybgd> hybgdList = ltkjHybgdService.getJianYanBaoGaoDanList(hysqd.getTmh());
                if(null !=hybgdList && hybgdList.size()>0){
                    for (LtkjHybgd hybgd : hybgdList) {
                        String jyjg = hybgd.getJyjg();
                        String fwz = hybgd.getFwz();
                        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 + "   ↓";
                                    hybgd.setYcbz("1");
                                } else if (jyjgval.compareTo(max) > 0) {
                                    // jyjg 大于范围最大值,添加上箭头
                                    jyjg = jyjg + "   ↑";
                                    hybgd.setYcbz("1");
                                }else {
                                    hybgd.setYcbz("0");
                                }
                                hybgd.setJyjg(jyjg);
                            } catch (Exception ignored) {}
                        }
                    }
                }
                map.put("sons",hybgdList);
                list.add(map);
            }
            return AjaxResult.success(list);
        }
        return AjaxResult.success("该客户在没有体检项目数据!");
    }
    @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("该客户在没有体检项目数据!");
    }
@@ -252,8 +339,7 @@
    @GetMapping("/getShenGaoTiZhong")
    @ApiOperation(value = "小程序-体检报告查询详情")
    public AjaxResult getShenGaoTiZhong(@RequestParam @ApiParam(value = "体检号") String tjNumber) {
        Map<String, Object> objectMap = new HashMap<>();
        List<Map<String, Object>> list = new ArrayList<>();
//        Map<String, Object> objectMap = new HashMap<>();
        LambdaQueryWrapper<TjOrder> wq1 = new LambdaQueryWrapper<>();
        wq1.eq(TjOrder::getTjNumber, tjNumber);
        wq1.eq(TjOrder::getCheckStatus, 1);
@@ -262,69 +348,40 @@
            return AjaxResult.success("体检暂未完成!!");
        }
        LambdaQueryWrapper<TjOrderDetail> wq = new LambdaQueryWrapper<>();
        wq.eq(TjOrderDetail::getOrderId, one.getOrderId());
        wq.in(TjOrderDetail::getProId, "1633660948860522524");
        final TjOrderDetail one1 = detailService.getOne(wq);
        if (one1== null){
            objectMap.put("shenggao", "无");
        }else {
            objectMap.put("shenggao", one1.getProResult());
        }
        LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
        wq2.eq(TjOrderDetail::getOrderId, one.getOrderId());
        wq2.in(TjOrderDetail::getProId, "1633660948860522525");
        final TjOrderDetail one2 = detailService.getOne(wq2);
        if (one2==null){
            objectMap.put("tizhong", "无");
        }else {
            objectMap.put("tizhong", one2.getProResult());
        }
        LambdaQueryWrapper<TjOrderDetail> wq3 = new LambdaQueryWrapper<>();
        wq3.eq(TjOrderDetail::getOrderId, one.getOrderId());
        wq3.in(TjOrderDetail::getProId, "1633660948860522526");
        final TjOrderDetail one3 = detailService.getOne(wq3);
        if (one3==null){
            objectMap.put("tizhongzhishu", "无");
        }else {
            objectMap.put("tizhongzhishu", one3.getProResult());
        }
        LambdaQueryWrapper<TjOrderDetail> wq4 = new LambdaQueryWrapper<>();
        wq4.eq(TjOrderDetail::getOrderId, one.getOrderId());
        wq4.in(TjOrderDetail::getProId, "1633660948860522527");
        final TjOrderDetail one4 = detailService.getOne(wq4);
        if (one4==null){
            objectMap.put("shousuoya", "无");
        }else {
            objectMap.put("shousuoya", one4.getProResult());
        }
        LambdaQueryWrapper<TjOrderDetail> wq5 = new LambdaQueryWrapper<>();
        wq5.eq(TjOrderDetail::getOrderId, one.getOrderId());
        wq5.in(TjOrderDetail::getProId, "1633660948860522528");
        final TjOrderDetail one5 = detailService.getOne(wq5);
        if (one5==null){
            objectMap.put("shuzhangya","无");
        }else {
            objectMap.put("shuzhangya", one5.getProResult());
        }
        return AjaxResult.success(objectMap);
        List<ShenGaoTiZhongVo> maps = detailService.getShenGaoTiZhongList(one.getTjNumber());
//        if(null !=maps && maps.size()>0){
//            for (Map<String, Object> map : maps) {
//                if (map.get("") == null) {
//                    objectMap.put("shenggao", "无");
//                } else {
//                    objectMap.put("shenggao", one1.getProResult());
//                }
//                if (one2 == null) {
//                    objectMap.put("tizhong", "无");
//                } else {
//                    objectMap.put("tizhong", one2.getProResult());
//                }
//                if (one3 == null) {
//                    objectMap.put("tizhongzhishu", "无");
//                } else {
//                    objectMap.put("tizhongzhishu", one3.getProResult());
//                }
//                if (one4 == null) {
//                    objectMap.put("shousuoya", "无");
//                } else {
//                    objectMap.put("shousuoya", one4.getProResult());
//                }
//                if (one5 == null) {
//                    objectMap.put("shuzhangya", "无");
//                } else {
//                    objectMap.put("shuzhangya", one5.getProResult());
//                }
//            }
//        }
        log.info("ltkj {}的体检报告查询详情"+maps,tjNumber);
        return AjaxResult.success(maps);
    }
    /**
@@ -333,24 +390,23 @@
    @GetMapping("/downloadReport")
    @ApiOperation(value = "小程序-下载报告")
    public AjaxResult downloadReport(@RequestParam @ApiParam(value = "体检号") String tjNumber) {
        Map<String,String> res=new HashMap<>();
        Map<String, String> res = new HashMap<>();
        LambdaQueryWrapper<TjReport> we = new LambdaQueryWrapper<>();
        we.eq(TjReport::getTjNumber, tjNumber);
        we.eq(TjReport::getType, "体检报告");
        TjReport one = reportService.getOne(we);
        if ("pdf".equals(one.getPrint())){
            res.put("flag","0");
            res.put("url",one.getPath());
        if ("pdf".equals(one.getPrint())) {
            res.put("flag", "0");
            res.put("url", one.getPath());
            return AjaxResult.success(res);
        }else if ("报表".equals(one.getPrint())){
            res.put("flag","1");
            res.put("url",one.getPath());
        } else if ("报表".equals(one.getPrint())) {
            res.put("flag", "1");
            res.put("url", one.getPath());
            return AjaxResult.success(res);
        }else {
        } else {
            return AjaxResult.error("暂无体检报告");
        }
    }
    @GetMapping("/preview/{flag}/{TjNumber}")
@@ -386,9 +442,9 @@
        final String substring = uuid.toString().substring(0, 5);
//        String userId = SecurityUtils.getLoginUser().getUsername();
        PDFBinaryUtil.base64StringToPDF(one.getReport(), FileUtil.mkdir(value).getPath() + "\\"  +substring+ tjNumber + tjCustomer.getCusName() + "_体检报告.pdf");
        PDFBinaryUtil.base64StringToPDF(one.getReport(), FileUtil.mkdir(value).getPath() + File.separator + substring + tjNumber + tjCustomer.getCusName() + "_体检报告.pdf");
        //String filePath = one.getPath();
        String filePath = value + "\\"  +substring + tjNumber + tjCustomer.getCusName() + "_体检报告.pdf";
        String filePath = value + File.separator + substring + tjNumber + tjCustomer.getCusName() + "_体检报告.pdf";
        File f = new File(filePath);
        if (filePath.isEmpty()) {
            System.out.println("文件不存在!");
@@ -410,13 +466,13 @@
                String contentType = u.openConnection().getContentType();
                response.setContentType(contentType);
                response.setHeader("Content-Disposition", "inline;filename="
                        +substring+ tjNumber + ".pdf");
                        + substring + tjNumber + ".pdf");
            } else {
                // 纯下载方式
                response.setContentType("application/x-msdownload");
                response.setContentType("application/pdf;charset=utf-8");
                response.setHeader("Content-Disposition", "attachment;filename="
                        +substring+ tjNumber + ".pdf");
                        + substring + tjNumber + ".pdf");
            }
            out = response.getOutputStream();
            while ((len = br.read(bs)) > 0) {
@@ -442,7 +498,6 @@
            }
        }
    }
    /**