9个文件已修改
1个文件已添加
608 ■■■■ 已修改文件
ltkj-admin/src/main/java/com/ltkj/web/config/captcha/CommonController.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/ProfileuploadController.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/api/DefaultController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java 482 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/resources/application-dev.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/resources/application-prod.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-framework/src/main/java/com/ltkj/framework/config/SecurityConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-framework/src/main/java/com/ltkj/framework/config/WebConfig.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/domain/SysAttachment.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/resources/mapper/hosp/SysAttachmentMapper.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/config/captcha/CommonController.java
@@ -9,6 +9,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ltkj.common.core.domain.R;
import com.ltkj.common.core.domain.entity.SysDictData;
@@ -16,6 +17,7 @@
import com.ltkj.common.utils.uuid.UUID;
import com.ltkj.hosp.domain.SysAttachment;
import com.ltkj.hosp.service.ISysAttachmentService;
import com.ltkj.system.service.ISysConfigService;
import com.ltkj.system.service.ISysDictDataService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -66,6 +68,8 @@
    private ISysAttachmentService sysAttachmentService;
    @Autowired
    private ISysDictDataService sysDictDataService;
    @Autowired
    private ISysConfigService sysConfigService;
    /**
@@ -150,9 +154,19 @@
    @PostMapping("/uploadImgExe")
    @ApiOperation(value = "EXE程序循环读取图片上传")
    public AjaxResult uploadImgExe(@RequestPart("file") MultipartFile file,@RequestParam("val")String dictVal,@RequestParam("ip")String ip){
        if (StrUtil.isBlank(dictVal))
            return AjaxResult.error("类型不能为空");
        try {
            String exeimgsaveurl = sysConfigService.selectConfigByKey("exeimgsaveurl");
            String filePath;
            if (StrUtil.isNotBlank(exeimgsaveurl)){
                filePath = exeimgsaveurl;
            }else {
                filePath = ltkjConfig.getUploadPath();
            }
            // 上传文件路径
            String filePath = ltkjConfig.getUploadPath();
            filePath+="/"+dictVal;
            // 上传并返回新文件名称
            String fileName = FileUploadUtils.upload(filePath, file);
            String url = serverConfig.getUrl() + fileName;
@@ -164,9 +178,10 @@
            ajax.put("newFileName", newFileName);
            ajax.put("originalFilename", file.getOriginalFilename());
            SysAttachment sysAttachment = new SysAttachment();
            sysAttachment.setOldFileName(file.getOriginalFilename());
            sysAttachment.setId(SnowFlake.getInstance().nextId());
            sysAttachment.setFileName(newFileName);
            sysAttachment.setFilePath(fileName);
            sysAttachment.setFilePath(ltkjConfig.getUploadPath()+fileName.replace("/profileupload",""));
            sysAttachment.setUrl(url);
            sysAttachment.setSysDictVal(dictVal);
            sysAttachment.setIp(ip);
ltkj-admin/src/main/java/com/ltkj/web/controller/ProfileuploadController.java
New file
@@ -0,0 +1,53 @@
package com.ltkj.web.controller;
import com.ltkj.common.config.ltkjConfig;
import io.lettuce.core.dynamic.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.net.MalformedURLException;
import java.nio.file.Path;
import java.nio.file.Paths;
/**
 * @Company: 西安路泰科技有限公司
 * @Author: zhaowenxuan
 * @Date: 2025/4/27 18:03
 */
