zjh
2024-07-09 e37740bcaa6a0dfdef6e082e4d8136b81d453000
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReportController.java
@@ -6,6 +6,7 @@
import java.nio.file.Files;
import java.nio.file.Paths;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.List;
import java.util.stream.Collectors;
@@ -38,6 +39,7 @@
import com.ltkj.web.config.pdfutils.MyHeaderFooter;
import com.ltkj.web.config.pdfutils.PDFBinaryUtil;
import com.ltkj.web.config.pdfutils.PdfUtils;
import com.ltkj.web.controller.his.HisPDFUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@@ -100,6 +102,8 @@
    @Autowired
    private ITjBigPositiveService tjBigPositiveService;
    @Autowired
    private HisPDFUtil hisPDFUtil;
    @GetMapping("/savePdf")
    @ApiOperation(value = "从本地存储模板到数据库")
@@ -287,15 +291,112 @@
//        remarkVo.setProId("1633660948860522555");
//        updateOrderRemarkVos.add(remarkVo);
//        tjCheckController.checkUpdateOrderRemark(updateOrderRemarkVos);
        System.out.println("---------------------------------------newFun开始--------------------------------------------------");
        error = newFun(tjNumber);
        System.out.println("-------------------------------------------结束----------------------------------------------");
//        System.out.println("---------------------------------------newFun开始--------------------------------------------------");
        // 以前测试pdf方法
//        error = newFun(tjNumber);
//        System.out.println("-------------------------------------------结束----------------------------------------------");
        // 撤销
//        revocationReport(tjNumber);
        if (error != null) {
            return error;
//        if (error != null) {
//            return error;
//        }
//        return AjaxResult.success("该用户体检未完成,不能打印报告!!!");
        int num = tjOrderRemarkService.getTjYqOrderRemarkByTjNum(tjNumber);
        if (num > 0) {
            return AjaxResult.error("有延期项目暂不能生成报告!!!");
        }
        return AjaxResult.success("该用户体检未完成,不能打印报告!!!");
        //判断表中有没有该体检报告  不能重复生成
        LambdaQueryWrapper<TjReport> wqa = new LambdaQueryWrapper<>();
        wqa.eq(TjReport::getTjNumber, tjNumber);
        wqa.eq(TjReport::getType, "体检报告");
        Integer count = tjReportService.getSelectCount(wqa);
        if (count != 0) {
            return AjaxResult.error("该客户报告已生成!不能重复生成!可直接预览或打印!");
        }
//        String configByKey = configService.selectConfigByKey("sfkqdyhis");
        String configByKey = "Y";
        LambdaQueryWrapper<TjOrder> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(TjOrder::getTjNumber, tjNumber);
        TjOrder tjOrder = tjOrderService.getOne(queryWrapper);
        if (null != tjOrder) {
            LambdaQueryWrapper<TjReportTemplate> tjReportTemplateLambdaQueryWrapper = new LambdaQueryWrapper<>();
            TjReportTemplate reportTemplate = null;
            if (tjOrder.getTjCategory() != null) {
                //查询字典
                LambdaQueryWrapper<SysDictData> wqq = new LambdaQueryWrapper<>();
                wqq.eq(SysDictData::getDictType, "dict_tjtype");
                wqq.eq(SysDictData::getDictValue, tjOrder.getTjCategory());
                SysDictData one = dictDataService.getOne(wqq);
                if (one != null) {
                    //查询字典
                    LambdaQueryWrapper<SysDictData> wqq1 = new LambdaQueryWrapper<>();
                    wqq1.eq(SysDictData::getDictType, "report_template_type");
                    wqq1.eq(SysDictData::getDictLabel, one.getDictLabel());
                    SysDictData one1 = dictDataService.getOne(wqq1);
                    if (one1 != null) {
                        tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, one1.getDictValue());
                    } else {
                        tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, 1);
                    }
                } else {
                    tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getFlag, 1);
                }
                tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getOpen, 0);
                reportTemplate = reportTemplateService.getOne(tjReportTemplateLambdaQueryWrapper);
            } else {
                tjReportTemplateLambdaQueryWrapper.eq(TjReportTemplate::getOpen, 0);
                reportTemplate = reportTemplateService.list(tjReportTemplateLambdaQueryWrapper).get(2);
            }
            Integer checkStatus = tjOrder.getCheckStatus();
            if (checkStatus == 1) {
                if ("报表".equals(reportTemplate.getPrint())) {
                    TjReport tjReport = new TjReport();
                    tjReport.setTjNumber(String.valueOf(tjNumber));
                    tjReport.setPath(reportTemplate.getUrl() + "?tjNum=" + tjNumber);
                    tjReport.setType("体检报告");
                    tjReport.setPrint("报表");
                    tjReportService.save(tjReport);
                    //修改order表中的打印报告时间为当前时间
                    LambdaUpdateWrapper<TjOrder> updateWrapper = new LambdaUpdateWrapper<>();
                    updateWrapper.eq(TjOrder::getTjNumber, tjNumber);
                    updateWrapper.set(TjOrder::getReportTime, new Date());
                    updateWrapper.set(TjOrder::getPrintLastTime, new Date());
                    updateWrapper.set(TjOrder::getDownloadLastTime, new Date());
                    updateWrapper.set(TjOrder::getStatus, TjConstants.TJ_END);
                    tjOrderService.update(updateWrapper);
                    return AjaxResult.success("已生成报告!可直接点击预览!");
                }
                String hisRegistrationId = tjOrder.getCardId();
                Date createTime = tjOrder.getCreateTime();
                Date finishTime = tjOrder.getFinishTime();
                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                String ksrq = dateFormat.format(createTime);
                String jsrq = dateFormat.format(new Date());
                HashMap<String, Object> params = new HashMap<>();
                params.put("his_registration_id", hisRegistrationId);
                params.put("ksbm", "");
                params.put("pationid", "");
                params.put("ksrq", ksrq);
                params.put("jsrq", jsrq);
                params.put("pagecount", 100);
                params.put("page", 1);
                HashMap<String, Object> map = new HashMap<>();
                LambdaQueryWrapper<TjCustomer> wq1 = new LambdaQueryWrapper<>();
                wq1.eq(TjCustomer::getCusId, tjOrder.getUserId());
                TjCustomer tjCustomer = tjCustomerService.getOne(wq1);
//                    return hisPDFUtil.execHisRequest(map, params, tjOrder, reportTemplate);
                try {
                    return hisPDFUtil.hisPDF(tjOrder,tjCustomer,reportTemplate);
                } catch (DocumentException e) {
                    logger.error("生成报告异常");
                    e.printStackTrace();
                    return AjaxResult.error("生成报告异常");
                }
            } else {
                return AjaxResult.error("请先总检");
            }
        }
        return AjaxResult.error();
    }
    private AjaxResult newFun(String tjNumber) {
@@ -1259,7 +1360,7 @@
                    e.printStackTrace();
                    return AjaxResult.success("PDF导出失败");
                } finally {
                    transitionService.deletedTbTransitionListByCusIdAndTjNum(tjCustomer.getCusIdcard(), tjOrder.getCardId());
//                    transitionService.deletedTbTransitionListByCusIdAndTjNum(tjCustomer.getCusIdcard(), tjOrder.getCardId());
                }
            }
        }
