liusheng
2024-03-01 c2e58f7e1554cb23cb63877517b072942735bfdf
代码提交
已添加3个文件
已修改17个文件
562 ■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/PdfMergeController.java 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoController.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatecompletioninfoController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatecomporganController.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonationwitnessController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application.yml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/pom.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/MergeFilesToPDFUtils.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/PdfMegerVO.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatecomporgan.java 129 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonationwitnessorgan.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFund.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/CheckFundVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationCompletionVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationWitnessVO.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonationwitnessServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceDonatecomporganMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessorganMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/PdfMergeController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,144 @@
package com.ruoyi.web.controller.project;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.NotRepeatCommit;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.MergeFilesToPDFUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.DtoConversionUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.project.domain.*;
import com.ruoyi.project.domain.vo.*;
import com.ruoyi.project.mapper.ServiceFunddetailMapper;
import com.ruoyi.project.service.*;
import com.ruoyi.system.service.ISysDeptService;
import com.ruoyi.system.service.ISysPostService;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Options;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
import static com.ruoyi.web.controller.project.ServiceReimbursementController.convert;
/**
 * PDF合并
 *
 * @author ruoyi
 * @date 2022-01-24
 */
@Slf4j
@Api("PDF合并")
@RestController
@RequestMapping("/project/pdfmerge")
public class PdfMergeController extends BaseController {
    @Autowired
    private IServiceDonateannexService serviceDonateannexService;
    @Autowired
    private MergeFilesToPDFUtils mergeFilesToPDFUtils;
    @Autowired
    private IBaseOnlyvalueService baseOnlyvalueService;
    @Autowired
    private IServiceDonatebaseinfoService donatebaseinfoService;
    /**
     * å›¾ç‰‡ã€pdf、文档合并成pdf
     */
    @ApiOperation("图片、pdf、文档合并成pdf")
    @GetMapping("/merge")
    public void merge(@RequestParam("infoId") Long infoId, HttpServletResponse response) {
        log.info("merge的入参为辅:{}", infoId);
        ServiceDonateannex serviceDonateannex = new ServiceDonateannex();
        serviceDonateannex.setInfoid(infoId);
        List<ServiceDonateannex> serviceDonateannexes = serviceDonateannexService.queryList(serviceDonateannex);
        if (!CollectionUtils.isEmpty(serviceDonateannexes)) {
            log.info("serviceDonateannexes查询的数据为:{}", serviceDonateannexes.size());
            //根据Annexfilestype进行排序
            Collections.sort(serviceDonateannexes, Comparator.comparingInt(ServiceDonateannex::getAnnexfilestype));
            //获取文件存放的位置(配置文件里的Profile地址)
            String localPath = RuoYiConfig.getProfile();
            //用于转成一维数组
            List<String> list = new ArrayList<>();
            //用于记录该临时pdf文件是否删除
            List<MegerIsRemove> megerIsRemoveList = new ArrayList<>();
            for (ServiceDonateannex serviceDonateannex1 : serviceDonateannexes) {
                String path = serviceDonateannex1.getAnnexurl().replace("/profile", localPath);
                String suffix = path.substring(path.lastIndexOf("."));
                Boolean aBoolean = false;
                if (suffix.equals(".jpg") || suffix.equals(".JPG") || suffix.equals(".PNG") || suffix.equals(".png") || suffix.equals(".JPEG") || suffix.equals(".jpeg")) {
                    //图片处理
                    try {
                        aBoolean = mergeFilesToPDFUtils.addImageToPdf(path, getNewFileNameWithExtension(path, ".pdf"));
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                } else if (suffix.equals(".pdf") || suffix.equals(".PDF")) {
                    //pdf文件处理
                    String pdf = getNewFileNameWithExtension(path, ".pdf");
                    list.add(pdf);
                    megerIsRemoveList.add(new MegerIsRemove(false, pdf));
                } else if (suffix.equals(".doc") || suffix.equals(".DOC") || suffix.equals(".docx") || suffix.equals(".DOCX")) {
                    //word文件处理
                    aBoolean = mergeFilesToPDFUtils.wordtoPdf(path, getNewFileNameWithExtension(path, ".pdf"));
                }
                if (aBoolean) {
                    //将图片和word文件的临时文件,存到集合中,以便后面删除
                    String pdf = getNewFileNameWithExtension(path, ".pdf");
                    list.add(pdf);
                    megerIsRemoveList.add(new MegerIsRemove(true, pdf));
                }
            }
            //获取合并名称
            ServiceDonatebaseinfo donatebaseinfo = donatebaseinfoService.getById(serviceDonateannexes.get(0).getInfoid());
            String fileName = donatebaseinfo.getDonorno() + donatebaseinfo.getName() + ".pdf";
            String[] str = list.toArray(new String[0]);
            //文件合并
            mergeFilesToPDFUtils.mergePDF(str, fileName, response);
            //删除临时文件
            for (MegerIsRemove megerIsRemove : megerIsRemoveList) {
                if (megerIsRemove.getIsdel()) {
                    new File(megerIsRemove.getPath()).delete();
                }
            }
        }
    }
    private static String getNewFileNameWithExtension(String fileName, String extension) {
        int dotIndex = fileName.lastIndexOf('.');
        return dotIndex != -1 ? fileName.substring(0, dotIndex) + extension : fileName;
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoController.java
@@ -127,19 +127,19 @@
        log.info("新增潜在捐献信息:{}", serviceDonatebaseinfo);
        SysUser user = SecurityUtils.getLoginUser().getUser();
        String bh = "";
        bh = serviceDonatebaseinfoService.getDonateNumber(serviceDonatebaseinfo);
        if (bh == "") {
            return AjaxResult.error("新增时生成的编号为空,创建失败!");
        } else {
            ServiceDonatebaseinfo serviceDonatebaseinfo1 = new ServiceDonatebaseinfo();
            serviceDonatebaseinfo1.setDonorno(bh);
            List<ServiceDonatebaseinfo> listrecord = serviceDonatebaseinfoService.queryList(serviceDonatebaseinfo1);
            if (listrecord.size() > 0) {
                return AjaxResult.error("新增时生成的编号" + bh + "已存在,无法保存!");
            }
        }
//        String bh = "";
//        bh = serviceDonatebaseinfoService.getDonateNumber(serviceDonatebaseinfo);
//        if (bh == "") {
//            return AjaxResult.error("新增时生成的编号为空,创建失败!");
//        } else {
//            ServiceDonatebaseinfo serviceDonatebaseinfo1 = new ServiceDonatebaseinfo();
//            serviceDonatebaseinfo1.setDonorno(bh);
//            List<ServiceDonatebaseinfo> listrecord = serviceDonatebaseinfoService.queryList(serviceDonatebaseinfo1);
//            if (listrecord.size() > 0) {
//                return AjaxResult.error("新增时生成的编号" + bh + "已存在,无法保存!");
//            }
//
//        }
        String idcardno = serviceDonatebaseinfo.getIdcardno();
        ServiceDonatebaseinfo serviceDonatebaseinfo2 = new ServiceDonatebaseinfo();
        serviceDonatebaseinfo2.setIdcardno(idcardno);
@@ -148,7 +148,7 @@
            return AjaxResult.error("新增时身份证" + idcardno + "已存在,无法保存!");
        }
        serviceDonatebaseinfo.setDonorno(bh);
        //  serviceDonatebaseinfo.setDonorno(bh);
        serviceDonatebaseinfo.setDeptid(user.getDeptId());
        serviceDonatebaseinfo.setDeptname(sysDeptMapper.getDeptNameByDeptId(user.getDeptId()));
        serviceDonatebaseinfoService.save(serviceDonatebaseinfo);
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatecompletioninfoController.java
@@ -9,6 +9,7 @@
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.enums.OrganEnum;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.bean.DtoConversionUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.project.domain.ServiceDonatecompletioninfo;
import com.ruoyi.project.domain.ServiceDonateorgan;
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatecomporganController.java
@@ -40,7 +40,7 @@
     * æŸ¥è¯¢æçŒ®å™¨å®˜ç§»æ¤åˆ—表
     */
    @ApiOperation("查询捐献器官移植列表")
    @PreAuthorize("@ss.hasPermi('project:donatecomporgan:list')")
   // @PreAuthorize("@ss.hasPermi('project:donatecomporgan:list')")
    @GetMapping("/list")
    public TableDataInfo list(ServiceDonatecomporgan serviceDonatecomporgan) {
        startPage();
@@ -52,7 +52,7 @@
     * å¯¼å‡ºæçŒ®å™¨å®˜ç§»æ¤åˆ—表
     */
    @ApiOperation("导出捐献器官移植列表")
    @PreAuthorize("@ss.hasPermi('project:donatecomporgan:export')")
   // @PreAuthorize("@ss.hasPermi('project:donatecomporgan:export')")
    @Log(title = "捐献器官移植", businessType = BusinessType.EXPORT)
    @GetMapping("/export")
    public AjaxResult export(ServiceDonatecomporgan serviceDonatecomporgan) {
@@ -65,7 +65,7 @@
     * èŽ·å–æçŒ®å™¨å®˜ç§»æ¤è¯¦ç»†ä¿¡æ¯
     */
    @ApiOperation("获取捐献器官移植详细信息")
    @PreAuthorize("@ss.hasPermi('project:donatecomporgan:query')")
   // @PreAuthorize("@ss.hasPermi('project:donatecomporgan:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id) {
        return AjaxResult.success(serviceDonatecomporganService.getById(id));
@@ -75,7 +75,7 @@
     * æ–°å¢žæçŒ®å™¨å®˜ç§»æ¤
     */
    @ApiOperation("新增捐献器官移植")
    @PreAuthorize("@ss.hasPermi('project:donatecomporgan:add')")
   // @PreAuthorize("@ss.hasPermi('project:donatecomporgan:add')")
    @Log(title = "捐献器官移植", businessType = BusinessType.INSERT)
    @PostMapping("/add")
    @RepeatSubmit
@@ -88,7 +88,7 @@
     * ä¿®æ”¹æçŒ®å™¨å®˜ç§»æ¤
     */
    @ApiOperation("修改捐献器官移植")
    @PreAuthorize("@ss.hasPermi('project:donatecomporgan:edit')")
   // @PreAuthorize("@ss.hasPermi('project:donatecomporgan:edit')")
    @Log(title = "捐献器官移植", businessType = BusinessType.UPDATE)
    @PostMapping("/edit")
    @RepeatSubmit
@@ -100,7 +100,7 @@
     * åˆ é™¤æçŒ®å™¨å®˜ç§»æ¤
     */
    @ApiOperation("删除捐献器官移植")
    @PreAuthorize("@ss.hasPermi('project:donatecomporgan:remove')")
   // @PreAuthorize("@ss.hasPermi('project:donatecomporgan:remove')")
    @Log(title = "捐献器官移植", businessType = BusinessType.DELETE)
    @GetMapping("/remove/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids) {
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonationwitnessController.java
@@ -9,6 +9,8 @@
import com.ruoyi.common.enums.OrganEnum;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.DtoConversionUtils;
import com.ruoyi.project.domain.ServiceDonatebaseinfo;
import com.ruoyi.project.domain.ServiceDonateorgan;
import com.ruoyi.project.domain.vo.DonationWitnessVO;
import com.ruoyi.project.domain.vo.TimeVO;
@@ -128,6 +130,15 @@
    @RepeatSubmit
    public AjaxResult add(@RequestBody ServiceDonationwitness serviceDonationwitness) {
        boolean save = serviceDonationwitnessService.save(serviceDonationwitness);
        if (save) {
            //生成“捐献者编号”
            ServiceDonatebaseinfo serviceDonatebaseinfo = serviceDonatebaseinfoService.getById(serviceDonationwitness.getInfoid());
            log.info("serviceDonatebaseinfo的信息为{}", serviceDonatebaseinfo);
            String donorno = serviceDonatebaseinfoService.getDonateNumber(serviceDonatebaseinfo);
            log.info("生成的捐献者编号为:{}", donorno);
            serviceDonatebaseinfo.setDonorno(donorno);
            serviceDonatebaseinfoService.updateById(serviceDonatebaseinfo);
        }
        return AjaxResult.success(serviceDonationwitness);
    }
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementController.java
@@ -1,21 +1,17 @@
package com.ruoyi.web.controller.project;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.NotRepeatCommit;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.MergeFilesToPDFUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.bean.DtoConversionUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.project.domain.*;
import com.ruoyi.project.domain.dto.ServiceReimbursementDto;
ruoyi-admin/src/main/resources/application.yml
@@ -15,6 +15,8 @@
  #  profile: /home/smartor/uploadFile
  # åŒ»é™¢çŽ¯å¢ƒ
  profile: E:/OPO/WEB/Upload
  # å½’档路径
  archived: E:/OPO/WEB/archived/
  # èŽ·å–ip地址开关
  addressEnabled: false
  # éªŒè¯ç ç±»åž‹ math æ•°ç»„计算 char å­—符验证
@@ -70,15 +72,15 @@
      enabled: ALWAYS
  # redis é…ç½®
  redis:
    # åœ°å€ã€å¯†ç ã€ç«¯å£ï¼ˆé»˜è®¤ä¸º6379):医院环境
    host: 129.88.242.37
    password: jqserver
    port: 6379
    #    # åœ°å€ã€å¯†ç ã€ç«¯å£ï¼ˆé»˜è®¤ä¸º6379):医院环境
    #    host: 129.88.242.37
    #    password: jqserver
    #    port: 6379
#    # åœ°å€ã€å¯†ç ã€ç«¯å£ï¼ˆé»˜è®¤ä¸º6379):开发环境
#    host: 116.62.18.175
#    password: Smartor
#    port: 6020
    # åœ°å€ã€å¯†ç ã€ç«¯å£ï¼ˆé»˜è®¤ä¸º6379):开发环境
    host: 116.62.18.175
    password: Smartor
    port: 6020
    # æ•°æ®åº“索引
    database: 0
@@ -100,7 +102,7 @@
  # ä»¤ç‰Œè‡ªå®šä¹‰æ ‡è¯†
  header: Authorization
  # ä»¤ç‰Œå¯†é’¥
  secret: abcdefghijklmnopqrstuvwxyz
  secret: lihuabcdefghijklmnopqrstuvwxyz
  # ä»¤ç‰Œæœ‰æ•ˆæœŸï¼ˆé»˜è®¤30分钟)
  expireTime: 3000
@@ -146,6 +148,7 @@
  # åŒ¹é…é“¾æŽ¥
  urlPatterns: /system/*,/monitor/*,/tool/*
#钉钉的密钥
dingAppid: dingn8iip5ubj7clrrsv
dingAppSecret: qlEK8D3oOVwGPOTiBQIBYTqQVlAfy9S_qQizEQFjJdSScwemWFryg4gbneu-NqWD
ruoyi-common/pom.xml
@@ -170,6 +170,34 @@
            <artifactId>jodconverter-local-lo</artifactId>
            <version>4.4.6</version>
        </dependency>
        <dependency>
            <groupId>e-iceblue</groupId>
            <artifactId>spire.doc.free</artifactId>
            <version>5.2.0</version>
        </dependency>
        <dependency>
            <groupId>e-iceblue</groupId>
            <artifactId>spire.xls</artifactId>
            <version>14.2.4</version>
        </dependency>
        <dependency>
            <groupId>e-iceblue</groupId>
            <artifactId>spire.pdf</artifactId>
            <version>9.5.6</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.13</version> <!-- ä½¿ç”¨5.x版本 -->
        </dependency>
    </dependencies>
    <repositories>
        <repository>
            <id>com.e-iceblue</id>
            <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
        </repository>
    </repositories>
</project>
ruoyi-common/src/main/java/com/ruoyi/common/utils/MergeFilesToPDFUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,107 @@
package com.ruoyi.common.utils;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.PdfWriter;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.utils.file.FileUtils;
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfDocumentBase;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@Configuration
public class MergeFilesToPDFUtils {
    @Value("${ruoyi.archived}")
    private String archived;
    /**
     * å°†å›¾ç‰‡åˆæˆpdf
     */
    public Boolean addImageToPdf(String imagePath, String pdfPath) throws IOException {
        com.itextpdf.text.Document document = new com.itextpdf.text.Document();
        try {
            PdfWriter.getInstance(document, new FileOutputStream(pdfPath));
            document.open();
            // èŽ·å–å›¾åƒçš„å®½åº¦å’Œé«˜åº¦
            BufferedImage image = ImageIO.read(new File(imagePath));
            float imageWidth = image.getWidth();
            float imageHeight = image.getHeight();
            // èŽ·å–é¡µé¢çš„å®½åº¦å’Œé«˜åº¦
            float pageWidth = document.getPageSize().getWidth();
            float pageHeight = document.getPageSize().getHeight();
            // è®¡ç®—调整比例,确保图像适应页面
            float widthRatio = pageWidth / imageWidth;
            float heightRatio = pageHeight / imageHeight;
            float ratio = Math.min(widthRatio, heightRatio);
            // è®¡ç®—调整后的图像大小
            float adjustedWidth = imageWidth * ratio - 50;
            float adjustedHeight = imageHeight * ratio - 50;
            // åˆ›å»ºå›¾åƒå¯¹è±¡
            Image pdfImage = Image.getInstance(imagePath);
            pdfImage.scaleAbsolute(adjustedWidth, adjustedHeight);
            // æ·»åŠ å›¾åƒåˆ°æ–‡æ¡£
            document.add(pdfImage);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            document.close();
        }
        return true;
    }
    /**
     * WORD转PDF
     *
     * @param inputPath
     * @param outputPath
     */
    public Boolean wordtoPdf(String inputPath, String outputPath) {
        Document doc = new Document();
        //加载Word
        doc.loadFromFile(inputPath);
        //保存为PDF格式
        doc.saveToFile(outputPath, FileFormat.PDF);
        return true;
    }
     /**
     * pdf合并
     */
    public Boolean mergePDF(String[] pdfFiles, String fileName, HttpServletResponse response) {
        try {
            PdfDocumentBase pdf = PdfDocument.mergeFiles(pdfFiles);
            //Save the result to a PDF file
            pdf.save(archived + fileName, com.spire.pdf.FileFormat.PDF);
            String filePath = archived + fileName;
            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
            FileUtils.setAttachmentResponseHeader(response, fileName);
            FileUtils.writeBytes(filePath, response.getOutputStream());
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/PdfMegerVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.ruoyi.project.domain;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * è´¹ç”¨ç”³è¯·ä¸»å¯¹è±¡ service_fund
 *
 * @author ruoyi
 * @date 2022-01-24
 */
@Data
@ApiModel("费用申请主")
public class PdfMegerVO extends BaseEntity {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("id")
    private Long id;
    /**
     * æ¨¡å— :差旅 1   è´¹ç”¨ 2
     */
    @ApiModelProperty("模块 :差旅 1   è´¹ç”¨ 2")
    private Integer type;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatecomporgan.java
@@ -1,6 +1,7 @@
package com.ruoyi.project.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
@@ -18,156 +19,222 @@
 */
@Data
@ApiModel("捐献器官移植")
public class ServiceDonatecomporgan extends BaseEntity
{
public class ServiceDonatecomporgan extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /** $column.columnComment */
    /**
     * $column.columnComment
     */
    @ApiModelProperty("$column.columnComment")
    //数据库自增改成@TableId(type = IdType.AUTO)
    @TableId(type = IdType.AUTO)
    private Long id;
    /** å…³è”service_donatebaseinfo表的ID */
    /**
     * å…³è”service_donatebaseinfo表的ID
     */
    @ApiModelProperty("关联service_donatebaseinfo表的ID")
    @Excel(name = "关联service_donatebaseinfo表的ID")
    private Long infoid;
    /** å™¨å®˜ç±»åˆ« è¯¦è§å­—å…¸sys_Organ */
    /**
     * å™¨å®˜ç±»åˆ« è¯¦è§å­—å…¸sys_Organ
     */
    @ApiModelProperty("器官类别 è¯¦è§å­—å…¸sys_Organ")
    @Excel(name = "器官类别 è¯¦è§å­—å…¸sys_Organ")
    private String organno;
    /** å™¨å®˜ç±»åˆ«åç§° è¯¦è§å­—å…¸sys_Organ */
    /**
     * å™¨å®˜ç±»åˆ«åç§° è¯¦è§å­—å…¸sys_Organ
     */
    @ApiModelProperty("器官类别名称 è¯¦è§å­—å…¸sys_Organ")
    @Excel(name = "器官类别名称 è¯¦è§å­—å…¸sys_Organ")
    private String organname;
    /** å™¨å®˜ç§»æ¤çŠ¶æ€ ï¼š0:未移植;1:已移植,2:弃用 */
    /**
     * å™¨å®˜ç§»æ¤çŠ¶æ€ ï¼š0:未移植;1:已移植,2:弃用
     */
    @ApiModelProperty("器官移植状态 ï¼š0:未移植;1:已移植,2:弃用")
    @Excel(name = "器官移植状态 ï¼š0:未移植;1:已移植,2:弃用")
    private Long transplantstate;
    /** æœªç§»æ¤åŽŸå›  */
    /**
     * æœªç§»æ¤åŽŸå› 
     */
    @ApiModelProperty("未移植原因")
    @Excel(name = "未移植原因")
    private String abandonreason;
    /** ç§»æ¤æ—¶é—´ */
    /**
     * ç§»æ¤æ—¶é—´
     */
    @ApiModelProperty("移植时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "移植时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date transplanttime;
    /** ç§»æ¤åŒ»ç”Ÿ */
    /**
     * ç§»æ¤åŒ»ç”Ÿ
     */
    @ApiModelProperty("移植医生")
    @Excel(name = "移植医生")
    private String transplantdoct;
    /** å™¨å®˜ç§»æ¤æœºæž„编号 å¯¹åº”机构表 */
    /**
     * å™¨å®˜ç§»æ¤æœºæž„编号 å¯¹åº”机构表
     */
    @ApiModelProperty("器官移植机构编号 å¯¹åº”机构表")
    @Excel(name = "器官移植机构编号 å¯¹åº”机构表")
    private String transplanthospitalno;
    /** å™¨å®˜ç§»æ¤æœºæž„名称 å¯¹åº”机构表 */
    /**
     * å™¨å®˜ç§»æ¤æœºæž„名称 å¯¹åº”机构表
     */
    @ApiModelProperty("器官移植机构名称 å¯¹åº”机构表")
    @Excel(name = "器官移植机构名称 å¯¹åº”机构表")
    private String transplanthospitalname;
    /** ç§»æ¤äººå§“名 */
    /**
     * ç§»æ¤äººå§“名
     */
    @ApiModelProperty("移植人姓名")
    @Excel(name = "移植人姓名")
    private String name;
    /** ç§»æ¤äººæ€§åˆ« æ ¹æ®å­—å…¸sys_user_sex */
    /**
     * ç§»æ¤äººæ€§åˆ« æ ¹æ®å­—å…¸sys_user_sex
     */
    @ApiModelProperty("移植人性别 æ ¹æ®å­—å…¸sys_user_sex")
    @Excel(name = "移植人性别 æ ¹æ®å­—å…¸sys_user_sex")
    private Long sex;
    /** ç§»æ¤äººè¯ä»¶ç±»åž‹ æ ¹æ®å­—å…¸sys_IDType */
    /**
     * ç§»æ¤äººè¯ä»¶ç±»åž‹ æ ¹æ®å­—å…¸sys_IDType
     */
    @ApiModelProperty("移植人证件类型 æ ¹æ®å­—å…¸sys_IDType")
    @Excel(name = "移植人证件类型 æ ¹æ®å­—å…¸sys_IDType")
    private Long idcardtype;
    /** ç§»æ¤äººè¯ä»¶å·ç  */
    /**
     * ç§»æ¤äººè¯ä»¶å·ç 
     */
    @ApiModelProperty("移植人证件号码")
    @Excel(name = "移植人证件号码")
    private String idcardno;
    /** ç§»æ¤äººå¹´é¾„ */
    /**
     * ç§»æ¤äººå¹´é¾„
     */
    @ApiModelProperty("移植人年龄")
    @Excel(name = "移植人年龄")
    private Long age;
    /** ç§»æ¤äººå¹´é¾„单位 æ ¹æ®å­—å…¸sys_AgeUnit */
    /**
     * ç§»æ¤äººå¹´é¾„单位 æ ¹æ®å­—å…¸sys_AgeUnit
     */
    @ApiModelProperty("移植人年龄单位 æ ¹æ®å­—å…¸sys_AgeUnit")
    @Excel(name = "移植人年龄单位 æ ¹æ®å­—å…¸sys_AgeUnit")
    private String ageunit;
    /** ç§»æ¤äººå‡ºç”Ÿæ—¥æœŸ */
    /**
     * ç§»æ¤äººå‡ºç”Ÿæ—¥æœŸ
     */
    @ApiModelProperty("移植人出生日期")
    @Excel(name = "移植人出生日期")
    private String birthday;
    /** ç§»æ¤äººè”系电话 */
    /**
     * ç§»æ¤äººè”系电话
     */
    @ApiModelProperty("移植人联系电话")
    @Excel(name = "移植人联系电话")
    private String phone;
    /** ç§»æ¤äººçŽ°ä½åœ°å€ */
    /**
     * ç§»æ¤äººçŽ°ä½åœ°å€
     */
    @ApiModelProperty("移植人现住地址")
    @Excel(name = "移植人现住地址")
    private String residenceaddress;
    /** ç§»æ¤äººçŽ°ä½åœ°å€çœä»£ç  */
    /**
     * ç§»æ¤äººçŽ°ä½åœ°å€çœä»£ç 
     */
    @ApiModelProperty("移植人现住地址省代码")
    @Excel(name = "移植人现住地址省代码")
    private String residenceprovince;
    /** ç§»æ¤äººçŽ°ä½åœ°å€çœåç§° */
    /**
     * ç§»æ¤äººçŽ°ä½åœ°å€çœåç§°
     */
    @ApiModelProperty("移植人现住地址省名称")
    @Excel(name = "移植人现住地址省名称")
    private String residenceprovincename;
    /** ç§»æ¤äººå¸‚编号 æ ¹æ®è¡Œæ”¿åŒºåˆ’表 */
    /**
     * ç§»æ¤äººå¸‚编号 æ ¹æ®è¡Œæ”¿åŒºåˆ’表
     */
    @ApiModelProperty("移植人市编号 æ ¹æ®è¡Œæ”¿åŒºåˆ’表")
    @Excel(name = "移植人市编号 æ ¹æ®è¡Œæ”¿åŒºåˆ’表")
    private String residencecity;
    /** ç§»æ¤äººå¸‚名称 */
    /**
     * ç§»æ¤äººå¸‚名称
     */
    @ApiModelProperty("移植人市名称")
    @Excel(name = "移植人市名称")
    private String residencecityname;
    /** ç§»æ¤äººæ‰€å±žè¡—道(镇)根据行政区划表 */
    /**
     * ç§»æ¤äººæ‰€å±žè¡—道(镇)根据行政区划表
     */
    @ApiModelProperty("移植人所属街道(镇)根据行政区划表")
    @Excel(name = "移植人所属街道", readConverterExp = "镇=")
    private String residencetown;
    /** ç§»æ¤äººæ‰€å±žè¡—道(镇)名称 */
    /**
     * ç§»æ¤äººæ‰€å±žè¡—道(镇)名称
     */
    @ApiModelProperty("移植人所属街道(镇)名称")
    @Excel(name = "移植人所属街道", readConverterExp = "镇=")
    private String residencetownname;
    /** ç§»æ¤äººç¤¾åŒºï¼ˆæ‘)编号 æ ¹æ®è¡Œæ”¿åŒºåˆ’表 */
    /**
     * ç§»æ¤äººç¤¾åŒºï¼ˆæ‘)编号 æ ¹æ®è¡Œæ”¿åŒºåˆ’表
     */
    @ApiModelProperty("移植人社区(村)编号 æ ¹æ®è¡Œæ”¿åŒºåˆ’表")
    @Excel(name = "移植人社区", readConverterExp = "村=")
    private String residencecommunity;
    /** ç§»æ¤äººç¤¾åŒºï¼ˆæ‘)名称 */
    /**
     * ç§»æ¤äººç¤¾åŒºï¼ˆæ‘)名称
     */
    @ApiModelProperty("移植人社区(村)名称")
    @Excel(name = "移植人社区", readConverterExp = "村=")
    private String residencecommunityname;
    /** ç§»æ¤äººæ‰€å±žåŒºåŸŸç¼–号 æ ¹æ®è¡Œæ”¿åŒºåˆ’表 */
    /**
     * ç§»æ¤äººæ‰€å±žåŒºåŸŸç¼–号 æ ¹æ®è¡Œæ”¿åŒºåˆ’表
     */
    @ApiModelProperty("移植人所属区域编号 æ ¹æ®è¡Œæ”¿åŒºåˆ’表")
    @Excel(name = "移植人所属区域编号 æ ¹æ®è¡Œæ”¿åŒºåˆ’表")
    private String residencecountycode;
    /** ç§»æ¤äººæ‰€å±žåŒºåŸŸåç§° */
    /**
     * ç§»æ¤äººæ‰€å±žåŒºåŸŸåç§°
     */
    @ApiModelProperty("移植人所属区域名称")
    @Excel(name = "移植人所属区域名称")
    private String residencecountyname;
    /**
     * ç§»æ¤äººæ‰€å±žåŒºåŸŸåç§°
     */
    @ApiModelProperty("移植人所属区域名称")
    @Excel(name = "移植人所属区域名称")
    private String caseno;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonationwitnessorgan.java
@@ -114,5 +114,15 @@
    @Excel(name = "功能延迟性恢复,参见sys_0_1")
    private String isdgf;
    /** åŠŸèƒ½å»¶è¿Ÿæ€§æ¢å¤ï¼Œå‚è§sys_0_1 */
    @ApiModelProperty("功能延迟性恢复,参见sys_0_1")
    @Excel(name = "功能延迟性恢复,参见sys_0_1")
    private String name;
    /** åŠŸèƒ½å»¶è¿Ÿæ€§æ¢å¤ï¼Œå‚è§sys_0_1 */
    @ApiModelProperty("功能延迟性恢复,参见sys_0_1")
    @Excel(name = "功能延迟性恢复,参见sys_0_1")
    private String caseno;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFund.java
@@ -364,7 +364,7 @@
    private Date applyTime;
    @ApiModelProperty("数据是否进入shared表   0:否     1:是")
    private Integer uploadStates = 0;
    private Integer uploadStates;
    /**
     * æ¥ç”¨è®°å½•插入分享表失败
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/CheckFundVO.java
@@ -47,4 +47,7 @@
    @Excel(name = "流程结论 1:通过;2:驳回;")
    private Integer flowconclusion;
    List<String> fileNames;
    String outputFile;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationCompletionVO.java
@@ -4,11 +4,13 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.project.domain.ServiceDonatecomporgan;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
@Data
public class DonationCompletionVO {
@@ -18,6 +20,7 @@
    private String donationcategory;
    private String recordstate;
    private String name;
    private String caseno;
    private String sex;
    private Long idcardtype;
    private String idcardno;
@@ -88,4 +91,6 @@
    @ApiModelProperty("终止案例:0开启,1终止    é»˜è®¤å€¼ï¼š0")
    private Integer terminationCase;
    private List<ServiceDonatecomporgan> serviceDonatecomporganList;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationWitnessVO.java
@@ -12,6 +12,7 @@
    private String donorno;
    private String donationcategory;
    private String name;
    private String caseno;
    private String sex;
    private Long idcardtype;
    private String idcardno;
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonationwitnessServiceImpl.java
@@ -2,22 +2,27 @@
import java.util.List;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.project.domain.ServiceDonatebaseinfo;
import com.ruoyi.project.domain.ServiceDonateorgan;
import com.ruoyi.project.domain.vo.DonationWitnessVO;
import com.ruoyi.project.domain.vo.TimeVO;
import com.ruoyi.project.domain.vo.WitnessStatsVO;
import com.ruoyi.project.mapper.ServiceDonatebaseinfoMapper;
import com.ruoyi.project.mapper.ServiceDonateorganMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.ArrayList;
import java.util.Map;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.project.mapper.ServiceDonationwitnessMapper;
import com.ruoyi.project.domain.ServiceDonationwitness;
@@ -30,8 +35,7 @@
 * @date 2021-11-17
 */
@Service
public class ServiceDonationwitnessServiceImpl extends ServiceImpl<ServiceDonationwitnessMapper, ServiceDonationwitness> implements IServiceDonationwitnessService
{
public class ServiceDonationwitnessServiceImpl extends ServiceImpl<ServiceDonationwitnessMapper, ServiceDonationwitness> implements IServiceDonationwitnessService {
    @Autowired
@@ -39,6 +43,9 @@
    @Autowired
    ServiceDonatebaseinfoMapper serviceDonatebaseinfoMapper;
    @Autowired
    ServiceDonateorganServiceImpl serviceDonateorganService;
    /**
     * æŸ¥è¯¢æçŒ®è§è¯åˆ—表
@@ -75,8 +82,8 @@
        if(b){
            donationWitnessVO.setBasecreateby(user.getUserName());
        }
        return serviceDonationwitnessMapper.selectVOList(donationWitnessVO);
        List<DonationWitnessVO> donationWitnessVOS = serviceDonationwitnessMapper.selectVOList(donationWitnessVO);
        return donationWitnessVOS;
    }
    @Override
@@ -187,9 +194,7 @@
            w.setXORate(0);
            w.setXABRate(0);
        }
        else{
        } else {
            w.setManRate((double) manNumber / (double) total);
            w.setWomanRate((double) womanNumber / (double) total);
            w.setD0Rate((double) D0Number / (double) total);
ruoyi-project/src/main/resources/mapper/project/ServiceDonatecomporganMapper.xml
@@ -39,6 +39,7 @@
        <result property="createTime" column="create_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
        <result property="caseno" column="caseno"/>
    </resultMap>
    <sql id="selectServiceDonatecomporganVo">
@@ -53,6 +54,7 @@
               TransplantHospitalNo,
               TransplantHospitalName,
               Name,
               caseno,
               Sex,
               IDCardType,
               IDCardNo,
@@ -98,6 +100,7 @@
            </if>
            <if test="name != null  and name != ''">and Name like concat('%', #{name}, '%')</if>
            <if test="sex != null ">and Sex = #{sex}</if>
            <if test="caseno != null ">and caseno = #{caseno}</if>
            <if test="idcardtype != null ">and IDCardType = #{idcardtype}</if>
            <if test="idcardno != null  and idcardno != ''">and IDCardNo = #{idcardno}</if>
            <if test="age != null ">and Age = #{age}</if>
ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessorganMapper.xml
@@ -27,6 +27,8 @@
        <result property="createTime" column="create_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
        <result property="name" column="name"/>
        <result property="caseno" column="caseno"/>
    </resultMap>
    <sql id="selectServiceDonationwitnessorganVo">
@@ -52,6 +54,8 @@
               create_by,
               create_time,
               update_by,
               caseno,
               name,
               update_time
        from service_donationwitnessorgan
    </sql>
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -677,6 +677,7 @@
            } catch (Exception e) {
                ServiceFund serviceFund2 = new ServiceFund();
                serviceFund2.setId(serviceFund1.getId());
                serviceFund2.setUploadStates(1);
                serviceFund2.setNotes("插入fund分享表失败");
                serviceFundService.updateById(serviceFund2);
            }