@RestController
@RequestMapping("/profileupload")
public class ProfileuploadController {
    @GetMapping("/{type}/{year}/{month}/{day}/{filename:.+}")
    public ResponseEntity<Resource> getFile(
            @PathVariable String type,
            @PathVariable String year,
            @PathVariable String month,
            @PathVariable String day,
            @PathVariable String filename) {
        try {
            // 拼接完整路径
            Path filePath = Paths.get(ltkjConfig.getUploadPath(),type, year, month, day, filename);
            Resource resource = new UrlResource(filePath.toUri());
            if (!resource.exists()) {
                return ResponseEntity.notFound().build();
            }
            return ResponseEntity.ok()
                    .header(HttpHeaders.CONTENT_DISPOSITION, "inline; filename=\"" + resource.getFilename() + "\"")
                    .contentType(MediaType.IMAGE_JPEG) // 这里默认图片是jpg,如果有别的类型可以加判断
                    .body(resource);
        } catch (MalformedURLException e) {
            return ResponseEntity.badRequest().build();
        }
    }
}
ltkj-admin/src/main/java/com/ltkj/web/controller/api/DefaultController.java
@@ -3,8 +3,11 @@
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ltkj.common.core.domain.AjaxResult;
import com.ltkj.hosp.domain.TjOrder;
import com.ltkj.hosp.mapper.TjCustomerMapper;
import com.ltkj.hosp.service.ITjOrderService;
import com.ltkj.web.controller.system.TjCheckController;
import com.ltkj.web.controller.system.TjReportController;
import org.springframework.beans.factory.annotation.Autowired;
@@ -34,6 +37,8 @@
    private TjCheckController tjCheckController;
    @Autowired
    private TjCustomerMapper tjCustomerMapper;
    @Autowired
    private ITjOrderService tjOrderService;
    /**
     * 提供给三方调用的报告查看接口
@@ -44,6 +49,13 @@
    public void viewReport(HttpServletResponse response, @RequestBody String json) throws IOException {
        JSONObject entries = JSONUtil.parseObj(json);
        String tjNum = entries.getStr("tjNum");
        LambdaQueryWrapper<TjOrder> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(TjOrder::getHeshouStatus,1);
        wrapper.eq(TjOrder::getTjNumber,tjNum);
        List<TjOrder> list = tjOrderService.list(wrapper);
        if (list.isEmpty()){
            return;
        }
        tjReportController.preview(response,true,tjNum);
    }
@@ -55,6 +67,13 @@
    @PostMapping("/reportData")
    public AjaxResult reportData(@RequestBody String json){
        String tjNum = JSONUtil.parseObj(json).getStr("tjNum");
        LambdaQueryWrapper<TjOrder> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(TjOrder::getHeshouStatus,1);
        wrapper.eq(TjOrder::getTjNumber,tjNum);
        List<TjOrder> list = tjOrderService.list(wrapper);
        if (list.isEmpty()){
            return AjaxResult.error("暂无数据!!");
        }
        JSONObject entries = JSONUtil.parseObj(tjCheckController.updateCheckType(tjNum));
        removeNullFields(entries);
        return JSONUtil.toBean(entries, AjaxResult.class);
ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java
@@ -46,6 +46,9 @@
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.Collator;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -119,6 +122,8 @@
    private ITjProAdvicerulesService tjProAdvicerulesService;
    @Autowired
    private TjOrderYcxmService ycxmService;
    @Resource
    private TjXdtgmdjgService xdtgmdjgService;
    private Integer pdfPage = 0;
@@ -1049,102 +1054,6 @@
                }
            }
        }
        /*else {
            if (!collect.isEmpty() || !map.isEmpty()){
                paragraph = PdfUtils.setParagraph(defaultTitleFont, "检查综述:");
                paragraph.setSpacingBefore(3f);
                paragraph.setSpacingAfter(2f);
                document2.add(paragraph);
                isBr = true;
            }
            for (Map.Entry<String, List<CsProVo>> deptEntry : listMap.entrySet()) {
                List<CsProVo> proVos = deptEntry.getValue();
                if (proVos.size() > 1) {
                    proVos = proVos.stream()
                            .sorted(Comparator.comparingLong(CsProVo::getProId))
                            .collect(Collectors.toList());
                }
                // 已经遍历过的
                ArrayList<String> jianYanYiDa = new ArrayList<>();
                for (CsProVo proVo : proVos) {
                    // 检查
                    for (Map.Entry<Long, List<TjOrderDetail>> entry : collect.entrySet()) {
                        if (!entry.getKey().equals(proVo.getProId())) continue;
                        List<TjOrderDetail> details = entry.getValue();
                        String xmmc = proVo.getProName();
//                    String xmmc = details.get(0).getProName();
                        boolean isXmWrite = false;
                        int index = 1;
                        for (TjOrderDetail detail : details) {
//                        if (!entry.getKey().equals(detail.getProId())) continue;
                            if (!isXmWrite) {
                                paragraph = new Paragraph(xmXh + ".  " + xmmc, defaultFont);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                document2.add(paragraph);
                                isXmWrite = true;
                            }
                            String result = detail.getProResult();
                            if (StrUtil.isNotBlank(result)) {
                                result = result.replaceAll("本报告仅对本次检查负责,临床医生依据病情如有疑问,请及时复查或进一步检查", "");
                                StringBuilder builder = new StringBuilder();
                                if (StrUtil.isBlank(result.replaceAll("\n", "").trim())) continue;
                                builder.append("    (").append(index).append(")").append(detail.getProName()).append(": ").append(result).append("\n");
                                index++;
                                result = builder.toString();
                            }
                            paragraph = new Paragraph(result, defaultFont);
                            paragraph.setAlignment(Element.ALIGN_LEFT);
                            document2.add(paragraph);
                        }
                        if (isXmWrite) {
                            paragraph = PdfUtils.setParagraph(defaultFont, "");
                            paragraph.setLeading(0f);
                            paragraph.setSpacingBefore(0f);
                            paragraph.setSpacingAfter(5f);
                            document2.add(paragraph);
                            xmXh++;
                        }
                    }
                    // 检验
                    for (Map.Entry<String, Object> item : map.entrySet()) {
                        String xmmc = item.getKey();
                        HashMap<String, Object> entryValue = (HashMap<String, Object>) item.getValue();
                        ArrayList<List<String>> lists = (ArrayList<List<String>>) entryValue.get("data");
                        boolean isXmWrite = false;
                        int index = 1;
                        for (List<String> i : lists) {
                            if (!i.get(6).contains(String.valueOf(proVo.getProId()))) continue;
                            if (i.contains("↓") || i.contains("↑")) {
                                if (jianYanYiDa.contains(i.get(5))) continue;
                                jianYanYiDa.add(i.get(5));
                                if (!isXmWrite) {
                                    paragraph = new Paragraph(xmXh + ".  " + xmmc, defaultFont);
                                    paragraph.setAlignment(Element.ALIGN_LEFT);
                                    document2.add(paragraph);
                                    isXmWrite = true;
                                }
                                String content = "    (" + index + ") " + i.get(0) + ":" + i.get(1) + "  " + i.get(3) + "  " + i.get(4) + "      " + i.get(2);
                                paragraph = new Paragraph(content, defaultFont);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                document2.add(paragraph);
                                index++;
                            }
                        }
                        if (isXmWrite) {
                            paragraph = PdfUtils.setParagraph(defaultFont, "");
                            paragraph.setSpacingBefore(0f);
                            paragraph.setSpacingAfter(5f);
                            document2.add(paragraph);
                            xmXh++;
                        }
                    }
                }
            }
        }*/
        if(isBr) {
            paragraph = PdfUtils.setParagraph(defaultFont, "");
@@ -1236,348 +1145,8 @@
                }
            }
            /*for (Map.Entry<String, List<CsProVo>> deptEntry : listMap.entrySet()) {
                List<CsProVo> proVos = deptEntry.getValue();
                if (proVos.size() > 1) {
                    proVos = proVos.stream()
                            .sorted(Comparator.comparingLong(CsProVo::getProId))
                            .collect(Collectors.toList());
                }
                ArrayList<String> jianYanYiDa = new ArrayList<>();
                for (CsProVo proVo : proVos) {
                    // 检查
                    for (Map.Entry<Long, List<TjOrderDetail>> entry : collect.entrySet()) {
                        if (!entry.getKey().equals(proVo.getProId())) continue;
                        List<TjOrderDetail> details = entry.getValue();
                        if(null !=details && !details.isEmpty()){
                             details= details.stream()
                                     .sorted(Comparator.comparing(TjOrderDetail::getProName))
                                    .collect(Collectors.toList());
                            boolean isXmWrite = false;
                            int index = 1;
                            int index1 = 1;
                            for (TjOrderDetail detail : details) {
                                String xmmc = proVo.getProName();
//                                String xmmc = detail.getProName();
                                if (!isXmWrite) {
                                    xmXh++;
                                    paragraph = new Paragraph("【" + xmXh + "." + xmmc + "】", defaultFont);
                                    paragraph.setAlignment(Element.ALIGN_LEFT);
                                    document2.add(paragraph);
                                    isXmWrite = true;
                                }
                                String result = detail.getProResult();
                                if (StrUtil.isNotBlank(result)) {
                                    StringBuilder builder = new StringBuilder();
//                                    String[] split = result.split("\n");
//                                    for (String s : split) {
//                                        if (StrUtil.isBlank(s.replaceAll("\n", "").trim())) continue;
//                                        builder.append("    (").append(index1).append(")").append(s).append("\n");
//                                        index1++;
//                                    }
                                        if (StrUtil.isBlank(result.replaceAll("\n", "").trim())) continue;
                                        builder.append("    (").append(index1).append(")").append(detail.getProName()).append(": ").append(result).append("\n");
                                        index1++;
                                    result = builder.toString();
                                }
                                if (StrUtil.isNotBlank(result)) {
                                    paragraph = new Paragraph(result, defaultFont);
                                    paragraph.setAlignment(Element.ALIGN_LEFT);
                                    document2.add(paragraph);
                                } else {
                                    paragraph = new Paragraph("建议定期复查", defaultFont);
                                    paragraph.setAlignment(Element.ALIGN_LEFT);
                                    document2.add(paragraph);
                                }
                                String str = "     ";
                                List<Map<String, Object>> maps = new ArrayList<>();
                                LambdaQueryWrapper<TjOrderYcxm> ycwq=new LambdaQueryWrapper<>();
                                ycwq.eq(TjOrderYcxm::getTjh,tjOrder.getTjNumber());
                                ycwq.eq(TjOrderYcxm::getJcxm,detail.getProName());
                                TjOrderYcxm ycxm = ycxmService.getOne(ycwq);
                                if(null !=ycxm){
                                    String jynr = ycxm.getJynr();
                                    JSONArray array = JSONUtil.parseArray(jynr);
                                    for (Object object : array) {
                                        Map<String,Object> objectMap=new HashMap<>();
                                        JSONObject jsonObject = (JSONObject) object;
                                        String bt = jsonObject.getStr("bt");
                                        String nr = jsonObject.getStr("nr");
                                        objectMap.put("bt",bt);
                                        objectMap.put("nr",nr);
                                        if(null !=bt || null !=nr) maps.add(objectMap);
                                    }
                                    List<Map<String, Object>> collect1 = maps.stream().distinct().collect(Collectors.toList());
                                    for (Map<String, Object> objectMap : collect1) {
                                        String content = str + objectMap.get("bt").toString() + objectMap.get("nr").toString();
                                        if (StrUtil.isBlank(content)) content = "     ";
                                        paragraph = new Paragraph(content, defaultFont);
                                        paragraph.setAlignment(Element.ALIGN_LEFT);
                                        document2.add(paragraph);
                                    }
                                }
                                index++;
                                paragraph = PdfUtils.setParagraph(defaultFont, "");
                                paragraph.setLeading(0f);
                                paragraph.setSpacingBefore(0f);
                                paragraph.setSpacingAfter(5f);
                                document2.add(paragraph);
                            }
                        }
                    }
                    // 检验
                    for (Map.Entry<String, Object> item : map.entrySet()) {
                        String xmmc = item.getKey();
                        HashMap<String, Object> entryValue = (HashMap<String, Object>) item.getValue();
                        ArrayList<List<String>> lists = (ArrayList<List<String>>) entryValue.get("data");
                        boolean isXmWrite = false;
                        int index = 1;
                        for (List<String> i : lists) {
                            if (!i.get(6).contains(String.valueOf(proVo.getProId()))) continue;
                            if (i.contains("↓") || i.contains("↑")) {
                                if (jianYanYiDa.contains(i.get(5))) continue;
                                jianYanYiDa.add(i.get(5));
                                if (!isXmWrite) {
                                    xmXh++;
                                    paragraph = new Paragraph("【" + xmXh + "." + xmmc + "】", defaultFont);
                                    paragraph.setAlignment(Element.ALIGN_LEFT);
                                    document2.add(paragraph);
                                    isXmWrite = true;
                                }
                                String content = "    (" + index + ")" + i.get(0) + ":" + i.get(1) + "  " + i.get(3) + "  " + i.get(4) + "  " + i.get(2);
                                paragraph = new Paragraph(content, defaultFont);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                document2.add(paragraph);
                                String str = "    ";
                                LambdaQueryWrapper<TjOrderYcxm> ycwq=new LambdaQueryWrapper<>();
                                ycwq.eq(TjOrderYcxm::getTjh,tjOrder.getTjNumber());
                                ycwq.eq(TjOrderYcxm::getJcxm,i.get(0));
                                TjOrderYcxm ycxm = ycxmService.getOne(ycwq);
                                if(null !=ycxm){
                                    String jynr = ycxm.getJynr();
                                    JSONArray array = JSONUtil.parseArray(jynr);
                                    for (Object object : array) {
                                        JSONObject jsonObject = (JSONObject) object;
                                        String bt = jsonObject.getStr("bt");
                                        String nr = jsonObject.getStr("nr");
                                        if(null !=bt || null !=nr) {
                                            String content1 = str + bt + nr;
                                            if (StrUtil.isBlank(content)) content1 = "     ";
                                            paragraph = new Paragraph(content1, defaultFont);
                                        }
                                        paragraph.setAlignment(Element.ALIGN_LEFT);
                                        document2.add(paragraph);
                                    }
                                    paragraph = PdfUtils.setParagraph(defaultFont, "");
                                    paragraph.setSpacingBefore(2f);
                                    paragraph.setSpacingAfter(5f);
                                    document2.add(paragraph);
                                    index++;
                                }
                            }
                        }
                        if (isXmWrite) {
                            paragraph = PdfUtils.setParagraph(defaultFont, "");
                            paragraph.setSpacingBefore(0f);
                            paragraph.setSpacingAfter(5f);
                            document2.add(paragraph);
                        }
                    }
                }
            }*/
        }
        /** else {
            if (!collect.isEmpty() || !map.isEmpty()){
                paragraph = PdfUtils.setParagraph(defaultTitleFont, "医生建议:");
                paragraph.setSpacingBefore(3f);
                paragraph.setSpacingAfter(2f);
                document2.add(paragraph);
            }
            for (Map.Entry<String, List<CsProVo>> deptEntry : listMap.entrySet()) {
                List<CsProVo> proVos = deptEntry.getValue();
                if (proVos.size() > 1) {
                    proVos = proVos.stream()
                            .sorted(Comparator.comparingLong(CsProVo::getProId))
                            .collect(Collectors.toList());
                }
                ArrayList<String> jianYanYiDa = new ArrayList<>();
                for (CsProVo proVo : proVos) {
                    // 检查
                    for (Map.Entry<Long, List<TjOrderDetail>> entry : collect.entrySet()) {
                        if (!entry.getKey().equals(proVo.getProId())) continue;
                        List<TjOrderDetail> details = entry.getValue();
                        String xmmc = details.get(0).getProName();
                        boolean isXmWrite = false;
                        int index = 1;
                        for (TjOrderDetail detail : details) {
                            if (!isXmWrite) {
                                xmXh++;
                                paragraph = new Paragraph("【" + xmXh + "." + xmmc + "】", defaultFont);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                document2.add(paragraph);
                                isXmWrite = true;
                            }
                            String result = detail.getProResult();
                            if (StrUtil.isNotBlank(result)) {
//                    result = result.replaceAll(" ","").replaceAll("\t","");
//                    result = result.replaceAll("\n本报告仅对本次检查负责,临床医生依据病情如有疑问,请及时复查或进一步检查", "");
//                    result = "\n      " + result.replaceAll("\n", "\n      ");
                                int index1 = 1;
                                String[] split = result.split("\n");
//                            boolean contains = result.contains("本报告仅对本次检查负责,临床医生依据病情如有疑问,请及时复查或进一步检查");
                                boolean contains = result.contains(" ");
                                StringBuilder builder = new StringBuilder();
                                for (String s : split) {
                                    if (StrUtil.isBlank(s.replaceAll("\n", "").trim())) continue;
                                    builder.append("    (").append(index1).append(")").append(s).append("\n");
                                    index1++;
                                }
//                            if (!contains) builder.append("    (").append(index1).append(")").append("本报告仅对本次检查负责,临床医生依据病情如有疑问,请及时复查或进一步检查");
//                            if (!contains) builder.append("    (").append(index1).append(")").append(" ");
//                            else builder.substring(0,builder.length() - 1);
                                result = builder.toString();
                            }
//                String content = "  (" + index + ") " + detail.getProName() + ":" + result;
//                content = content.replaceAll("[\\n\\r]+$", "");
//                content = content.replaceAll("\\s+$", "");
//                paragraph = new Paragraph(content, defaultFont);
                            if (StrUtil.isNotBlank(result)) {
                                paragraph = new Paragraph(result, defaultFont);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                document2.add(paragraph);
                            } else {
                                paragraph = new Paragraph("建议定期复查", defaultFont);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                document2.add(paragraph);
                            }
                            String str = "     ";
//                        List<Map<String, Object>> maps = tjRulesService.getyichangxiangmujianyiguize(entry.getKey().toString(),"",
//                                detail.getYcbz(),tjOrder.getTjNumber(),detail.getProName().replaceAll("[((][^))]*[))]", "")
//                                        .replaceAll("[ 测定检测]",""),detail.getProResult());
                            List<Map<String, Object>> maps = new ArrayList<>();
                            if (detail.getDeptId().equals("2")) {
                                String[] split = result.split("。|,|,");
                                for (String s : split) {
                                    s = s.replaceAll("\n", "").replaceAll("[((][^))]*[))]", "");
//                                Map<String,Object> mapss= tjRulesService.getyichangxiangmujianyiguizeJianCha(s);
                                    Map<String, Object> mapss = tjProAdvicerulesService.getyichangxiangmujianyiguizeJianCha(detail.getKs(), s, "0");
                                    if (null != mapss) {
                                        Object bt = mapss.get("bt");
                                        Object nr = mapss.get("nr");
                                        if (null != bt && null != nr) maps.add(mapss);
                                    }
                                }
                            }
                            List<Map<String, Object>> collect1 = maps.stream().distinct().collect(Collectors.toList());
                            for (Map<String, Object> objectMap : collect1) {
                                String content = str + objectMap.get("bt").toString() + objectMap.get("nr").toString();
//                            if (StrUtil.isBlank(content)) content = "     本报告仅对本次检查负责,临床医生依据病情如有疑问,请及时复查或进一步检查";
                                if (StrUtil.isBlank(content)) content = "     ";
                                paragraph = new Paragraph(content, defaultFont);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                document2.add(paragraph);
                            }
                            index++;
                            paragraph = PdfUtils.setParagraph(defaultFont, "");
                            paragraph.setLeading(0f);
                            paragraph.setSpacingBefore(0f);
                            paragraph.setSpacingAfter(5f);
                            document2.add(paragraph);
                        }
                    }
                    // 检验
                    for (Map.Entry<String, Object> item : map.entrySet()) {
                        String xmmc = item.getKey();
                        HashMap<String, Object> entryValue = (HashMap<String, Object>) item.getValue();
                        ArrayList<List<String>> lists = (ArrayList<List<String>>) entryValue.get("data");
                        boolean isXmWrite = false;
                        int index = 1;
                        for (List<String> i : lists) {
                            if (!i.get(6).contains(String.valueOf(proVo.getProId()))) continue;
                            if (i.contains("↓") || i.contains("↑")) {
                                if (jianYanYiDa.contains(i.get(5))) continue;
                                jianYanYiDa.add(i.get(5));
                                if (!isXmWrite) {
                                    xmXh++;
                                    paragraph = new Paragraph("【" + xmXh + "." + xmmc + "】", defaultFont);
                                    paragraph.setAlignment(Element.ALIGN_LEFT);
                                    document2.add(paragraph);
                                    isXmWrite = true;
                                }
                                String content = "    (" + index + ")" + i.get(0) + ":" + i.get(1) + "  " + i.get(3) + "  " + i.get(4) + "  " + i.get(2);
                                paragraph = new Paragraph(content, defaultFont);
                                paragraph.setAlignment(Element.ALIGN_LEFT);
                                document2.add(paragraph);
                                // 第六位是lis项目id
//                    LambdaQueryWrapper<TjProject> wrapper = new LambdaQueryWrapper<>();
//                    wrapper.eq(TjProject::getLisXmbm,i.get(5));
//                    TjProject project = projectService.getOne(wrapper);
//                    if (project != null) {
//                        LambdaQueryWrapper<TjRules> queryWrapper = new LambdaQueryWrapper<>();
//                        queryWrapper.eq(TjRules::getProId,project.getProId());
//                        List<TjRules> rules = tjRulesService.list(queryWrapper);
//                        if (!rules.isEmpty()){
//
//                        }
                                String str = "    ";
                                List<Map<String, Object>> maps = tjRulesService.getyichangxiangmujianyiguize(i.get(5), "",
                                        i.get(2), tjOrder.getTjNumber(), i.get(0).replaceAll("[((][^))]*[))]", "")
                                                .replaceAll("[ 测定检测]", ""), i.get(1));
                                if (!maps.isEmpty()) {
                                    for (Map<String, Object> objectMap : maps) {
//                                paragraph = new Paragraph(str+"建议标题",defaultFont);
//                                paragraph.setAlignment(Element.ALIGN_LEFT);
//                                document2.add(paragraph);
//
//                                paragraph = new Paragraph(str+objectMap.get("bt").toString(),defaultFont);
//                                paragraph.setAlignment(Element.ALIGN_LEFT);
//                                document2.add(paragraph);
//
//                                paragraph = new Paragraph(str+"建议内容",defaultFont);
//                                paragraph.setAlignment(Element.ALIGN_LEFT);
//                                document2.add(paragraph);
//
//                                paragraph = new Paragraph(str+objectMap.get("nr").toString(),defaultFont);
//                                paragraph.setAlignment(Element.ALIGN_LEFT);
//                                document2.add(paragraph);
                                        Object bt = objectMap.get("bt");
                                        Object nr = objectMap.get("nr");
                                        if (null != bt && null != nr) {
                                            String content1 = str + bt.toString() + nr.toString().trim();
                                            if (StrUtil.isBlank(content)) content1 = "     ";
                                            paragraph = new Paragraph(content1, defaultFont);
                                        }
//                                    if (StrUtil.isBlank(content)) content1 = "     本报告仅对本次检查负责,临床医生依据病情如有疑问,请及时复查或进一步检查";
                                        paragraph.setAlignment(Element.ALIGN_LEFT);
                                        document2.add(paragraph);
                                    }
                                    paragraph = PdfUtils.setParagraph(defaultFont, "");
                                    paragraph.setSpacingBefore(2f);
                                    paragraph.setSpacingAfter(5f);
                                    document2.add(paragraph);
                                }
//                    }
                                index++;
                            }
                        }
                        if (isXmWrite) {
                            paragraph = PdfUtils.setParagraph(defaultFont, "");
                            paragraph.setSpacingBefore(0f);
                            paragraph.setSpacingAfter(5f);
                            document2.add(paragraph);
                        }
                    }
                }
            }
        }
        */
        for (int i = 0; i < 1; i++) {
            paragraph = PdfUtils.setParagraph(defaultFont, "");
@@ -1771,6 +1340,47 @@
            log.error(String.valueOf(e));
            return AjaxResult.error();
        }
        LambdaQueryWrapper<TjXdtgmdjg> wqq=new LambdaQueryWrapper<>();
        wqq.eq(TjXdtgmdjg::getTjh,tjOrder.getTjNumber());
        wqq.isNotNull(TjXdtgmdjg::getUrl);
        List<TjXdtgmdjg> xdtgmdjgList = xdtgmdjgService.list(wqq);
        int index=1;
        for (TjXdtgmdjg xdtgmdjg : xdtgmdjgList) {
            document.newPage();
            cell = new PdfPCell();
            PdfPTable tablefj = new PdfPTable(new float[]{100f});
            tablefj.setTotalWidth(PageSize.A4.getWidth() - 100);
            tablefj.setLockedWidth(true);
            tablefj.setHorizontalAlignment(Element.ALIGN_LEFT);
            tablefj.getDefaultCell().setBorder(0);
            tablefj.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
            cell.setBorder(Rectangle.NO_BORDER);
            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            cell.setPaddingTop(10);
            cell.setPaddingBottom(10);
            cell.setPhrase(new Phrase("附件"+index+": "+ xdtgmdjg.getProName(), zongJianFont));
            Path path = Paths.get(xdtgmdjg.getUrl());
            byte[] bytesfj = null;
            try {
                bytesfj = Files.readAllBytes(path);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            Image image = Image.getInstance(bytesfj);
            image.scaleToFit(500, 2500);
            tablefj.addCell(cell);
            cell = new PdfPCell();
            cell.addElement(image);
            tablefj.addCell(cell);
            document.add(tablefj);
            index++;
        }
        document.close();
ltkj-admin/src/main/resources/application-dev.yml
@@ -10,8 +10,8 @@
  demoEnabled: true
  # 文件路径 示例( Windows配置D:/ltkj/uploadPath,Linux配置 /home/ltkj/uploadPath)
  # 用户换头像后的图片存储地址  测试:D:\ltkj\uploadPath\avatar\2022\12\14
  #profile: D:/ltkj/uploadPath
  profile: https://ltpeis.xaltjdkj.cn:5502/uploadPath
  profile: D:/ltkj/uploadPath
#  profile: https://ltpeis.xaltjdkj.cn:5502/uploadPath
#  profile: http://192.168.0.5:5502/uploadPath
  # 获取ip地址开关
ltkj-admin/src/main/resources/application-prod.yml
@@ -10,9 +10,9 @@
  demoEnabled: true
  # 文件路径 示例( Windows配置D:/ltkj/uploadPath,Linux配置 /home/ltkj/uploadPath)
  # 用户换头像后的图片存储地址  测试:D:\ltkj\uploadPath\avatar\2022\12\14
  #profile: D:/ltkj/uploadPath
  profile: D:/ltkj/uploadPath
#  profile: https://ltpeis.xaltjdkj.cn:5502/uploadPath
  profile: http://192.168.0.5:5502/uploadPath
  # profile: http://192.168.0.5:5502/uploadPath
  # 获取ip地址开关
  addressEnabled: false
ltkj-framework/src/main/java/com/ltkj/framework/config/SecurityConfig.java
@@ -112,7 +112,7 @@
                        "/sqlserver/getdata/**","/api/His/**","/system/config/zx","/system/config/gxxmpym","/system/report/savePdf",
                        "/system/dyjl/saveGjddyjl","/system/dyjl/saveBlGjddyjl","/check/ceshi","/check/pacs","/check/ceshicc"
                        ,"/system/report/xiugaidayinzhuangtai","/system/config/ceshitijianhao").permitAll()
                .antMatchers("/common/uploadImgExe","/common/listExeVal","/pacs/InvokeRisService/**").permitAll()
                .antMatchers("/common/uploadImgExe","/common/listExeVal","/pacs/InvokeRisService/**","/profileupload/**").permitAll()
                .antMatchers("/check/dataSynchronizationApi","/reservation/reservation/linkage").permitAll()
                // 静态资源,可匿名访问
                .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