@@ -1332,7 +1433,7 @@
//        wq.ne(TjOrderDetail::getTjStatus, 0);
//        wq.eq(TjOrderDetail::getProId,projectService.getHuaYanProId());
//        List<TjOrderDetail> tjOrderDetails = tjOrderDetailService.list(wq);
        List<TjOrderDetail> tjOrderDetails = tjOrderDetailService.addHuaYanTable(tjNumber);
        List<TjOrderDetail> tjOrderDetails = tjOrderDetailService.addHuaYanAndCgTable(tjNumber);
        //遍历体检记录 将项目的具体信息
        //遍历客户所选的项目(包含子项父项)
//        for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
@@ -1349,7 +1450,7 @@
//        wqq.eq(TjOrderRemark::getTjNumber, tjNumber);
//        wqq.eq(TjOrderRemark::getDeptId,"241");
//        List<TjOrderRemark> tjOrderRemarks = tjOrderRemarkService.list(wqq);
        List<TjOrderRemark> tjOrderRemarks = tjOrderRemarkService.addHuaYanTable(tjNumber);
        List<TjOrderRemark> tjOrderRemarks = tjOrderRemarkService.addHuaYanAndCgTable(tjNumber);
        for (TjOrderRemark tjOrderRemark : tjOrderRemarks) {
            printReport.put(tjOrderRemark, null);
        }
@@ -1357,7 +1458,7 @@
        for (Map.Entry<TjOrderRemark, List<TjPdfVO>> entry : printReport.entrySet()) {
            List<TjPdfVO> tjPdfVOS = new ArrayList<>();
            for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
                if (entry.getKey().getProId().equals(tjOrderDetail.getProId())) {
                if (entry.getKey().getProsId().equals(tjOrderDetail.getProsId())) {
                    TjPdfVO tjPdfVO = new TjPdfVO();
                    tjPdfVO.setProName(tjOrderDetail.getProName());
                    if (null != tjOrderDetail.getYcbz() && !tjOrderDetail.getYcbz().equals("")) {