ltkj-framework/src/main/java/com/ltkj/framework/config/WebConfig.java
@@ -23,7 +23,9 @@
                        "/cus/hospital/getHospList",
                        "/lis/**","/api/His/**","/pacs/**",
                        "/callBack/**",
                        "/hosp/order/signOrderInfo"
                        "/hosp/order/signOrderInfo",
                        "/common/listExeVal",
                        "/profileupload/**"
                });
    }
}
ltkj-hosp/src/main/java/com/ltkj/hosp/domain/SysAttachment.java
@@ -56,6 +56,16 @@
    @Excel(name = "上传后的访问链接")
    private String url;
    private String oldFileName;
            public String getOldFileName() {
                return oldFileName;
            }
            public void setOldFileName(String oldFileName) {
                this.oldFileName = oldFileName;
            }
            public String getUrl() {
                return url;
            }
@@ -159,6 +169,7 @@
            .append("uploadTime",getUploadTime())
            .append("ip",getIp())
            .append("url",getUrl())
            .append("oldFileName",getOldFileName())
        .toString();
        }
        }
ltkj-hosp/src/main/resources/mapper/hosp/SysAttachmentMapper.xml
@@ -15,10 +15,11 @@
            <result property="uploadTime" column="upload_time"/>
            <result property="ip" column="ip"/>
            <result property="url" column="url"/>
            <result property="oldFileName" column="old_file_name"/>
    </resultMap>
    <sql id="selectSysAttachmentVo">
        select id, sys_dict_val, file_path, file_name, file_size, file_size_mb, file_size_gb, upload_time, ip,url
        select id, sys_dict_val, file_path, file_name, file_size, file_size_mb, file_size_gb, upload_time, ip,url,old_file_name
        from sys_attachment
    </sql>
@@ -84,6 +85,8 @@
                    </if>
                    <if test="url != null and url != ''">url,
                    </if>
                    <if test="oldFileName != null and oldFileName != ''">old_file_name,
                    </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
                    <if test="id != null">#{id},
@@ -105,6 +108,8 @@
                    <if test="ip != null and ip != ''">#{ip},
                    </if>
                    <if test="url != null and url != ''">#{url},
                    </if>
                    <if test="oldFileName != null and oldFileName != ''">#{oldFileName},
                    </if>
        </trim>
    </insert>
@@ -139,6 +144,9 @@
                    <if test="url != null and url != ''">ip =
                        #{url},
                    </if>
                    <if test="oldFileName != null and oldFileName != ''">old_file_name =
                        #{oldFileName},
                    </if>
        </trim>
        where id = #{id}
    </update>