liusheng
2026-01-21 29f287cf6e4869d7bbc283991458e09a03b59c52
代码提交
已修改57个文件
已添加31个文件
6951 ■■■■ 文件已修改
pom.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDeathinfoController.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoController.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoReportController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoReportFileController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatecompletioninfoController.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatemaintenanceController.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonateorganBaseController.java 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonateorganController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonationwitnessController.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceEthicalreviewinitiateController.java 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceMedicalevaluationController.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceMedicalevaluationorganController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceOrganallocationController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceRelativesconfirmationController.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-druid.yml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-srm.yml 160 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/logback.xml 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/PageUtils.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysRegisterService.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/java/controller.java.vm 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/java/service.java.vm 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDeathinfo.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatebaseinfoReport.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonateorgan.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonateorganBase.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonationwitness.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceMedicalevaluation.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceOrganallocation.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceRelativesconfirmation.java 173 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/DeathBaseInfoDTO.java 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/DonatebaseinfoProgressDTO.java 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/DonateorganBaseInfoDTO.java 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/DonationCompletionBaseInfoDTO.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/DonationwitnessBaseInfoDTO.java 368 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/MedicalevaluationBaseInfoDTO.java 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/RelativeConfirmationBaseInfoDTO.java 176 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/ReviewInitiateBaseInfoDTO.java 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/ServiceDonatebaseinfoDTO.java 626 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/WitnessBaseInfoDTO.java 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DeathBaseInfoVO.java 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonatebaseinfoProgressVO.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonateorganBaseInfoVO.java 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationCompletionBaseInfoVO.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationwitnessBaseInfoVO.java 253 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/EthicalReviewVO.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/RelativeConfirmationBaseInfoVO.java 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/ReviewInitiateBaseInfoVO.java 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/ServiceDonatemaintenanceVO.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/ServiceMedicalevaluationVO.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceDeathinfoMapper.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceDonatebaseinfoMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceDonateorganBaseMapper.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceDonationwitnessMapper.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceEthicalreviewinitiateMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceMedicalevaluationMapper.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceRelativesconfirmationMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceDeathinfoService.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceDonatebaseinfoService.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceDonatemaintenanceService.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceDonateorganBaseService.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceDonationwitnessService.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceEthicalreviewinitiateService.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceMedicalevaluationService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceRelativesconfirmationService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/DingTalkServiceImpl.java 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDeathinfoServiceImpl.java 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatebaseinfoServiceImpl.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatemaintenanceServiceImpl.java 77 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonateorganBaseServiceImpl.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonateorganServiceImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonationwitnessServiceImpl.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceEthicalreviewinitiateServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceMedicalevaluationServiceImpl.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceRelativesconfirmationServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceDeathinfoMapper.xml 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceDonatebaseinfoMapper.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceDonatemaintenanceMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceDonateorganBaseMapper.xml 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceDonateorganMapper.xml 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessMapper.xml 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewinitiateMapper.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceMedicalevaluationMapper.xml 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceMedicalevaluationorganMapper.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceRelativesconfirmationMapper.xml 282 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -256,6 +256,13 @@
            <version>4.5</version>
        </dependency>
        <!-- Janino for logback conditional configuration -->
        <dependency>
            <groupId>org.codehaus.janino</groupId>
            <artifactId>janino</artifactId>
            <version>3.0.8</version>
        </dependency>
        <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDeathinfoController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,115 @@
package com.ruoyi.web.controller.project;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.project.domain.ServiceDeathinfo;
import com.ruoyi.project.domain.dto.DeathBaseInfoDTO;
import com.ruoyi.project.domain.dto.DonateorganBaseInfoDTO;
import com.ruoyi.project.domain.vo.DeathBaseInfoVO;
import com.ruoyi.project.service.IServiceDeathinfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
 * æ‚£è€…死亡信息Controller
 *
 * @author ls
 * @date 2026-01-20
 */
@Api(description = "患者死亡信息")
@RestController
@RequestMapping("/project/deathinfo")
public class ServiceDeathinfoController extends BaseController {
    @Autowired
    private IServiceDeathinfoService serviceDeathinfoService;
    /**
     * æŸ¥è¯¢æ‚£è€…死亡信息列表
     */
    @ApiOperation("查询患者死亡基本信息")
    @PostMapping("/queryDathInfoBaseInfo")
    public Map<String, Object> queryDathInfoBaseInfo(@RequestBody DeathBaseInfoVO deathBaseInfoVO) {
        Integer offset = PageUtils.getOffset(deathBaseInfoVO.getPageNum(), deathBaseInfoVO.getPageSize());
        deathBaseInfoVO.setPageNum(offset);
        List<DeathBaseInfoDTO> deathBaseInfoDTOS = serviceDeathinfoService.dathInfoBaseInfoList(deathBaseInfoVO);
        //获取总数
        deathBaseInfoVO.setPageNum(null);
        deathBaseInfoVO.setPageSize(null);
        Integer totalCount = 0;
        List<DeathBaseInfoDTO> total = serviceDeathinfoService.dathInfoBaseInfoList(deathBaseInfoVO);
        if (!CollectionUtils.isEmpty(total)) totalCount = total.size();
        return getDataTable(deathBaseInfoDTOS, totalCount);
    }
    /**
     * å¯¼å‡ºæ‚£è€…死亡信息列表
     */
    @ApiOperation("导出患者死亡信息列表")
    // @PreAuthorize("@ss.hasPermi('project:deathinfo:export')")
    @Log(title = "患者死亡信息", businessType = BusinessType.EXPORT)
    @GetMapping("/export")
    public AjaxResult export(ServiceDeathinfo serviceDeathinfo) {
        List<ServiceDeathinfo> list = serviceDeathinfoService.exportQueryList(serviceDeathinfo);
        ExcelUtil<ServiceDeathinfo> util = new ExcelUtil<ServiceDeathinfo>(ServiceDeathinfo.class);
        return util.exportExcel(list, "患者死亡信息数据");
    }
    /**
     * èŽ·å–æ‚£è€…æ­»äº¡ä¿¡æ¯è¯¦ç»†ä¿¡æ¯
     */
    @ApiOperation("获取患者死亡信息详细信息")
    // @PreAuthorize("@ss.hasPermi('project:deathinfo:query')")
    @GetMapping(value = "/getInfo/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id) {
        return AjaxResult.success(serviceDeathinfoService.getById(id));
    }
    /**
     * æ–°å¢žæ‚£è€…死亡信息
     */
    @ApiOperation("新增患者死亡信息")
    // @PreAuthorize("@ss.hasPermi('project:deathinfo:add')")
    @Log(title = "患者死亡信息", businessType = BusinessType.INSERT)
    @PostMapping("/add")
    @RepeatSubmit
    public AjaxResult add(@RequestBody ServiceDeathinfo serviceDeathinfo) {
        return toAjax(serviceDeathinfoService.save(serviceDeathinfo));
    }
    /**
     * ä¿®æ”¹æ‚£è€…死亡信息
     */
    @ApiOperation("修改患者死亡信息")
    // @PreAuthorize("@ss.hasPermi('project:deathinfo:edit')")
    @Log(title = "患者死亡信息", businessType = BusinessType.UPDATE)
    @PostMapping("/edit")
    @RepeatSubmit
    public AjaxResult edit(@RequestBody ServiceDeathinfo serviceDeathinfo) {
        return toAjax(serviceDeathinfoService.updateById(serviceDeathinfo));
    }
    /**
     * åˆ é™¤æ‚£è€…死亡信息
     */
    @ApiOperation("删除患者死亡信息")
    // @PreAuthorize("@ss.hasPermi('project:deathinfo:remove')")
    @Log(title = "患者死亡信息", businessType = BusinessType.DELETE)
    @GetMapping("/remove/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids) {
        return toAjax(serviceDeathinfoService.removeByIds(Arrays.asList(ids)));
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoController.java
@@ -11,12 +11,15 @@
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.config.ServerConfig;
import com.ruoyi.project.common.CalculateDateUtils;
import com.ruoyi.project.domain.ServiceDonatebaseinfo;
import com.ruoyi.project.domain.ServiceDonationwitness;
import com.ruoyi.project.domain.dto.DonatebaseinfoProgressDTO;
import com.ruoyi.project.domain.dto.ReviewInitiateBaseInfoDTO;
import com.ruoyi.project.domain.vo.DonatebaseinfoProgressVO;
import com.ruoyi.project.domain.vo.TimeVO;
import com.ruoyi.project.service.IServiceDonatebaseinfoService;
import com.ruoyi.project.service.IServiceDonationwitnessService;
@@ -37,6 +40,7 @@
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -93,6 +97,32 @@
        return getDataTable(list);
    }
    @ApiOperation("捐献进度基本信息列表")
    @PostMapping("/donateBaseInfoProgressList")
    public Map<String, Object> donateBaseInfoProgressList(@RequestBody DonatebaseinfoProgressVO donatebaseinfoProgressVO) {
        log.info("小程序端潜在捐献信息列表:{}", donatebaseinfoProgressVO);
        Integer offset = PageUtils.getOffset(donatebaseinfoProgressVO.getPageNum(), donatebaseinfoProgressVO.getPageSize());
        donatebaseinfoProgressVO.setPageNum(offset);
        List<DonatebaseinfoProgressDTO> donatebaseinfoProgressDTOS = serviceDonatebaseinfoService.donateBaseInfoProgressList(donatebaseinfoProgressVO);
        //获取总数
        donatebaseinfoProgressVO.setPageNum(null);
        donatebaseinfoProgressVO.setPageSize(null);
        Integer totalCount = 0;
        List<DonatebaseinfoProgressDTO> total = serviceDonatebaseinfoService.donateBaseInfoProgressList(donatebaseinfoProgressVO);
        //获取捐献进程进度
        Map<Integer, Long> terminationCase = total.stream().filter(Objects::nonNull).map(DonatebaseinfoProgressDTO::getTerminationCase).filter(Objects::nonNull).collect(Collectors.groupingBy(type -> type, Collectors.counting()));
        //数据封装
        Map<String, Object> map = new HashMap<>();
        map.put("terminationCase", terminationCase);
        map.put("donatebaseinfoProgressDTOS", donatebaseinfoProgressDTOS);
        if (!CollectionUtils.isEmpty(total)) totalCount = total.size();
        return getDataTable(map, totalCount);
    }
    /**
     * å¯¼å‡ºæçŒ®åŸºç¡€åˆ—表
     */
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoReportController.java
@@ -20,7 +20,6 @@
import com.ruoyi.project.service.IVUserOrgService;
import com.ruoyi.system.domain.SysConfig;
import com.ruoyi.system.service.ISysConfigService;
import com.sun.org.apache.bcel.internal.generic.NEW;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections4.CollectionUtils;
@@ -54,7 +53,7 @@
     */
    @ApiOperation("查询捐献上报基础列表")
    @PostMapping("/list")
    public Map<String, Object> list(ServiceDonatebaseinfoReport serviceDonatebaseinfoReport) {
    public Map<String, Object> list(@RequestBody ServiceDonatebaseinfoReport serviceDonatebaseinfoReport) {
        Page<ServiceDonatebaseinfoReport> serviceDonatebaseinfoReportPage = serviceDonatebaseinfoReportService.queryList(serviceDonatebaseinfoReport);
        return getDataTable(serviceDonatebaseinfoReportPage.getRecords(), (int) serviceDonatebaseinfoReportPage.getTotal());
    }
@@ -64,7 +63,7 @@
     */
    @ApiOperation("获取各类型的总数")
    @PostMapping("/getTotal")
    public Map<String, Object> getTotal(ServiceDonatebaseinfoReport serviceDonatebaseinfoReport) {
    public Map<String, Object> getTotal(@RequestBody ServiceDonatebaseinfoReport serviceDonatebaseinfoReport) {
        //去配置文件中,获取上报类型
        SysConfig config = new SysConfig();
        config.setConfigKey("sys.report.type");
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoReportFileController.java
@@ -36,7 +36,7 @@
    @ApiOperation("查询案例上报附件列表")
    // @PreAuthorize("@ss.hasPermi('system:file:list')")
    @PostMapping("/list")
    public TableDataInfo list(ServiceDonatebaseinfoReportFile serviceDonatebaseinfoReportFile) {
    public TableDataInfo list(@RequestBody ServiceDonatebaseinfoReportFile serviceDonatebaseinfoReportFile) {
        startPage();
        List<ServiceDonatebaseinfoReportFile> list = serviceDonatebaseinfoReportFileService.queryList(serviceDonatebaseinfoReportFile);
        return getDataTable(list);
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatecompletioninfoController.java
@@ -13,6 +13,7 @@
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.project.domain.ServiceDonatecompletioninfo;
import com.ruoyi.project.domain.ServiceDonateorgan;
import com.ruoyi.project.domain.vo.DonationCompletionBaseInfoVO;
import com.ruoyi.project.domain.vo.DonationCompletionVO;
import com.ruoyi.project.service.IServiceDonatecompletioninfoService;
import com.ruoyi.project.service.IServiceDonatecomporganService;
@@ -39,7 +40,7 @@
 * @date 2021-11-19
 */
@Slf4j
@Api( description = "捐献完成登记管理")
@Api(description = "捐献完成登记管理")
@RestController
@RequestMapping("/project/donatecompletioninfo")
public class ServiceDonatecompletioninfoController extends BaseController {
@@ -59,28 +60,17 @@
        configuration.setDefaultEncoding("utf-8");
    }
    /**
     * æŸ¥è¯¢æçŒ®å®Œæˆåˆ—表
     */
    @ApiOperation("查询捐献完成列表")
    //// @PreAuthorize("@ss.hasPermi('project:donatecompletioninfo:list')")
    @GetMapping("/list")
    public TableDataInfo list(ServiceDonatecompletioninfo serviceDonatecompletioninfo) {
        log.info("查询捐献完成列表:{}", serviceDonatecompletioninfo);
        startPage();
        List<ServiceDonatecompletioninfo> list = serviceDonatecompletioninfoService.queryList(serviceDonatecompletioninfo);
        return getDataTable(list);
    }
    @ApiOperation("查询捐献完成列表(新)")
    @GetMapping("/listnew")
    @Log(title = "查询捐献完成列表(新)", businessType = BusinessType.OTHER)
    public TableDataInfo listnew(DonationCompletionVO donationCompletionVO) {
        log.info("查询捐献完成列表(新):{}", donationCompletionVO);
        startPage();
        List<DonationCompletionVO> list = serviceDonatecompletioninfoService.selectVOList(donationCompletionVO);
        return getDataTable(list);
    }
//    /**
//     * æŸ¥è¯¢æçŒ®å®Œæˆåˆ—表
//     */
//    @ApiOperation("查询捐献完成列表")
//    //// @PreAuthorize("@ss.hasPermi('project:donatecompletioninfo:list')")
//    @GetMapping("/list")
//    public Map<String, Object> list(DonationCompletionBaseInfoVO donationCompletionBaseInfoVO) {
//        log.info("查询捐献完成列表:{}", donationCompletionBaseInfoVO);
//        List<ServiceDonatecompletioninfo> list = serviceDonatecompletioninfoService.queryList(donationCompletionBaseInfoVO);
//        return getDataTable(list);
//    }
    /**
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatemaintenanceController.java
@@ -1,21 +1,23 @@
package com.ruoyi.web.controller.project;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.project.domain.ServiceDonatemaintenance;
import com.ruoyi.project.domain.vo.ServiceDonatemaintenanceVO;
import com.ruoyi.project.service.IServiceDonatemaintenanceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
 * ä¾›ä½“维护记录Controller
@@ -30,16 +32,28 @@
    @Autowired
    private IServiceDonatemaintenanceService serviceDonatemaintenanceService;
//    /**
//     * æŸ¥è¯¢ä¾›ä½“维护记录列表
//     */
//    @ApiOperation("查询供体维护记录列表")
//    // @PreAuthorize("@ss.hasPermi('system:donatemaintenance:list')")
//    @PostMapping("/list")
//    public Map<String, Object> list(@RequestBody ServiceDonatemaintenance serviceDonatemaintenance) {
//        Page<ServiceDonatemaintenance> serviceDonatemaintenancePage = serviceDonatemaintenanceService.queryList(serviceDonatemaintenance);
//        return  getDataTable(serviceDonatemaintenancePage.getRecords(), (int) serviceDonatemaintenancePage.getTotal());
//    }
    /**
     * æŸ¥è¯¢ä¾›ä½“维护记录列表
     */
    @ApiOperation("查询供体维护记录列表")
    @ApiOperation("获取供体维护记录基本信息列表")
    // @PreAuthorize("@ss.hasPermi('system:donatemaintenance:list')")
    @PostMapping("/list")
    public TableDataInfo list(ServiceDonatemaintenance serviceDonatemaintenance) {
        startPage();
        List<ServiceDonatemaintenance> list = serviceDonatemaintenanceService.queryList(serviceDonatemaintenance);
        return getDataTable(list);
    @PostMapping("/maintenanceBaseInfoList")
    public Map<String, Object> maintenanceBaseInfoList(@RequestBody ServiceDonatemaintenanceVO serviceDonatemaintenanceVO) {
        Integer offset = PageUtils.getOffset(serviceDonatemaintenanceVO.getPageNum(), serviceDonatemaintenanceVO.getPageSize());
        serviceDonatemaintenanceVO.setPageNum(offset);
        Page serviceDonatemaintenancePage = serviceDonatemaintenanceService.maintenanceBaseInfoList(serviceDonatemaintenanceVO);
        return getDataTable(serviceDonatemaintenancePage.getRecords(), (int) serviceDonatemaintenancePage.getTotal());
    }
    /**
@@ -50,7 +64,8 @@
    @Log(title = "供体维护记录", businessType = BusinessType.EXPORT)
    @GetMapping("/export")
    public AjaxResult export(ServiceDonatemaintenance serviceDonatemaintenance) {
        List<ServiceDonatemaintenance> list = serviceDonatemaintenanceService.queryList(serviceDonatemaintenance);
        Page<ServiceDonatemaintenance> serviceDonatemaintenancePage = serviceDonatemaintenanceService.queryList(serviceDonatemaintenance);
        List<ServiceDonatemaintenance> list = serviceDonatemaintenancePage.getRecords();
        ExcelUtil<ServiceDonatemaintenance> util = new ExcelUtil<ServiceDonatemaintenance>(ServiceDonatemaintenance.class);
        return util.exportExcel(list, "供体维护记录数据");
    }
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonateorganBaseController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,135 @@
package com.ruoyi.web.controller.project;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.project.domain.ServiceDonateorganBase;
import com.ruoyi.project.domain.dto.DonateorganBaseInfoDTO;
import com.ruoyi.project.domain.vo.DonateorganBaseInfoVO;
import com.ruoyi.project.service.IServiceDonateorganBaseService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
 * æçŒ®å™¨å®˜åˆ†é…åŸºç¡€Controller
 *
 * @author ls
 * @date 2026-01-17
 */
@Api(description = "捐献器官分配基础")
@RestController
@RequestMapping("/project/donateorganBase")
public class ServiceDonateorganBaseController extends BaseController {
    @Autowired
    private IServiceDonateorganBaseService serviceDonateorganBaseService;
//    /**
//     * æŸ¥è¯¢æçŒ®å™¨å®˜åˆ†é…åŸºç¡€åˆ—表
//     */
//    @ApiOperation("查询捐献器官分配基础列表")
//// @PreAuthorize("@ss.hasPermi('project:base:list')")
//    @PostMapping("/list")
//    public Map<String, Object> list(@RequestBody ServiceDonateorganBase serviceDonateorganBase) {
//        Page<ServiceDonateorganBase> list = serviceDonateorganBaseService.queryList(serviceDonateorganBase);
//        return getDataTable(list.getRecords(), (int) list.getTotal());
//    }
    /**
     * æŸ¥è¯¢æçŒ®å™¨å®˜åˆ†é…åŸºç¡€åˆ—表
     */
    @ApiOperation("查询捐献器官分配基础列表")
    @PostMapping("/list")
    public Map<String, Object> list(@RequestBody ServiceDonateorganBase serviceDonateorganBase) {
        Page<ServiceDonateorganBase> list = serviceDonateorganBaseService.queryList(serviceDonateorganBase);
        return getDataTable(list.getRecords(), (int) list.getTotal());
    }
    @ApiOperation("查询捐献器官分配基础列表")
    @PostMapping("/getDonateorganBaseInfoList")
    public Map<String, Object> getDonateorganBaseInfoList(@RequestBody DonateorganBaseInfoVO donateorganBaseInfoVO) {
        Integer offset = PageUtils.getOffset(donateorganBaseInfoVO.getPageNum(), donateorganBaseInfoVO.getPageSize());
        donateorganBaseInfoVO.setPageNum(offset);
        List<DonateorganBaseInfoDTO> donateorganBaseInfoDTOS = serviceDonateorganBaseService.getDonateorganBaseInfoList(donateorganBaseInfoVO);
        //获取总数
        donateorganBaseInfoVO.setPageNum(null);
        donateorganBaseInfoVO.setPageSize(null);
        Integer totalCount = 0;
        List<DonateorganBaseInfoDTO> total = serviceDonateorganBaseService.getDonateorganBaseInfoList(donateorganBaseInfoVO);
        if (!CollectionUtils.isEmpty(total)) totalCount = total.size();
        return getDataTable(donateorganBaseInfoDTOS, totalCount);
    }
    /**
     * å¯¼å‡ºæçŒ®å™¨å®˜åˆ†é…åŸºç¡€åˆ—表
     */
    @ApiOperation("导出捐献器官分配基础列表")
    // @PreAuthorize("@ss.hasPermi('project:base:export')")
    @Log(title = "捐献器官分配基础", businessType = BusinessType.EXPORT)
    @GetMapping("/export")
    public AjaxResult export(ServiceDonateorganBase serviceDonateorganBase) {
        List<ServiceDonateorganBase> list = serviceDonateorganBaseService.exportQueryList(serviceDonateorganBase);
        ExcelUtil<ServiceDonateorganBase> util = new ExcelUtil<ServiceDonateorganBase>(ServiceDonateorganBase.class);
        return util.exportExcel(list, "捐献器官分配基础数据");
    }
    /**
     * èŽ·å–æçŒ®å™¨å®˜åˆ†é…åŸºç¡€è¯¦ç»†ä¿¡æ¯
     */
    @ApiOperation("获取捐献器官分配基础详细信息")
    // @PreAuthorize("@ss.hasPermi('project:base:query')")
    @GetMapping(value = "/getInfo/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id) {
        return AjaxResult.success(serviceDonateorganBaseService.getById(id));
    }
    /**
     * æ–°å¢žæçŒ®å™¨å®˜åˆ†é…åŸºç¡€
     */
    @ApiOperation("新增捐献器官分配基础")
    // @PreAuthorize("@ss.hasPermi('project:base:add')")
    @Log(title = "捐献器官分配基础", businessType = BusinessType.INSERT)
    @PostMapping("/add")
    @RepeatSubmit
    public AjaxResult add(@RequestBody ServiceDonateorganBase serviceDonateorganBase) {
        return toAjax(serviceDonateorganBaseService.save(serviceDonateorganBase));
    }
    /**
     * ä¿®æ”¹æçŒ®å™¨å®˜åˆ†é…åŸºç¡€
     */
    @ApiOperation("修改捐献器官分配基础")
    // @PreAuthorize("@ss.hasPermi('project:base:edit')")
    @Log(title = "捐献器官分配基础", businessType = BusinessType.UPDATE)
    @PostMapping("/edit")
    @RepeatSubmit
    public AjaxResult edit(@RequestBody ServiceDonateorganBase serviceDonateorganBase) {
        return toAjax(serviceDonateorganBaseService.updateById(serviceDonateorganBase));
    }
    /**
     * åˆ é™¤æçŒ®å™¨å®˜åˆ†é…åŸºç¡€
     */
    @ApiOperation("删除捐献器官分配基础")
    // @PreAuthorize("@ss.hasPermi('project:base:remove')")
    @Log(title = "捐献器官分配基础", businessType = BusinessType.DELETE)
    @GetMapping("/remove/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids) {
        return toAjax(serviceDonateorganBaseService.removeByIds(Arrays.asList(ids)));
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonateorganController.java
@@ -35,7 +35,7 @@
 * @date 2021-11-10
 */
@Slf4j
@Api(description = "捐献器官管理")
@Api(description = "捐献器官管理分配")
@RestController
@RequestMapping("/project/donateorgan")
public class ServiceDonateorganController extends BaseController {
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonationwitnessController.java
@@ -4,15 +4,14 @@
import java.text.SimpleDateFormat;
import java.util.*;
import com.ruoyi.common.annotation.NotRepeatCommit;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.enums.OrganEnum;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.DtoConversionUtils;
import com.ruoyi.project.domain.ServiceDonatebaseinfo;
import com.ruoyi.project.domain.vo.DonationwitnessBaseInfoVO;
import com.ruoyi.project.domain.ServiceDonateorgan;
import com.ruoyi.project.domain.ServiceDonationwitnessorgan;
import com.ruoyi.project.domain.dto.DonationwitnessBaseInfoDTO;
import com.ruoyi.project.domain.vo.DonationWitnessVO;
import com.ruoyi.project.domain.vo.TimeVO;
import com.ruoyi.project.service.IBaseOnlyvalueService;
@@ -41,7 +40,6 @@
import com.ruoyi.project.domain.ServiceDonationwitness;
import com.ruoyi.project.service.IServiceDonationwitnessService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
 * æçŒ®è§è¯Controller
@@ -50,7 +48,7 @@
 * @date 2021-11-17
 */
@Slf4j
@Api(description = "捐献见证管理")
@Api(description = "捐献见证管理(死亡判定)")
@RestController
@RequestMapping("/project/donationwitness")
public class ServiceDonationwitnessController extends BaseController {
@@ -77,25 +75,39 @@
        configuration.setDefaultEncoding("utf-8");
    }
    /**
     * æŸ¥è¯¢æçŒ®è§è¯åˆ—表
     */
    @ApiOperation("获取捐献见证列表")
    //// @PreAuthorize("@ss.hasPermi('project:donationwitness:list')")
    @GetMapping("/list")
    public TableDataInfo list(ServiceDonationwitness serviceDonationwitness) {
        startPage();
        List<ServiceDonationwitness> list = serviceDonationwitnessService.queryList(serviceDonationwitness);
        return getDataTable(list);
    }
//    /**
//     * æŸ¥è¯¢æçŒ®è§è¯åˆ—表
//     */
//    @ApiOperation("获取捐献见证列表")
//    //// @PreAuthorize("@ss.hasPermi('project:donationwitness:list')")
//    @GetMapping("/list")
//    public TableDataInfo list(ServiceDonationwitness serviceDonationwitness) {
//        startPage();
//        List<ServiceDonationwitness> list = serviceDonationwitnessService.queryList(serviceDonationwitness);
//        return getDataTable(list);
//    }
//
//    @ApiOperation("获取捐献见证列表-新")
//    @GetMapping("/listnew")
//    public TableDataInfo listnew(DonationWitnessVO donationWitnessVO) {
//        startPage();
//        List<DonationWitnessVO> list = serviceDonationwitnessService.selectVOList(donationWitnessVO);
//        return getDataTable(list);
//    }
@ApiOperation("获取捐献见证基本信息(器官获取)")
@PostMapping("/getDonationwitnessBaseInfo")
public Map<String,Object> getDonationwitnessBaseInfo(@RequestBody DonationwitnessBaseInfoVO donationwitnessBaseInfoVO) {
    Integer offset = PageUtils.getOffset(donationwitnessBaseInfoVO.getPageNum(), donationwitnessBaseInfoVO.getPageSize());
    donationwitnessBaseInfoVO.setPageNum(offset);
    List<DonationwitnessBaseInfoDTO> donationwitnessBaseInfo = serviceDonationwitnessService.getDonationwitnessBaseInfo(donationwitnessBaseInfoVO);
    @ApiOperation("获取捐献见证列表-新")
    @GetMapping("/listnew")
    public TableDataInfo listnew(DonationWitnessVO donationWitnessVO) {
        startPage();
        List<DonationWitnessVO> list = serviceDonationwitnessService.selectVOList(donationWitnessVO);
        return getDataTable(list);
    }
    donationwitnessBaseInfoVO.setPageNum(null);
    donationwitnessBaseInfoVO.setPageSize(null);
    Integer totalCount = 0;
    List<DonationwitnessBaseInfoDTO> total = serviceDonationwitnessService.getDonationwitnessBaseInfo(donationwitnessBaseInfoVO);
    if (!CollectionUtils.isEmpty(total)) totalCount = total.size();
    return getDataTable(donationwitnessBaseInfo, totalCount);
}
    /**
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceEthicalreviewinitiateController.java
@@ -4,18 +4,23 @@
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.project.domain.dto.ReviewInitiateBaseInfoDTO;
import com.ruoyi.project.domain.dto.WitnessBaseInfoDTO;
import com.ruoyi.project.domain.vo.ReviewInitiateBaseInfoVO;
import com.ruoyi.project.domain.ServiceEthicalreviewinitiate;
import com.ruoyi.project.service.IServiceEthicalreviewinitiateService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
 * ä¼¦ç†å®¡æŸ¥å‘èµ·Controller
@@ -25,21 +30,41 @@
 */
@Api(description = "伦理审查发起")
@RestController
@RequestMapping("/system/ethicalreviewinitiate")
@RequestMapping("/project/ethicalreviewinitiate")
public class ServiceEthicalreviewinitiateController extends BaseController {
    @Autowired
    private IServiceEthicalreviewinitiateService serviceEthicalreviewinitiateService;
//    /**
//     * æŸ¥è¯¢ä¼¦ç†å®¡æŸ¥å‘起列表
//     */
//    @ApiOperation("查询伦理审查发起列表")
//    // @PreAuthorize("@ss.hasPermi('system:ethicalreviewinitiate:list')")
//    @PostMapping("/list")
//    public TableDataInfo list(ServiceEthicalreviewinitiate serviceEthicalreviewinitiate) {
//        startPage();
//        List<ServiceEthicalreviewinitiate> list = serviceEthicalreviewinitiateService.queryList(serviceEthicalreviewinitiate);
//        return getDataTable(list);
//    }
    /**
     * æŸ¥è¯¢ä¼¦ç†å®¡æŸ¥å‘起列表
     * ä¼¦ç†å®¡æŸ¥åŸºæœ¬ä¿¡æ¯é›†åˆ
     */
    @ApiOperation("查询伦理审查发起列表")
    @ApiOperation("伦理审查基本信息集合")
    // @PreAuthorize("@ss.hasPermi('system:ethicalreviewinitiate:list')")
    @PostMapping("/list")
    public TableDataInfo list(ServiceEthicalreviewinitiate serviceEthicalreviewinitiate) {
        startPage();
        List<ServiceEthicalreviewinitiate> list = serviceEthicalreviewinitiateService.queryList(serviceEthicalreviewinitiate);
        return getDataTable(list);
    @PostMapping("/reviewinitiateBaseInfoList")
    public Map<String, Object> reviewinitiateBaseInfoList(@RequestBody ReviewInitiateBaseInfoVO reviewInitiateBaseInfoVO) {
        Integer offset = PageUtils.getOffset(reviewInitiateBaseInfoVO.getPageNum(), reviewInitiateBaseInfoVO.getPageSize());
        reviewInitiateBaseInfoVO.setPageNum(offset);
        List<ReviewInitiateBaseInfoDTO> list = serviceEthicalreviewinitiateService.reviewinitiateBaseInfoList(reviewInitiateBaseInfoVO);
        //获取总数
        reviewInitiateBaseInfoVO.setPageNum(null);
        reviewInitiateBaseInfoVO.setPageSize(null);
        Integer totalCount = 0;
        List<ReviewInitiateBaseInfoDTO> total = serviceEthicalreviewinitiateService.reviewinitiateBaseInfoList(reviewInitiateBaseInfoVO);
        if (!CollectionUtils.isEmpty(total)) totalCount = total.size();
        return getDataTable(list,totalCount);
    }
    /**
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceMedicalevaluationController.java
@@ -1,41 +1,27 @@
package com.ruoyi.web.controller.project;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.ruoyi.common.annotation.NotRepeatCommit;
import com.ruoyi.project.common.CalculateDateUtils;
import com.ruoyi.project.domain.ServiceDonationwitness;
import com.ruoyi.project.domain.vo.MedicalEvaluationVO;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.project.domain.ServiceMedicalevaluation;
import com.ruoyi.project.domain.dto.MedicalevaluationBaseInfoDTO;
import com.ruoyi.project.domain.vo.MedicalEvaluationWithBaseInfoVO;
import com.ruoyi.project.service.IServiceDonationwitnessService;
import com.ruoyi.project.service.IServiceMedicalevaluationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.project.domain.ServiceMedicalevaluation;
import com.ruoyi.project.service.IServiceMedicalevaluationService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
 * åŒ»å­¦è¯„ä¼°Controller
@@ -66,39 +52,27 @@
        return getDataTable(list);
    }
    @ApiOperation("获取医疗评估列表新")
    @GetMapping("/listnew")
    public TableDataInfo listnew(MedicalEvaluationVO medicalEvaluationVO) {
        startPage();
        List<MedicalEvaluationVO> list = serviceMedicalevaluationService.selectVOList(medicalEvaluationVO);
        for (MedicalEvaluationVO medicalEvaluationVO1 : list) {
            //先给个年龄默认值(因为age是数字类型,不能放横杠,所以就所横扛放到单位上)
            medicalEvaluationVO1.setAgeunit("-");
            medicalEvaluationVO1.setAge(null);
            medicalEvaluationVO1.setAge2(null);
            //获取死亡时间,如果获取见证里有死亡时间,则进行计算他的年龄
            ServiceDonationwitness sdw = new ServiceDonationwitness();
            sdw.setInfoid(medicalEvaluationVO1.getInfoid());
            List<ServiceDonationwitness> serviceDonationwitnessList = serviceDonationwitnessService.selectServiceDonationwitnessList(sdw);
            if (!CollectionUtils.isEmpty(serviceDonationwitnessList) && medicalEvaluationVO1.getBirthday() != null) {
                Date deathtime = serviceDonationwitnessList.get(0).getDeathtime();
                if (ObjectUtils.isNotEmpty(deathtime)) {
                    Map<String, String> map = CalculateDateUtils.calculateAge(medicalEvaluationVO1.getBirthday().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), deathtime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate());
                    if (ObjectUtils.isEmpty(map)) {
                        log.error("MedicalEvaluationVO出生日期:{},MedicalEvaluationVO死亡日期:{}", medicalEvaluationVO1.getBirthday(), deathtime);
                        continue;
                    }
                    medicalEvaluationVO1.setAge(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age")) ? Long.valueOf(map.get("age")) : null);
                    medicalEvaluationVO1.setAgeunit(map.get("ageUnit"));
                    medicalEvaluationVO1.setAge2(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age2")) ? Long.valueOf(map.get("age2")) : null);
                    medicalEvaluationVO1.setAgeunit2(map.get("ageUnit2"));
                }
            }
    /**
     * èŽ·å–åŒ»ç–—è¯„ä¼°æ‚£è€…åŸºæœ¬ä¿¡æ¯åˆ—è¡¨
     */
    @ApiOperation("获取医疗评估患者基本信息列表")
    //// @PreAuthorize("@ss.hasPermi('project:medicalevaluation:list')")
    @PostMapping("/evaluateBaseInfolist")
    public Map<String, Object> evaluateBaseInfolist(@RequestBody MedicalEvaluationWithBaseInfoVO medicalEvaluationWithBaseInfoVO) {
        Integer offset = PageUtils.getOffset(medicalEvaluationWithBaseInfoVO.getPageNum(), medicalEvaluationWithBaseInfoVO.getPageSize());
        medicalEvaluationWithBaseInfoVO.setPageNum(offset);
        List<MedicalevaluationBaseInfoDTO> medicalEvaluationWithBaseInfoVOS = serviceMedicalevaluationService.evaluateBaseInfolist(medicalEvaluationWithBaseInfoVO);
        }
        return getDataTable(list);
        //获取总数
        medicalEvaluationWithBaseInfoVO.setPageNum(null);
        medicalEvaluationWithBaseInfoVO.setPageSize(null);
        Integer totalCount = 0;
        List<MedicalevaluationBaseInfoDTO> total = serviceMedicalevaluationService.evaluateBaseInfolist(medicalEvaluationWithBaseInfoVO);
        if (!CollectionUtils.isEmpty(total)) totalCount = total.size();
        return getDataTable(medicalEvaluationWithBaseInfoVOS, totalCount);
    }
    /**
     * å¯¼å‡ºåŒ»å­¦è¯„估列表
     */
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceMedicalevaluationorganController.java
@@ -25,7 +25,7 @@
 */
@Api(description = "捐献器官评估")
@RestController
@RequestMapping("/system/medicalevaluationorgan")
@RequestMapping("/project/medicalevaluationorgan")
public class ServiceMedicalevaluationorganController extends BaseController
{
    @Autowired
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceOrganallocationController.java
@@ -26,7 +26,7 @@
 * @author ruoyi
 * @date 2021-11-10
 */
@Api(description = "器官分配管理")
@Api(description = "器官分配管理(停用)")
@RestController
@RequestMapping("/project/organallocation")
public class ServiceOrganallocationController extends BaseController {
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceRelativesconfirmationController.java
@@ -1,45 +1,38 @@
package com.ruoyi.web.controller.project;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
import com.ruoyi.common.annotation.Log;
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.enums.BusinessType;
import com.ruoyi.common.enums.Education;
import com.ruoyi.common.enums.NationalityEnum;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.project.domain.ServiceRelativesconfirmation;
import com.ruoyi.project.domain.dto.RelativeConfirmationBaseInfoDTO;
import com.ruoyi.project.domain.vo.RelativeConfirmationBaseInfoVO;
import com.ruoyi.project.domain.vo.RelativeConfirmationVO;
import com.ruoyi.project.mapper.ServiceDonatebaseinfoMapper;
import com.ruoyi.project.mapper.ServiceRelativesconfirmationMapper;
import com.ruoyi.project.service.IServiceDonatebaseinfoService;
import com.ruoyi.project.service.IServiceRelativesconfirmationService;
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.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.project.domain.ServiceRelativesconfirmation;
import com.ruoyi.project.service.IServiceRelativesconfirmationService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.web.bind.annotation.*;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
/**
 * æçŒ®äº²å±žç¡®è®¤Controller
@@ -69,23 +62,39 @@
        configuration.setDefaultEncoding("utf-8");
    }
    /**
     * æŸ¥è¯¢æçŒ®äº²å±žç¡®è®¤åˆ—表
     */
    @ApiOperation("获取亲属确认列表")
    //// @PreAuthorize("@ss.hasPermi('project:relativesconfirmation:list')")
    @GetMapping("/list")
    public TableDataInfo list(ServiceRelativesconfirmation serviceRelativesconfirmation) {
        startPage();
        List<ServiceRelativesconfirmation> list = serviceRelativesconfirmationService.queryList(serviceRelativesconfirmation);
        return getDataTable(list);
    }
//    /**
//     * æŸ¥è¯¢æçŒ®äº²å±žç¡®è®¤åˆ—表
//     */
//    @ApiOperation("获取亲属确认列表")
//    //// @PreAuthorize("@ss.hasPermi('project:relativesconfirmation:list')")
//    @GetMapping("/list")
//    public TableDataInfo list(ServiceRelativesconfirmation serviceRelativesconfirmation) {
//        startPage();
//        List<ServiceRelativesconfirmation> list = serviceRelativesconfirmationService.queryList(serviceRelativesconfirmation);
//        return getDataTable(list);
//    }
//
//    @GetMapping("/listnew")
//    public TableDataInfo listnew(RelativeConfirmationVO relativeConfirmationVO) {
//        startPage();
//        List<RelativeConfirmationVO> list = serviceRelativesconfirmationService.selectVOList(relativeConfirmationVO);
//        return getDataTable(list);
//    }
    @GetMapping("/listnew")
    public TableDataInfo listnew(RelativeConfirmationVO relativeConfirmationVO) {
        startPage();
        List<RelativeConfirmationVO> list = serviceRelativesconfirmationService.selectVOList(relativeConfirmationVO);
        return getDataTable(list);
    @ApiOperation("捐献确认基本信息集合")
    @PostMapping("/confirmationBaseInfoList")
    public Map<String, Object>  confirmationBaseInfoList(@RequestBody RelativeConfirmationBaseInfoVO relativeConfirmationBaseInfoVO) {
        Integer offset = PageUtils.getOffset(relativeConfirmationBaseInfoVO.getPageNum(), relativeConfirmationBaseInfoVO.getPageSize());
        relativeConfirmationBaseInfoVO.setPageNum(offset);
        List<RelativeConfirmationBaseInfoDTO> list = serviceRelativesconfirmationService.confirmationBaseInfoList(relativeConfirmationBaseInfoVO);
        //获取总数
        relativeConfirmationBaseInfoVO.setPageNum(null);
        relativeConfirmationBaseInfoVO.setPageSize(null);
        Integer totalCount = 0;
        List<RelativeConfirmationBaseInfoDTO> total = serviceRelativesconfirmationService.confirmationBaseInfoList(relativeConfirmationBaseInfoVO);
        if (!CollectionUtils.isEmpty(total)) totalCount = total.size();
        return getDataTable(list, totalCount);
    }
ruoyi-admin/src/main/resources/application-druid.yml
@@ -83,3 +83,9 @@
agentId: 1779052814
dingAppid: dingn8iip5ubj7clrrsv
dingAppSecret: qlEK8D3oOVwGPOTiBQIBYTqQVlAfy9S_qQizEQFjJdSScwemWFryg4gbneu-NqWD
# é’‰é’‰API代理配置
dingtalk:
  proxy:
    enabled: true  # æ˜¯å¦å¯ç”¨ä»£ç†
    url: http://127.0.0.1:8800/dingtalk-api  # Nginx代理地址,需要替换为实际地址
ruoyi-admin/src/main/resources/application-srm.yml
@@ -1,87 +1,93 @@
# æ•°æ®æºé…ç½®
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.cj.jdbc.Driver
        druid:
            # ä¸»åº“数据源
            master:
                # åŒ»é™¢çŽ¯å¢ƒ
                url: jdbc:mysql://127.0.0.1:3306/opo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                username: opo
                password: Smartor.2025
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    druid:
      # ä¸»åº“数据源
      master:
        # åŒ»é™¢çŽ¯å¢ƒ
        url: jdbc:mysql://127.0.0.1:3306/opo-qd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
        username: root
        password: Smartor.2025
            # ä»Žåº“数据源
            slave:
                # ä»Žæ•°æ®æºå¼€å…³/默认关闭
                enabled: false
                url:
                username:
                password:
            # åˆå§‹è¿žæŽ¥æ•°
            initialSize: 5
            # æœ€å°è¿žæŽ¥æ± æ•°é‡
            minIdle: 10
            # æœ€å¤§è¿žæŽ¥æ± æ•°é‡
            maxActive: 20
            # é…ç½®èŽ·å–è¿žæŽ¥ç­‰å¾…è¶…æ—¶çš„æ—¶é—´
            maxWait: 60000
            # é…ç½®é—´éš”多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
            timeBetweenEvictionRunsMillis: 60000
            # é…ç½®ä¸€ä¸ªè¿žæŽ¥åœ¨æ± ä¸­æœ€å°ç”Ÿå­˜çš„æ—¶é—´ï¼Œå•位是毫秒
            minEvictableIdleTimeMillis: 300000
            # é…ç½®ä¸€ä¸ªè¿žæŽ¥åœ¨æ± ä¸­æœ€å¤§ç”Ÿå­˜çš„æ—¶é—´ï¼Œå•位是毫秒
            maxEvictableIdleTimeMillis: 900000
            # é…ç½®æ£€æµ‹è¿žæŽ¥æ˜¯å¦æœ‰æ•ˆ
            validationQuery: SELECT 1 FROM DUAL
            testWhileIdle: true
            testOnBorrow: false
            testOnReturn: false
            webStatFilter:
                enabled: true
            statViewServlet:
                # å¼€å…³
                enabled: false
                # è®¾ç½®ç™½åå•,不填则允许所有访问
                allow:
                url-pattern: /druid/*
                # æŽ§åˆ¶å°ç®¡ç†ç”¨æˆ·åå’Œå¯†ç 
                login-username: lihu
                login-password: Lihu.7647Sa89.94
            filter:
                stat:
                    enabled: true
                    # æ…¢SQL记录
                    log-slow-sql: true
                    slow-sql-millis: 1000
                    merge-sql: true
                wall:
                    config:
                        multi-statement-allow: true
      # ä»Žåº“数据源
      slave:
        # ä»Žæ•°æ®æºå¼€å…³/默认关闭
        enabled: false
        url:
        username:
        password:
      # åˆå§‹è¿žæŽ¥æ•°
      initialSize: 5
      # æœ€å°è¿žæŽ¥æ± æ•°é‡
      minIdle: 10
      # æœ€å¤§è¿žæŽ¥æ± æ•°é‡
      maxActive: 20
      # é…ç½®èŽ·å–è¿žæŽ¥ç­‰å¾…è¶…æ—¶çš„æ—¶é—´
      maxWait: 60000
      # é…ç½®é—´éš”多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      timeBetweenEvictionRunsMillis: 60000
      # é…ç½®ä¸€ä¸ªè¿žæŽ¥åœ¨æ± ä¸­æœ€å°ç”Ÿå­˜çš„æ—¶é—´ï¼Œå•位是毫秒
      minEvictableIdleTimeMillis: 300000
      # é…ç½®ä¸€ä¸ªè¿žæŽ¥åœ¨æ± ä¸­æœ€å¤§ç”Ÿå­˜çš„æ—¶é—´ï¼Œå•位是毫秒
      maxEvictableIdleTimeMillis: 900000
      # é…ç½®æ£€æµ‹è¿žæŽ¥æ˜¯å¦æœ‰æ•ˆ
      validationQuery: SELECT 1 FROM DUAL
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      webStatFilter:
        enabled: true
      statViewServlet:
        # å¼€å…³
        enabled: false
        # è®¾ç½®ç™½åå•,不填则允许所有访问
        allow:
        url-pattern: /druid/*
        # æŽ§åˆ¶å°ç®¡ç†ç”¨æˆ·åå’Œå¯†ç 
        login-username: lihu
        login-password: Lihu.7647Sa89.94
      filter:
        stat:
          enabled: true
          # æ…¢SQL记录
          log-slow-sql: true
          slow-sql-millis: 1000
          merge-sql: true
        wall:
          config:
            multi-statement-allow: true
    # redis é…ç½®
    redis:
        # åœ°å€ã€å¯†ç ã€ç«¯å£ï¼ˆé»˜è®¤ä¸º6379):医院环境
        host: 129.88.242.37
        password: jqserver
        port: 6379
  # redis é…ç½®
  redis:
    # åœ°å€ã€å¯†ç ã€ç«¯å£ï¼ˆé»˜è®¤ä¸º6379):医院环境
    host: 127.0.0.1
    password: Smartor
    port: 6020
        # æ•°æ®åº“索引
        database: 0
        # è¿žæŽ¥è¶…æ—¶æ—¶é—´
        timeout: 10s
        lettuce:
            pool:
                # è¿žæŽ¥æ± ä¸­çš„æœ€å°ç©ºé—²è¿žæŽ¥
                min-idle: 0
                # è¿žæŽ¥æ± ä¸­çš„æœ€å¤§ç©ºé—²è¿žæŽ¥
                max-idle: 8
                # è¿žæŽ¥æ± çš„æœ€å¤§æ•°æ®åº“连接数
                max-active: 8
                # #连接池最大阻塞等待时间(使用负值表示没有限制)
                max-wait: -1ms
    # æ•°æ®åº“索引
    database: 0
    # è¿žæŽ¥è¶…æ—¶æ—¶é—´
    timeout: 10s
    lettuce:
      pool:
        # è¿žæŽ¥æ± ä¸­çš„æœ€å°ç©ºé—²è¿žæŽ¥
        min-idle: 0
        # è¿žæŽ¥æ± ä¸­çš„æœ€å¤§ç©ºé—²è¿žæŽ¥
        max-idle: 8
        # è¿žæŽ¥æ± çš„æœ€å¤§æ•°æ®åº“连接数
        max-active: 8
        # #连接池最大阻塞等待时间(使用负值表示没有限制)
        max-wait: -1ms
#钉钉的密钥(省人民)
agentId: 2975938892
dingAppid: dingbxgfddodocmtqqsu
dingAppSecret: sw1NDcgErqWqkaWVo4DPck9EagJ-2yihYNxmhOjXo_F9E6X_-6Cl3LAybqAPt9gi
# é’‰é’‰API代理配置
dingtalk:
  proxy:
    enabled: true  # æ˜¯å¦å¯ç”¨ä»£ç†
    url: http://192.168.111.9:9096/dingtalk-api  # Nginx代理地址,需要替换为实际地址
ruoyi-admin/src/main/resources/application.yml
@@ -24,7 +24,7 @@
# å¼€å‘环境配置
server:
  # æœåŠ¡å™¨çš„HTTP端口,默认为8080
  # æœåŠ¡å™¨çš„HTTP端口,默认为9095
  port: 8080
  servlet:
    # åº”用的访问路径
ruoyi-admin/src/main/resources/logback.xml
@@ -1,31 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- æ—¥å¿—存放路径 -->
    <property name="log.path" value="/lihu/opo/logs" />
    <!-- æ—¥å¿—输出格式 -->
    <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
    <!-- æ ¹æ®æ“ä½œç³»ç»Ÿè®¾ç½®æ—¥å¿—路径 -->
    <property name="win.log.path" value="/lihu/opo/logs" />
    <property name="linux.log.path" value="/home/software/lihu/opo/logs" />
    <!-- æŽ§åˆ¶å°è¾“出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>
    <!-- ç³»ç»Ÿæ—¥å¿—输出 -->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/sys-info.log</file>
    <!-- æ£€æµ‹æ“ä½œç³»ç»Ÿå¹¶è®¾ç½®æ—¥å¿—路径 -->
    <if condition='property("os.name").toLowerCase().contains("windows")'>
        <then>
            <property name="log.path" value="${win.log.path}" />
        </then>
        <else>
            <property name="log.path" value="${linux.log.path}" />
        </else>
    </if>
    <!-- æ—¥å¿—输出格式 -->
    <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
    <!-- æŽ§åˆ¶å°è¾“出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>
    <!-- ç³»ç»Ÿæ—¥å¿—输出 -->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/sys-info.log</file>
        <!-- å¾ªçŽ¯æ”¿ç­–ï¼šåŸºäºŽæ—¶é—´åˆ›å»ºæ—¥å¿—æ–‡ä»¶ -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- æ—¥å¿—文件名格式 -->
            <fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- æ—¥å¿—最大的历史 60天 -->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- æ—¥å¿—最大的历史 60天 -->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- è¿‡æ»¤çš„级别 -->
            <level>INFO</level>
            <!-- åŒ¹é…æ—¶çš„æ“ä½œï¼šæŽ¥æ”¶ï¼ˆè®°å½•) -->
@@ -33,16 +44,17 @@
            <!-- ä¸åŒ¹é…æ—¶çš„æ“ä½œï¼šæ‹’绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/sys-error.log</file>
    </appender>
    <!-- ç³»ç»Ÿé”™è¯¯æ—¥å¿—输出 -->
    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/sys-error.log</file>
        <!-- å¾ªçŽ¯æ”¿ç­–ï¼šåŸºäºŽæ—¶é—´åˆ›å»ºæ—¥å¿—æ–‡ä»¶ -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- æ—¥å¿—文件名格式 -->
            <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- æ—¥å¿—最大的历史 60天 -->
            <maxHistory>60</maxHistory>
            <!-- æ—¥å¿—最大的历史 60天 -->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
@@ -50,16 +62,16 @@
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- è¿‡æ»¤çš„级别 -->
            <level>ERROR</level>
            <!-- åŒ¹é…æ—¶çš„æ“ä½œï¼šæŽ¥æ”¶ï¼ˆè®°å½•) -->
            <!-- åŒ¹é…æ—¶çš„æ“ä½œï¼šæŽ¥æ”¶ï¼ˆè®°å½•) -->
            <onMatch>ACCEPT</onMatch>
            <!-- ä¸åŒ¹é…æ—¶çš„æ“ä½œï¼šæ‹’绝(不记录) -->
            <!-- ä¸åŒ¹é…æ—¶çš„æ“ä½œï¼šæ‹’绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!-- ç”¨æˆ·è®¿é—®æ—¥å¿—输出  -->
    <!-- ç”¨æˆ·è®¿é—®æ—¥å¿—输出  -->
    <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/sys-user.log</file>
        <file>${log.path}/sys-user.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- æŒ‰å¤©å›žæ»š daily -->
            <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
@@ -70,24 +82,24 @@
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>
    <!-- ç³»ç»Ÿæ¨¡å—日志级别控制  -->
    <logger name="com.ruoyi" level="info" />
    <!-- Spring日志级别控制  -->
    <logger name="org.springframework" level="warn" />
    <root level="info">
        <appender-ref ref="console" />
    </root>
    <!--系统操作日志-->
    <!-- ç³»ç»Ÿæ¨¡å—日志级别控制  -->
    <logger name="com.ruoyi" level="info" />
    <!-- Spring日志级别控制  -->
    <logger name="org.springframework" level="warn" />
    <root level="info">
        <appender-ref ref="console" />
    </root>
    <!--系统操作日志-->
    <root level="info">
        <appender-ref ref="file_info" />
        <appender-ref ref="file_error" />
    </root>
    <!--系统用户操作日志-->
    <!--系统用户操作日志-->
    <logger name="sys-user" level="info">
        <appender-ref ref="sys-user"/>
    </logger>
</configuration>
</configuration>
ruoyi-common/src/main/java/com/ruoyi/common/utils/PageUtils.java
@@ -38,4 +38,13 @@
    public static void clearPage() {
        PageHelper.clearPage();
    }
    /**
     * è®¡ç®—偏移量
     */
    public static Integer getOffset(Integer pageNum, Integer pageSize) {
        if (pageNum == null || pageNum == 0) pageNum = 1;
        if (pageSize == null) pageSize = 10;
        return (pageNum - 1) * pageSize;
    }
}
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
@@ -101,7 +101,7 @@
                // è¿‡æ»¤è¯·æ±‚
                .authorizeRequests()
                // å¯¹äºŽç™»å½•login æ³¨å†Œregister éªŒè¯ç captchaImage å…è®¸åŒ¿åè®¿é—®
                .antMatchers("/login", "/openidlogin", "/register", "/captchaImage", "/getToken").anonymous()
                .antMatchers("/login", "/openidlogin", "/register", "/captchaImage", "/getToken","/system/dingtalk/sendNotification").anonymous()
                .antMatchers(
                        HttpMethod.GET,
                        "/",
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysRegisterService.java
@@ -19,12 +19,11 @@
/**
 * æ³¨å†Œæ ¡éªŒæ–¹æ³•
 *
 *
 * @author ruoyi
 */
@Component
public class SysRegisterService
{
public class SysRegisterService {
    @Autowired
    private ISysUserService userService;
@@ -37,54 +36,35 @@
    /**
     * æ³¨å†Œ
     */
    public String register(RegisterBody registerBody)
    {
    public String register(RegisterBody registerBody) {
        String msg = "", username = registerBody.getUsername(), password = registerBody.getPassword();
        boolean captchaOnOff = configService.selectCaptchaOnOff();
        // éªŒè¯ç å¼€å…³
        if (captchaOnOff)
        {
        if (captchaOnOff) {
            validateCaptcha(username, registerBody.getCode(), registerBody.getUuid());
        }
        if (StringUtils.isEmpty(username))
        {
        if (StringUtils.isEmpty(username)) {
            msg = "用户名不能为空";
        }
        else if (StringUtils.isEmpty(password))
        {
        } else if (StringUtils.isEmpty(password)) {
            msg = "用户密码不能为空";
        }
        else if (username.length() < UserConstants.USERNAME_MIN_LENGTH
                || username.length() > UserConstants.USERNAME_MAX_LENGTH)
        {
        } else if (username.length() < UserConstants.USERNAME_MIN_LENGTH || username.length() > UserConstants.USERNAME_MAX_LENGTH) {
            msg = "账户长度必须在2到20个字符之间";
        }
        else if (password.length() < UserConstants.PASSWORD_MIN_LENGTH
                || password.length() > UserConstants.PASSWORD_MAX_LENGTH)
        {
        } else if (password.length() < UserConstants.PASSWORD_MIN_LENGTH || password.length() > UserConstants.PASSWORD_MAX_LENGTH) {
            msg = "密码长度必须在5到20个字符之间";
        }
        else if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(username)))
        {
        } else if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(username))) {
            msg = "保存用户'" + username + "'失败,注册账号已存在";
        }
        else
        {
        } else {
            SysUser sysUser = new SysUser();
            sysUser.setUserName(username);
            sysUser.setNickName(username);
            sysUser.setPassword(SecurityUtils.encryptPassword(registerBody.getPassword()));
            boolean regFlag = userService.registerUser(sysUser);
            if (!regFlag)
            {
            if (!regFlag) {
                msg = "注册失败,请联系系统管理人员";
            }
            else
            {
                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.REGISTER,
                        MessageUtils.message("user.register.success")));
            } else {
                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.REGISTER, MessageUtils.message("user.register.success")));
            }
        }
        return msg;
@@ -92,23 +72,20 @@
    /**
     * æ ¡éªŒéªŒè¯ç 
     *
     *
     * @param username ç”¨æˆ·å
     * @param code éªŒè¯ç 
     * @param uuid å”¯ä¸€æ ‡è¯†
     * @param code     éªŒè¯ç 
     * @param uuid     å”¯ä¸€æ ‡è¯†
     * @return ç»“æžœ
     */
    public void validateCaptcha(String username, String code, String uuid)
    {
    public void validateCaptcha(String username, String code, String uuid) {
        String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
        String captcha = redisCache.getCacheObject(verifyKey);
        redisCache.deleteObject(verifyKey);
        if (captcha == null)
        {
        if (captcha == null) {
            throw new CaptchaExpireException();
        }
        if (!code.equalsIgnoreCase(captcha))
        {
        if (!code.equalsIgnoreCase(captcha)) {
            throw new CaptchaException();
        }
    }
ruoyi-generator/src/main/resources/vm/java/controller.java.vm
@@ -2,6 +2,7 @@
import java.util.Arrays;
import java.util.List;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -36,31 +37,46 @@
@Api(description = "${functionName}")
@RestController
@RequestMapping("/${moduleName}/${businessName}")
public class ${ClassName}Controller extends BaseController
{
public class ${ClassName}Controller extends BaseController {
    @Autowired
    private I${ClassName}Service ${className}Service;
    /**
     * æŸ¥è¯¢${functionName}列表
     */
    @ApiOperation("查询${functionName}列表")
    // @PreAuthorize("@ss.hasPermi('${permissionPrefix}:list')")
    @PostMapping("/list")
#if($table.crud || $table.sub)
    public TableDataInfo list(${ClassName} ${className})
    {
        startPage();
        List<${ClassName}> list = ${className}Service.queryList(${className});
        return getDataTable(list);
##/**
## * æŸ¥è¯¢${functionName}列表
## */
##@ApiOperation("查询${functionName}列表")
##// @PreAuthorize("@ss.hasPermi('${permissionPrefix}:list')")
##@PostMapping("/list")
##    #if($table.crud || $table.sub)
##    public TableDataInfo list(@RequestBody ${ClassName} ${className}) {
##        startPage();
##        List<${ClassName}> list = ${className}Service.queryList(${className});
##        return getDataTable(list);
##    }
##    #elseif($table.tree)
##        public AjaxResult list(${ClassName} ${className}) {
##            List<${ClassName}> list = ${className}Service.queryList(${className});
##            return AjaxResult.success(list);
##        }
##    #end
/**
 * æŸ¥è¯¢${functionName}列表
 */
@ApiOperation("查询${functionName}列表")
// @PreAuthorize("@ss.hasPermi('${permissionPrefix}:list')")
@PostMapping("/list")
    #if($table.crud || $table.sub)
    public Map<String, Object> list(@RequestBody ${ClassName} ${className}) {
        Page<${ClassName}> list = ${className}Service.queryList(${className});
        return getDataTable(list.getRecords(), (int) list.getTotal());
    }
#elseif($table.tree)
    public AjaxResult list(${ClassName} ${className})
    {
        List<${ClassName}> list = ${className}Service.queryList(${className});
        return AjaxResult.success(list);
    }
#end
    #elseif($table.tree)
        public AjaxResult list(${ClassName} ${className}) {
            List<${ClassName}> list = ${className}Service.queryList(${className});
            return AjaxResult.success(list);
        }
    #end
    /**
     * å¯¼å‡º${functionName}列表
@@ -69,10 +85,9 @@
    // @PreAuthorize("@ss.hasPermi('${permissionPrefix}:export')")
    @Log(title = "${functionName}", businessType = BusinessType.EXPORT)
    @GetMapping("/export")
    public AjaxResult export(${ClassName} ${className})
    {
        List<${ClassName}> list = ${className}Service.queryList(${className});
        ExcelUtil<${ClassName}> util = new ExcelUtil<${ClassName}>(${ClassName}.class);
    public AjaxResult export(${ClassName} ${className}) {
        List<${ClassName}> list = ${className}Service.exportQueryList(${className});
        ExcelUtil<${ClassName}> util = new ExcelUtil<${ClassName}>(${ClassName}. class);
        return util.exportExcel(list, "${functionName}数据");
    }
@@ -82,8 +97,7 @@
    @ApiOperation("获取${functionName}详细信息")
    // @PreAuthorize("@ss.hasPermi('${permissionPrefix}:query')")
    @GetMapping(value = "/getInfo/{${pkColumn.javaField}}")
    public AjaxResult getInfo(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField})
    {
    public AjaxResult getInfo(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}) {
        return AjaxResult.success(${className}Service.getById(${pkColumn.javaField}));
    }
@@ -95,8 +109,7 @@
    @Log(title = "${functionName}", businessType = BusinessType.INSERT)
    @PostMapping("/add")
    @RepeatSubmit
    public AjaxResult add(@RequestBody ${ClassName} ${className})
    {
    public AjaxResult add(@RequestBody ${ClassName} ${className}) {
        return toAjax(${className}Service.save(${className}));
    }
@@ -108,8 +121,7 @@
    @Log(title = "${functionName}", businessType = BusinessType.UPDATE)
    @PostMapping("/edit")
    @RepeatSubmit
    public AjaxResult edit(@RequestBody ${ClassName} ${className})
    {
    public AjaxResult edit(@RequestBody ${ClassName} ${className}) {
        return toAjax(${className}Service.updateById(${className}));
    }
@@ -120,8 +132,7 @@
    // @PreAuthorize("@ss.hasPermi('${permissionPrefix}:remove')")
    @Log(title = "${functionName}", businessType = BusinessType.DELETE)
    @GetMapping("/remove/{${pkColumn.javaField}s}")
    public AjaxResult remove(@PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s)
    {
    public AjaxResult remove(@PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s) {
        return toAjax(${className}Service.removeByIds(Arrays.asList(${pkColumn.javaField}s)));
    }
}
ruoyi-generator/src/main/resources/vm/java/service.java.vm
@@ -6,7 +6,7 @@
/**
 * ${functionName}Service接口
 *
 *
 * @author ${author}
 * @date ${datetime}
 */
@@ -15,9 +15,17 @@
    /**
     * æŸ¥è¯¢${functionName}列表
     *
     *
     * @param ${className} ${functionName}
     * @return ${functionName}集合
     */
    public List<${ClassName}> queryList(${ClassName} ${className});
    public Page<${ClassName}> queryList(${ClassName} ${className});
    /**
     * æŸ¥è¯¢${functionName}列表
     *
     * @param ${className} ${functionName}
     * @return ${functionName}集合
     */
    public List<${ClassName}> exportQueryList(${ClassName} ${className});
}
ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm
@@ -25,23 +25,129 @@
/**
 * ${functionName}Service业务层处理
 *
 *
 * @author ${author}
 * @date ${datetime}
 */
@Service
public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${ClassName}> implements I${ClassName}Service
public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${ClassName}> implements I${ClassName}Service
{
    @Autowired
    private ${ClassName}Mapper ${className}Mapper;
    /**
     * æŸ¥è¯¢${functionName}列表
     *
     *
     * @param ${className} ${functionName}
     * @return ${functionName}
     */
    @Override
    public List<${ClassName}> queryList(${ClassName} ${className}) {
    public Page<${ClassName}> queryList(${ClassName} ${className}) {
        LambdaQueryWrapper<${ClassName}> wrappers = Wrappers.lambdaQuery();
        #foreach($column in $columns)
            #set($queryType=$column.queryType)
            #set($javaField=$column.javaField)
            #set($javaType=$column.javaType)
            #set($columnName=$column.columnName)
            #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
            #if($column.query)
                #if($column.queryType == "EQ")
                    #if($javaType == 'String')
                        if (StringUtils.isNotBlank(${className}.get$AttrName())){
                        wrappers.eq(${ClassName}::get$AttrName ,${className}.get$AttrName());
                    }
                    #else
                        if (${className}.get$AttrName() != null){
                        wrappers.eq(${ClassName}::get$AttrName ,${className}.get$AttrName());
                    }
                    #end
                #elseif($queryType == "NE")
                    #if($javaType == 'String')
                        if (StringUtils.isNotBlank(${className}.get$AttrName())){
                        wrappers.ne(${ClassName}::get$AttrName ,${className}.get$AttrName());
                    }
                    #else
                        if (${className}.get$AttrName() != null){
                        wrappers.ne(${ClassName}::get$AttrName ,${className}.get$AttrName());
                    }
                    #end
                #elseif($queryType == "GT")
                    #if($javaType == 'String')
                        if (StringUtils.isNotBlank(${className}.get$AttrName())){
                        wrappers.gt(${ClassName}::get$AttrName ,${className}.get$AttrName());
                    }
                    #else
                        if (${className}.get$AttrName() != null){
                        wrappers.gt(${ClassName}::get$AttrName ,${className}.get$AttrName());
                    }
                    #end
                #elseif($queryType == "GTE")
                    #if($javaType == 'String')
                        if (StringUtils.isNotBlank(${className}.get$AttrName())){
                        wrappers.ge(${ClassName}::get$AttrName ,${className}.get$AttrName());
                    }
                    #else
                        if (${className}.get$AttrName() != null){
                        wrappers.ge(${ClassName}::get$AttrName ,${className}.get$AttrName());
                    }
                    #end
                #elseif($queryType == "LT")
                    #if($javaType == 'String')
                        if (StringUtils.isNotBlank(${className}.get$AttrName())){
                        wrappers.lt(${ClassName}::get$AttrName ,${className}.get$AttrName());
                    }
                    #else
                        if (${className}.get$AttrName() != null){
                        wrappers.lt(${ClassName}::get$AttrName ,${className}.get$AttrName());
                    }
                    #end
                #elseif($queryType == "LTE")
                    #if($javaType == 'String')
                        if (StringUtils.isNotBlank(${className}.get$AttrName())){
                        wrappers.le(${ClassName}::get$AttrName ,${className}.get$AttrName());
                    }
                    #else
                        if (${className}.get$AttrName() != null){
                        wrappers.le(${ClassName}::get$AttrName ,${className}.get$AttrName());
                    }
                    #end
                #elseif($queryType == "LIKE")
                    #if($javaType == 'String')
                        if (StringUtils.isNotBlank(${className}.get$AttrName())){
                        wrappers.like(${ClassName}::get$AttrName ,${className}.get$AttrName());
                    }
                    #else
                        if (${className}.get$AttrName() != null){
                        wrappers.like(${ClassName}::get$AttrName ,${className}.get$AttrName());
                    }
                    #end
                #elseif($queryType == "BETWEEN")
                    Map<String, Object> params = ${className}.getParams();
                    if (params.get("begin$AttrName") != null && params.get("end$AttrName") != null) {
                        wrappers.between(${ClassName}::get$AttrName ,params.get("begin$AttrName"),params.get("end$AttrName"));
                    }
                #end
            #end
        #end
        int currentPage = (${className}.getPageNum() == null || ${className}.getPageNum() < 1) ? 1 : ${className}.getPageNum();
        int size = (${className}.getPageSize() == null || ${className}.getPageSize() < 1) ? 10 : ${className}.getPageSize();
        Page<${ClassName}> page = new Page<>(currentPage, size);
        List<${ClassName}> ${className}List = ${className}Mapper.selectPage(page, wrappers).getRecords();
        return  page.setRecords(${className}List);
    }
    /**
     * æŸ¥è¯¢${functionName}列表
     *
     * @param ${className} ${functionName}
     * @return ${functionName}
     */
    @Override
    public List<${ClassName}> exportQueryList(${ClassName} ${className}) {
        LambdaQueryWrapper<${ClassName}> wrappers = Wrappers.lambdaQuery();
#foreach($column in $columns)
#set($queryType=$column.queryType)
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDeathinfo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,103 @@
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;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * æ‚£è€…死亡信息对象 service_deathinfo
 *
 * @author ls
 * @date 2026-01-20
 */
@Data
@ApiModel("患者死亡信息")
public class ServiceDeathinfo extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** $column.columnComment */
    @ApiModelProperty("$column.columnComment")
    //数据库自增改成@TableId(type = IdType.AUTO)
    @TableId(type = IdType.AUTO)
    private Long id;
    /** å…³è”service_donatebaseinfo表的ID */
    @ApiModelProperty("关联service_donatebaseinfo表的ID")
    @Excel(name = "关联service_donatebaseinfo表的ID")
    private Long infoid;
    /** æçŒ®è€…编号 */
    @ApiModelProperty("捐献者编号")
    @Excel(name = "捐献者编号")
    private String donorno;
    /** å™¨å®˜èŽ·å–æœºæž„ç¼–å· å¯¹åº”机构表 */
    @ApiModelProperty("器官获取机构编号 å¯¹åº”机构表")
    @Excel(name = "器官获取机构编号 å¯¹åº”机构表")
    private String gainhospitalno;
    /** å™¨å®˜èŽ·å–æœºæž„åç§° å¯¹åº”机构表 */
    @ApiModelProperty("器官获取机构名称 å¯¹åº”机构表")
    @Excel(name = "器官获取机构名称 å¯¹åº”机构表")
    private String gainhospitalname;
    /** æ­»äº¡æ—¶é—´ */
    @ApiModelProperty("死亡时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "死亡时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date deathtime;
    /** æ­»äº¡åŽŸå›  */
    @ApiModelProperty("死亡原因")
    @Excel(name = "死亡原因")
    private String deathreason;
    /** æ­»äº¡åˆ¤å®šåŒ»ç”Ÿä¸€ */
    @ApiModelProperty("死亡判定医生一")
    @Excel(name = "死亡判定医生一")
    private String deathjudgedocto;
    /** æ­»äº¡åˆ¤å®šåŒ»ç”ŸäºŒ */
    @ApiModelProperty("死亡判定医生二")
    @Excel(name = "死亡判定医生二")
    private String deathjudgedoctt;
    /** æ­»äº¡è¯æ˜Žé™„件路径,多张用;号隔开 */
    @ApiModelProperty("死亡证明附件路径,多张用;号隔开")
    @Excel(name = "死亡证明附件路径,多张用;号隔开")
    private String deathjudgeannex;
    /** æ˜¯å¦é»˜å“€ç¼…怀仪式 0:否;1:是 */
    @ApiModelProperty("是否默哀缅怀仪式 0:否;1:是")
    @Excel(name = "是否默哀缅怀仪式 0:否;1:是")
    private Integer isspendremember;
    /** æ˜¯å¦æ¢å¤é—体仪容 0:否;1:是 */
    @ApiModelProperty("是否恢复遗体仪容 0:否;1:是")
    @Excel(name = "是否恢复遗体仪容 0:否;1:是")
    private Integer isrestoreremains;
    /** ç¼…怀仪式附件路径,多张用;号隔开 */
    @ApiModelProperty("缅怀仪式附件路径,多张用;号隔开")
    @Excel(name = "缅怀仪式附件路径,多张用;号隔开")
    private String rememberannex;
    /** è´Ÿè´£äººç¼–号 */
    @ApiModelProperty("负责人编号")
    @Excel(name = "负责人编号")
    private String responsibleuserid;
    /** è´Ÿè´£äººå§“名 */
    @ApiModelProperty("负责人姓名")
    @Excel(name = "负责人姓名")
    private String responsibleusername;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatebaseinfoReport.java
@@ -323,7 +323,7 @@
    private Integer terminationCase;
    /**
     * è”系人(协调员姓名)
     * éƒ¨é—¨ç¼–号
     */
    @ApiModelProperty("部门编号")
    @Excel(name = "部门编号", readConverterExp = "部门编号")
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonateorgan.java
@@ -33,6 +33,11 @@
    private Long id;
    /**
     * å…³è”service_donateorgan_base表的ID
     */
    @ApiModelProperty("关联service_donateorgan_base表的ID(必填)")
    private Long baseId;
    /**
     * å…³è”service_donatebaseinfo表的ID
     */
    @ApiModelProperty("关联service_donatebaseinfo表的ID")
@@ -313,7 +318,6 @@
    @ApiModelProperty("系统编号")
    @Excel(name = "系统编号")
    private String caseno;
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonateorganBase.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
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;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * æçŒ®å™¨å®˜åˆ†é…åŸºç¡€å¯¹è±¡ service_donateorgan_base
 *
 * @author ls
 * @date 2026-01-17
 */
@Data
@ApiModel("捐献器官分配基础")
public class ServiceDonateorganBase extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** $column.columnComment */
    @ApiModelProperty("$column.columnComment")
    //数据库自增改成@TableId(type = IdType.AUTO)
    @TableId(type = IdType.AUTO)
    private Long id;
    /** å…³è”service_donatebaseinfo表的ID */
    @ApiModelProperty("关联service_donatebaseinfo表的ID")
    @Excel(name = "关联service_donatebaseinfo表的ID")
    private Long infoid;
    /** åˆ†é…çŠ¶æ€ï¼š0:未分配;1:已分配;2作废 */
    @ApiModelProperty("分配状态:0:未分配;1:已分配;2作废")
    @Excel(name = "分配状态:0:未分配;1:已分配;2作废")
    private Long allocationStatus;
    /** åˆ†é…æ—¶é—´ */
    @ApiModelProperty("分配时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "分配时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date allocationTime;
    /** ç™»è®°äººç¼–号 */
    @ApiModelProperty("登记人编号")
    @Excel(name = "登记人编号")
    private String registrationCode;
    /** ç™»è®°äººå§“名 */
    @ApiModelProperty("登记人姓名")
    @Excel(name = "登记人姓名")
    private String registrationName;
    /** ç™»è®°æ—¶é—´ */
    @ApiModelProperty("登记时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "登记时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date registrationTime;
    /** é¢„计时间 */
    @ApiModelProperty("预计时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "预计时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date estimatedtime;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonationwitness.java
@@ -57,38 +57,38 @@
    private String gainhospitalname;
    /**
     * æ­»äº¡æ—¶é—´
     * æ­»äº¡æ—¶é—´ï¼ˆåœç”¨ï¼‰
     */
    @ApiModelProperty("死亡时间")
    @ApiModelProperty("死亡时间(停用)")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "死亡时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date deathtime;
    /**
     * æ­»äº¡åŽŸå› 
     * æ­»äº¡åŽŸå› ï¼ˆåœç”¨ï¼‰
     */
    @ApiModelProperty("死亡原因")
    @Excel(name = "死亡原因")
    @ApiModelProperty("死亡原因(停用)")
    @Excel(name = "死亡原因(停用)")
    private String deathreason;
    /**
     * æ­»äº¡åˆ¤å®šåŒ»ç”Ÿä¸€
     * æ­»äº¡åˆ¤å®šåŒ»ç”Ÿä¸€ï¼ˆåœç”¨ï¼‰
     */
    @ApiModelProperty("死亡判定医生一")
    @Excel(name = "死亡判定医生一")
    @ApiModelProperty("死亡判定医生一(停用)")
    @Excel(name = "死亡判定医生一(停用)")
    private String deathjudgedocto;
    /**
     * æ­»äº¡åˆ¤å®šåŒ»ç”ŸäºŒ
     */
    @ApiModelProperty("死亡判定医生二")
    @Excel(name = "死亡判定医生二")
    @ApiModelProperty("死亡判定医生二(停用)")
    @Excel(name = "死亡判定医生二(停用)")
    private String deathjudgedoctt;
    /**
     * æ­»äº¡è¯æ˜Žé™„件路径
     * æ­»äº¡è¯æ˜Žé™„件路径(停用)
     */
    @ApiModelProperty("死亡证明附件路径")
    @ApiModelProperty("死亡证明附件路径(停用)")
    private String deathjudgeannex;
    /**
@@ -115,23 +115,23 @@
    private String operationdoctor;
    /**
     * æ˜¯å¦é»˜å“€ç¼…怀仪式
     * æ˜¯å¦é»˜å“€ç¼…怀仪式(停用)
     */
    @ApiModelProperty("是否默哀缅怀仪式")
    @Excel(name = "是否默哀缅怀仪式")
    @ApiModelProperty("是否默哀缅怀仪式(停用)")
    @Excel(name = "是否默哀缅怀仪式(停用)")
    private Integer isspendremember;
    /**
     * æ˜¯å¦æ¢å¤é—体仪容
     */
    @ApiModelProperty("是否恢复遗体仪容")
    @Excel(name = "是否恢复遗体仪容")
    @ApiModelProperty("是否恢复遗体仪容(停用)")
    @Excel(name = "是否恢复遗体仪容(停用)")
    private Integer isrestoreremains;
    /**
     * ç¼…怀仪式附件路径
     * ç¼…怀仪式附件路径(停用)
     */
    @ApiModelProperty("缅怀仪式附件路径")
    @ApiModelProperty("缅怀仪式附件路径(停用)")
    private String rememberannex;
    /**
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceMedicalevaluation.java
@@ -161,7 +161,13 @@
     * è¯„估状态:   é¦–次:1.评估通过  2评估不通过         æœ€ç»ˆï¼š3.评估通过  4评估不通过
     */
    @ApiModelProperty("评估状态:   é¦–次:1.评估通过  2评估不通过         æœ€ç»ˆï¼š3.评估通过  4评估不通过")
    private String assessState;
    private String firstAssessState;
    /**
     * è¯„估状态:   é¦–次:1.评估通过  2评估不通过         æœ€ç»ˆï¼š3.评估通过  4评估不通过
     */
    @ApiModelProperty("评估状态:   é¦–次:1.评估通过  2评估不通过         æœ€ç»ˆï¼š3.评估通过  4评估不通过")
    private String secondAssessState;
    /**
@@ -179,7 +185,6 @@
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "二次评估时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date assessSecondTime;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceOrganallocation.java
@@ -20,7 +20,7 @@
 * @date 2021-11-10
 */
@Data
@ApiModel("器官分配")
@ApiModel("器官分配(停用)")
public class ServiceOrganallocation extends BaseEntity {
    private static final long serialVersionUID = 1L;
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceRelativesconfirmation.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,180 +19,256 @@
 */
@Data
@ApiModel("捐献亲属确认")
public class ServiceRelativesconfirmation extends BaseEntity
{
public class ServiceRelativesconfirmation 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")
    private Long infoid;
    /** æçŒ®è€…编号 */
    /**
     * æçŒ®è€…编号
     */
    @ApiModelProperty("捐献者编号")
    @Excel(name = "捐献者编号")
    private String donorno;
    /** å§“名 */
    /**
     * å§“名
     */
    @ApiModelProperty("姓名")
    @Excel(name = "姓名")
    private String name;
    /** è¯ä»¶ç±»åž‹ */
    /**
     * è¯ä»¶ç±»åž‹
     */
    @ApiModelProperty("证件类型")
    private Long idcardtype;
    /** è¯ä»¶å·ç  */
    /**
     * è¯ä»¶å·ç 
     */
    @ApiModelProperty("证件号码")
    @Excel(name = "证件号码")
    private String idcardno;
    /** è”系电话 */
    /**
     * è”系电话
     */
    @ApiModelProperty("联系电话")
    @Excel(name = "联系电话")
    private String phone;
    /** çŽ°ä½åœ°å€ */
    /**
     * çŽ°ä½åœ°å€
     */
    @ApiModelProperty("现住地址")
    @Excel(name = "现住地址")
    private String residenceaddress;
    /** çŽ°ä½åœ°å€çœä»£ç  */
    /**
     * çŽ°ä½åœ°å€çœä»£ç 
     */
    @ApiModelProperty("现住地址省代码")
    private String residenceprovince;
    /** çŽ°ä½åœ°å€çœåç§° */
    /**
     * çŽ°ä½åœ°å€çœåç§°
     */
    @ApiModelProperty("现住地址省名称")
    @Excel(name = "现住地址省名称")
    private String residenceprovincename;
    /** å¸‚编号 */
    /**
     * å¸‚编号
     */
    @ApiModelProperty("市编号")
    private String residencecity;
    /** å¸‚名称 */
    /**
     * å¸‚名称
     */
    @ApiModelProperty("市名称")
    private String residencecityname;
    /** æ‰€å±žè¡—道(镇)根据行政区划表 */
    /**
     * æ‰€å±žè¡—道(镇)根据行政区划表
     */
    @ApiModelProperty("所属街道(镇)根据行政区划表")
    private String residencetown;
    /** æ‰€å±žè¡—道(镇)名称 */
    /**
     * æ‰€å±žè¡—道(镇)名称
     */
    @ApiModelProperty("所属街道(镇)名称")
    private String residencetownname;
    /** ç¤¾åŒºï¼ˆæ‘)编号 æ ¹æ®è¡Œæ”¿åŒºåˆ’表 */
    /**
     * ç¤¾åŒºï¼ˆæ‘)编号 æ ¹æ®è¡Œæ”¿åŒºåˆ’表
     */
    @ApiModelProperty("社区(村)编号 æ ¹æ®è¡Œæ”¿åŒºåˆ’表")
    private String residencecommunity;
    /** ç¤¾åŒºï¼ˆæ‘)名称 */
    /**
     * ç¤¾åŒºï¼ˆæ‘)名称
     */
    @ApiModelProperty("社区(村)名称")
    private String residencecommunityname;
    /** æ‰€å±žåŒºåŸŸç¼–号  æ ¹æ®è¡Œæ”¿åŒºåˆ’表 */
    /**
     * æ‰€å±žåŒºåŸŸç¼–号  æ ¹æ®è¡Œæ”¿åŒºåˆ’表
     */
    @ApiModelProperty("所属区域编号  æ ¹æ®è¡Œæ”¿åŒºåˆ’表")
    private String residencecountycode;
    /** æ‰€å±žåŒºåŸŸåç§° */
    /**
     * æ‰€å±žåŒºåŸŸåç§°
     */
    @ApiModelProperty("所属区域名称")
    private String residencecountyname;
    /** äº²å±žå…³ç³»,多选 ;号隔开 æ ¹æ®å­—å…¸sys_KinshipConfirm */
    /**
     * äº²å±žå…³ç³»,多选 ;号隔开 æ ¹æ®å­—å…¸sys_KinshipConfirm
     */
    @ApiModelProperty("亲属关系,多选 ;号隔开 æ ¹æ®å­—å…¸sys_KinshipConfirm")
    @Excel(name = "亲属关系,多选 ;号隔开 æ ¹æ®å­—å…¸sys_KinshipConfirm")
    private String kinship;
    /** å­å¥³æ•°é‡ */
    /**
     * å­å¥³æ•°é‡
     */
    @ApiModelProperty("子女数量")
    private Long kinshipChildrennum;
    /** ä¸Žæèµ è€…关系 æ ¹æ®å­—å…¸sys_FamilyRelation */
    /**
     * ä¸Žæèµ è€…关系 æ ¹æ®å­—å…¸sys_FamilyRelation
     */
    @ApiModelProperty("与捐赠者关系 æ ¹æ®å­—å…¸sys_FamilyRelation")
    private String signfamilyrelations;
    /** äº²å±žå…³ç³»ç¡®è®¤ç­¾å­— */
    /**
     * äº²å±žå…³ç³»ç¡®è®¤ç­¾å­—
     */
    @ApiModelProperty("亲属关系确认签字")
    private String kinshipconfirmationsign;
    /** æçŒ®å†³å®š */
    /**
     * æçŒ®å†³å®š
     */
    @ApiModelProperty("捐献决定")
    @Excel(name = "捐献决定")
    private String organdecision;
    /** å…¶ä»– */
    /**
     * å…¶ä»–
     */
    @ApiModelProperty("其他")
    private String organdecisionOther;
    /** äº²å±žç¡®è®¤ç­¾å­— */
    /**
     * äº²å±žç¡®è®¤ç­¾å­—
     */
    @ApiModelProperty("亲属确认签字")
    private String relativeconfirmationsign;
    /** ä¸Žæèµ è€…关系 */
    /**
     * ä¸Žæèµ è€…关系
     */
    @ApiModelProperty("与捐赠者关系")
    private String familyrelations;
    /** èŽ·å–ç»„ç»‡ç¼–å· */
    /**
     * èŽ·å–ç»„ç»‡ç¼–å·
     */
    @ApiModelProperty("获取组织编号")
    private String acquisitiontissueno;
    /** èŽ·å–ç»„ç»‡åç§° */
    /**
     * èŽ·å–ç»„ç»‡åç§°
     */
    @ApiModelProperty("获取组织名称")
    private String acquisitiontissuename;
    /** è´Ÿè´£äººç¼–号 */
    /**
     * è´Ÿè´£äººç¼–号
     */
    @ApiModelProperty("负责人编号")
    private String responsibleuserid;
    /** è´Ÿè´£äººå§“名 */
    /**
     * è´Ÿè´£äººå§“名
     */
    @ApiModelProperty("负责人姓名")
    @Excel(name = "负责人姓名")
    private String responsibleusername;
    /** åè°ƒå‘˜ç­¾å­—1 */
    /**
     * åè°ƒå‘˜ç­¾å­—1
     */
    @ApiModelProperty("协调员签字1")
    @Excel(name = "协调员签字1")
    private String coordinateduserido;
    /** è”络人一姓名 */
    /**
     * è”络人一姓名
     */
    @ApiModelProperty("联络人一姓名")
    private String coordinatedusernameo;
    /** åè°ƒå‘˜ç­¾å­—2 */
    /**
     * åè°ƒå‘˜ç­¾å­—2
     */
    @ApiModelProperty("协调员签字2")
    @Excel(name = "协调员签字2")
    private String coordinateduseridt;
    /** è”络人二姓名 */
    /**
     * è”络人二姓名
     */
    @ApiModelProperty("联络人二姓名")
    private String coordinatedusernamet;
    /** ä¸“职人员编号 */
    /**
     * ä¸“职人员编号
     */
    @ApiModelProperty("专职人员编号")
    private String operatorno;
    /** ä¸“职人员姓名 */
    /**
     * ä¸“职人员姓名
     */
    @ApiModelProperty("专职人员姓名")
    private String operatorname;
    /** ç­¾ç½²æ—¥æœŸ */
    /**
     * ç­¾ç½²æ—¥æœŸ
     */
    @ApiModelProperty("签署日期")
//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "签署日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date signdate;
    /** æ°‘族 */
    /**
     * æ°‘族
     */
    @ApiModelProperty("民族")
    private String nation;
    /** å­¦åކ */
    /**
     * å­¦åކ
     */
    @ApiModelProperty("学历")
    private String education;
@@ -200,5 +277,17 @@
     */
    @ApiModelProperty("职业")
    private String occupation;
    /**
     * é™„ä»¶
     */
    @ApiModelProperty("附件")
    private String assessannex;
    /**
     * å®¶å±žæ„è§å¤‡æ³¨
     */
    @ApiModelProperty("家属意见备注")
    private String relativeRemark;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/DeathBaseInfoDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,188 @@
package com.ruoyi.project.domain.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * æ‚£è€…死亡信息对象 service_deathinfo
 *
 * @author ls
 * @date 2026-01-20
 */
@Data
@ApiModel("患者死亡信息响应对象")
public class DeathBaseInfoDTO extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * baseInfo的ID
     */
    @ApiModelProperty("baseInfo的ID")
    private Long infoid;
    /**
     * è®°å½•状态
     */
    @ApiModelProperty("记录状态")
    @Excel(name = "记录状态")
    private String recordstate;
    /**
     * æ¡ˆä¾‹ç¼–号
     */
    @ApiModelProperty("案例编号")
    @Excel(name = "案例编号")
    private String caseNo;
    /**
     * æ‰€åœ¨åŒ»ç–—机构名称
     */
    @ApiModelProperty("所在医疗机构名称")
    @Excel(name = "所在医疗机构名称")
    private String treatmenthospitalname;
    /**
     * æ‰€åœ¨åŒ»ç–—机构编码
     */
    @ApiModelProperty("所在医疗机构编码")
    private String treatmenthospitalno;
    /**
     * æ€§åˆ«
     */
    @ApiModelProperty("性别")
    private String sex;
    /**
     * å§“名
     */
    @ApiModelProperty("姓名")
    @Excel(name = "姓名")
    private String name;
    /**
     * ä½é™¢å·
     */
    @ApiModelProperty("住院号")
    @Excel(name = "住院号")
    private String inpatientno;
    /**
     * å¹´é¾„
     */
//    @TableField(exist = false)
    @ApiModelProperty("年龄")
    private Long age;
    /**
     * è¡€åž‹
     */
    @ApiModelProperty("血型 ")
    private String bloodtype;
    /**
     * è¯ä»¶å·ç 
     */
    @ApiModelProperty("证件号码")
    private String idcardno;
    /**
     * ç–¾ç—…诊断名称
     */
    @ApiModelProperty("疾病诊断名称")
    @Excel(name = "疾病诊断名称")
    private String diagnosisname;
    /**
     * æçŒ®è€…编号
     */
    @ApiModelProperty("捐献者编号")
    @Excel(name = "捐献者编号")
    private String donorno;
    /**
     * å™¨å®˜èŽ·å–æœºæž„ç¼–å· å¯¹åº”机构表
     */
    @ApiModelProperty("器官获取机构编号 å¯¹åº”机构表")
    @Excel(name = "器官获取机构编号 å¯¹åº”机构表")
    private String gainhospitalno;
    /**
     * å™¨å®˜èŽ·å–æœºæž„åç§° å¯¹åº”机构表
     */
    @ApiModelProperty("器官获取机构名称 å¯¹åº”机构表")
    @Excel(name = "器官获取机构名称 å¯¹åº”机构表")
    private String gainhospitalname;
    /**
     * æ­»äº¡æ—¶é—´
     */
    @ApiModelProperty("死亡时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "死亡时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date deathtime;
    /**
     * æ­»äº¡åŽŸå› 
     */
    @ApiModelProperty("死亡原因")
    @Excel(name = "死亡原因")
    private String deathreason;
    /**
     * æ­»äº¡åˆ¤å®šåŒ»ç”Ÿä¸€
     */
    @ApiModelProperty("死亡判定医生一")
    @Excel(name = "死亡判定医生一")
    private String deathjudgedocto;
    /**
     * æ­»äº¡åˆ¤å®šåŒ»ç”ŸäºŒ
     */
    @ApiModelProperty("死亡判定医生二")
    @Excel(name = "死亡判定医生二")
    private String deathjudgedoctt;
    /**
     * æ˜¯å¦é»˜å“€ç¼…怀仪式 0:否;1:是
     */
    @ApiModelProperty("是否默哀缅怀仪式 0:否;1:是")
    @Excel(name = "是否默哀缅怀仪式 0:否;1:是")
    private Integer isspendremember;
    /**
     * æ˜¯å¦æ¢å¤é—体仪容 0:否;1:是
     */
    @ApiModelProperty("是否恢复遗体仪容 0:否;1:是")
    @Excel(name = "是否恢复遗体仪容 0:否;1:是")
    private Integer isrestoreremains;
    /**
     * è´Ÿè´£äººç¼–号
     */
    @ApiModelProperty("负责人编号")
    @Excel(name = "负责人编号")
    private String responsibleuserid;
    /**
     * è´Ÿè´£äººå§“名
     */
    @ApiModelProperty("负责人姓名")
    @Excel(name = "负责人姓名")
    private String responsibleusername;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/DonatebaseinfoProgressDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,196 @@
package com.ruoyi.project.domain.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * æçŒ®åŸºç¡€å¯¹è±¡ service_donatebaseinfo
 *
 * @author ruoyi
 * @date 2021-11-15
 */
@Data
@ApiModel("捐献进度基础信息")
public class DonatebaseinfoProgressDTO extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * æ²»ç–—医院
     */
    @ApiModelProperty("治疗医院")
    private String treatmenthospitalno;
    /**
     * æ‰€åœ¨åŒ»ç–—机构
     */
    @ApiModelProperty("所在医疗机构")
    @Excel(name = "所在医疗机构")
    private String treatmenthospitalname;
    /**
     * æçŒ®è€…编号
     */
    @ApiModelProperty("捐献者编号")
    private String donorno;
    /**
     * æ¡ˆä¾‹ç¼–号
     */
    @ApiModelProperty("案例编号")
    @Excel(name = "案例编号")
    private String caseNo;
    /**
     * å§“名
     */
    @ApiModelProperty("姓名")
    @Excel(name = "姓名")
    private String name;
    /**
     * æ€§åˆ«
     */
    @ApiModelProperty("性别")
    private String sex;
    /**
     * è®°å½•状态
     */
    @ApiModelProperty("记录状态")
    @Excel(name = "记录状态")
    private String recordstate;
    /**
     * å¹´é¾„
     */
    @ApiModelProperty("年龄")
    private Long age;
    /**
     * å¹´é¾„单位
     */
    @ApiModelProperty("年龄单位")
    private String ageunit;
    /**
     * è¡€åž‹
     */
    @ApiModelProperty("血型 ")
    private String bloodtype;
    /**
     * æŠ¥å‘Šæ—¶é—´
     */
    @ApiModelProperty("报告时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "报告时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date reporttime;
    /**
     * ç–¾ç—…诊断名称
     */
    @ApiModelProperty("疾病诊断名称")
    private String diagnosisname;
    /**
     * åè°ƒå‘˜ç¼–号
     */
    @ApiModelProperty("协调员编号")
    @Excel(name = "协调员编号", readConverterExp = "协调员编号")
    private String coordinatorNo;
    /**
     * åè°ƒå‘˜å§“名
     */
    @ApiModelProperty("协调员姓名")
    @Excel(name = "协调员姓名", readConverterExp = "协调员姓名")
    private String coordinatorName;
    /**
     * ç¬¬ä¸€æ¬¡è¯„ä¼°æ—¶é—´
     */
    @ApiModelProperty("第一次评估时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "第一次评估时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date assessFirstTime;
    /**
     * ç¬¬äºŒæ¬¡è¯„ä¼°æ—¶é—´
     */
    @ApiModelProperty("第二次评估时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "第二次评估时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date assessSecondTime;
    /**
     * ç¬¬ä¸€æ¬¡è¯„估结论
     */
    @ApiModelProperty("第一次评估结论")
    private String firstAssessState;
    /**
     * ç¬¬äºŒæ¬¡è¯„估结论
     */
    @ApiModelProperty("第二次评估结论")
    private String secondAssessState;
    /**
     * äº²å±žç¡®è®¤æ—¶é—´
     */
    @ApiModelProperty("亲属确认时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "亲属确认时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date signDate;
    /**
     * ä¼¦ç†å®¡æŸ¥ä¸“家结论
     */
    @ApiModelProperty("伦理审查专家结论")
    private String expertConclusion;
    /**
     * ä¼¦ç†å®¡æŸ¥ä¸“家结论时间
     */
    @ApiModelProperty("伦理审查专家结论时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "伦理审查专家结论时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date expertTime;
    /**
     * å™¨å®˜åˆ†é…æ•°é‡
     */
    @ApiModelProperty("器官分配数量")
    @Excel(name = "器官分配数量", width = 30)
    private Long organCount;
    /**
     * èŽ·å–è§è¯æ—¶é—´
     */
    @ApiModelProperty("获取见证时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "获取见证时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date operationBegTime;
    /**
     * å®Œæˆç™»è®°æ—¶é—´
     */
    @ApiModelProperty("完成登记时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "完成登记时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date completeTime;
    @ApiModelProperty("终止案例:0开启,1终止    é»˜è®¤å€¼ï¼š0")
    @Excel(name = "终止案例")
    private Integer terminationCase;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/DonateorganBaseInfoDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,156 @@
package com.ruoyi.project.domain.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.project.domain.ServiceDonateorgan;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
 * å™¨å®˜åˆ†é…å¯¹è±¡ DonateorganBaseInfoVO
 * å™¨å®˜åˆ†é…åŸºæœ¬ä¿¡æ¯è¯·æ±‚对象
 *
 * @author ruoyi
 * @date 2021-11-10
 */
@Data
@ApiModel("器官分配基本信息请求对象")
public class DonateorganBaseInfoDTO extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * baseInfo的ID
     */
    @ApiModelProperty("baseInfo的ID")
    private Long infoid;
    /**
     * baseInfo的ID
     */
    @ApiModelProperty("baseInfo的ID")
    private Long id;
    /**
     * è®°å½•状态
     */
    @ApiModelProperty("记录状态")
    @Excel(name = "记录状态")
    private String recordstate;
    /**
     * æ¡ˆä¾‹ç¼–号
     */
    @ApiModelProperty("案例编号")
    @Excel(name = "案例编号")
    private String caseNo;
    /**
     * æçŒ®è€…编号
     */
    @ApiModelProperty("捐献者编号")
    @Excel(name = "捐献者编号")
    private String donorno;
    /**
     * æ‰€åœ¨åŒ»ç–—机构名称
     */
    @ApiModelProperty("所在医疗机构名称")
    @Excel(name = "所在医疗机构名称")
    private String treatmenthospitalname;
    /**
     * æ‰€åœ¨åŒ»ç–—机构编码
     */
    @ApiModelProperty("所在医疗机构编码")
    private String treatmenthospitalno;
    /**
     * æ€§åˆ«
     */
    @ApiModelProperty("性别")
    private String sex;
    /**
     * å§“名
     */
    @ApiModelProperty("姓名")
    @Excel(name = "姓名")
    private String name;
    /**
     * å¹´é¾„
     */
//    @TableField(exist = false)
    @ApiModelProperty("年龄")
    private Long age;
    /**
     * è¡€åž‹
     */
    @ApiModelProperty("血型 ")
    private String bloodtype;
    /**
     * è¯ä»¶å·ç 
     */
    @ApiModelProperty("证件号码")
    private String idcardno;
    /**
     * ç–¾ç—…诊断名称
     */
    @ApiModelProperty("疾病诊断名称")
    @Excel(name = "疾病诊断名称")
    private String diagnosisname;
    /**
     * åˆ†é…çŠ¶æ€ï¼š0:未分配;1:已分配;2作废
     */
    @ApiModelProperty("分配状态:0:未分配;1:已分配;2作废")
    @Excel(name = "分配状态:0:未分配;1:已分配;2作废")
    private Long allocationStatus;
    /**
     * åˆ†é…æ—¶é—´
     */
    @ApiModelProperty("分配时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "分配时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date allocationTime;
    /**
     * ç™»è®°äººç¼–号
     */
    @ApiModelProperty("登记人编号")
    @Excel(name = "登记人编号")
    private String registrationCode;
    /**
     * ç™»è®°äººå§“名
     */
    @ApiModelProperty("登记人姓名")
    @Excel(name = "登记人姓名")
    private String registrationName;
    /**
     * ç™»è®°æ—¶é—´
     */
    @ApiModelProperty("登记时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "登记时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date registrationTime;
    /**
     * æçŒ®å™¨å®˜ç®¡ç†åˆ—表
     */
    @ApiModelProperty("捐献多个器官详情管理列表")
    private List<ServiceDonateorgan> serviceDonateorganList;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/DonationCompletionBaseInfoDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,122 @@
package com.ruoyi.project.domain.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
@ApiModel("器官捐献完成基本信息响应对象(器官利用响应对象)")
public class DonationCompletionBaseInfoDTO {
    /**
     * baseInfo的ID
     */
    @ApiModelProperty("baseInfo的ID")
    private Long infoid;
    /**
     * è®°å½•状态
     */
    @ApiModelProperty("记录状态")
    @Excel(name = "记录状态")
    private String recordstate;
    /**
     * æ¡ˆä¾‹ç¼–号
     */
    @ApiModelProperty("案例编号")
    @Excel(name = "案例编号")
    private String caseNo;
    /**
     * æ‰€åœ¨åŒ»ç–—机构名称
     */
    @ApiModelProperty("所在医疗机构名称")
    @Excel(name = "所在医疗机构名称")
    private String treatmenthospitalname;
    /**
     * æ‰€åœ¨åŒ»ç–—机构编码
     */
    @ApiModelProperty("所在医疗机构编码")
    private String treatmenthospitalno;
    /**
     * æ€§åˆ«
     */
    @ApiModelProperty("性别")
    private String sex;
    /**
     * ä½é™¢å·
     */
    @ApiModelProperty("住院号")
    private String inpatientno;
    /**
     * æçŒ®è€…编号
     */
    @ApiModelProperty("捐献者编号")
    @Excel(name = "捐献者编号")
    private String donorno;
    /**
     * æçŒ®è€…姓名
     */
    @ApiModelProperty("捐献者姓名")
    @Excel(name = "捐献者姓名")
    private String name;
    /**
     * å¹´é¾„
     */
//    @TableField(exist = false)
    @ApiModelProperty("年龄")
    private Long age;
    /**
     * è¡€åž‹
     */
    @ApiModelProperty("血型 ")
    private String bloodtype;
    /**
     * è¯ä»¶å·ç 
     */
    @ApiModelProperty("证件号码")
    private String idcardno;
    /**
     * ç–¾ç—…诊断名称
     */
    @ApiModelProperty("疾病诊断名称")
    @Excel(name = "疾病诊断名称")
    private String diagnosisname;
    /**
     * å®Œæˆæ—¶é—´
     */
    @ApiModelProperty("完成时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date completetime;
    /**
     * è´Ÿè´£äººç¼–号
     */
    @ApiModelProperty("负责人编号")
    private String responsibleuserid;
    /**
     * è´Ÿè´£äººå§“名
     */
    @ApiModelProperty("负责人姓名")
    @Excel(name = "负责人姓名")
    private String responsibleusername;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/DonationwitnessBaseInfoDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,368 @@
package com.ruoyi.project.domain.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.project.domain.ServiceDonationwitnessorgan;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
 * æçŒ®è§è¯åŸºæœ¬ä¿¡æ¯è¯·æ±‚对象
 *
 * @author ruoyi
 * @date 2026-01-20
 */
@Data
@ApiModel("捐献见证基本信息响应对象")
public class DonationwitnessBaseInfoDTO extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * $column.columnComment
     */
    @ApiModelProperty("捐献见证的id")
    private Long id;
    /**
     *
     */
    @ApiModelProperty("baseInfo的id")
    private Long infoid;
    /**
     * å§“名
     */
    @ApiModelProperty("姓名")
    @Excel(name = "姓名")
    private String name;
    /**
     * è®°å½•状态
     */
    @ApiModelProperty("记录状态")
    @Excel(name = "记录状态")
    private String recordstate;
    /**
     * æ¡ˆä¾‹ç¼–号
     */
    @ApiModelProperty("案例编号")
    @Excel(name = "案例编号")
    private String caseNo;
    /**
     * æçŒ®è€…编号
     */
    @ApiModelProperty("捐献者编号")
    @Excel(name = "捐献者编号")
    private String donorno;
    /**
     * æ‰€åœ¨åŒ»ç–—机构名称
     */
    @ApiModelProperty("所在医疗机构名称")
    @Excel(name = "所在医疗机构名称")
    private String treatmenthospitalname;
    /**
     * æ‰€åœ¨åŒ»ç–—机构编码
     */
    @ApiModelProperty("所在医疗机构编码")
    private String treatmenthospitalno;
    /**
     * æ€§åˆ«
     */
    @ApiModelProperty("性别")
    private String sex;
    /**
     * å¹´é¾„
     */
//    @TableField(exist = false)
    @ApiModelProperty("年龄")
    private Long age;
    /**
     * è¡€åž‹
     */
    @ApiModelProperty("血型 ")
    private String bloodtype;
    /**
     * è¯ä»¶å·ç 
     */
    @ApiModelProperty("证件号码")
    private String idcardno;
    /**
     * ç–¾ç—…诊断名称
     */
    @ApiModelProperty("疾病诊断名称")
    @Excel(name = "疾病诊断名称")
    private String diagnosisname;
    /**
     * åè°ƒå‘˜å§“名
     */
    @ApiModelProperty("协调员姓名")
    @Excel(name = "协调员姓名", readConverterExp = "协调员姓名")
    private String coordinatorName;
    /**
     * å™¨å®˜èŽ·å–æœºæž„ç¼–å·
     */
    @ApiModelProperty("器官获取机构编号")
    private String gainhospitalno;
    /**
     * å™¨å®˜èŽ·å–æœºæž„åç§°
     */
    @ApiModelProperty("器官获取机构名称")
    @Excel(name = "器官获取机构名称")
    private String gainhospitalname;
    /**
     * æ­»äº¡æ—¶é—´ï¼ˆåœç”¨ï¼‰
     */
    @ApiModelProperty("死亡时间(停用)")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "死亡时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date deathtime;
    /**
     * æ­»äº¡åŽŸå› ï¼ˆåœç”¨ï¼‰
     */
    @ApiModelProperty("死亡原因(停用)")
    @Excel(name = "死亡原因(停用)")
    private String deathreason;
    /**
     * æ­»äº¡åˆ¤å®šåŒ»ç”Ÿä¸€ï¼ˆåœç”¨ï¼‰
     */
    @ApiModelProperty("死亡判定医生一(停用)")
    @Excel(name = "死亡判定医生一(停用)")
    private String deathjudgedocto;
    /**
     * æ­»äº¡åˆ¤å®šåŒ»ç”ŸäºŒ
     */
    @ApiModelProperty("死亡判定医生二(停用)")
    @Excel(name = "死亡判定医生二(停用)")
    private String deathjudgedoctt;
    /**
     * æ­»äº¡è¯æ˜Žé™„件路径(停用)
     */
    @ApiModelProperty("死亡证明附件路径(停用)")
    private String deathjudgeannex;
    /**
     * æ‰‹æœ¯å¼€å§‹æ—¶é—´
     */
    @ApiModelProperty("手术开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "手术开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date operationbegtime;
    /**
     * æ‰‹æœ¯ç»“束时间
     */
    @ApiModelProperty("手术结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "手术结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date operationendtime;
    /**
     * æ‰‹æœ¯åŒ»ç”Ÿ
     */
    @ApiModelProperty("手术医生")
    @Excel(name = "手术医生")
    private String operationdoctor;
    /**
     * æ˜¯å¦é»˜å“€ç¼…怀仪式(停用)
     */
    @ApiModelProperty("是否默哀缅怀仪式(停用)")
    @Excel(name = "是否默哀缅怀仪式(停用)")
    private Integer isspendremember;
    /**
     * æ˜¯å¦æ¢å¤é—体仪容
     */
    @ApiModelProperty("是否恢复遗体仪容(停用)")
    @Excel(name = "是否恢复遗体仪容(停用)")
    private Integer isrestoreremains;
    /**
     * ç¼…怀仪式附件路径(停用)
     */
    @ApiModelProperty("缅怀仪式附件路径(停用)")
    private String rememberannex;
    /**
     * è´Ÿè´£äººç¼–号
     */
    @ApiModelProperty("负责人编号")
    private String responsibleuserid;
    /**
     * è´Ÿè´£äººå§“名
     */
    @ApiModelProperty("负责人姓名")
    @Excel(name = "负责人姓名")
    private String responsibleusername;
    /**
     * è”络人一编号
     */
    @ApiModelProperty("联络人一编号")
    private String coordinateduserido;
    /**
     * è”络人一姓名
     */
    @ApiModelProperty("联络人一姓名")
    private String coordinatedusernameo;
    /**
     * è”络人二编号
     */
    @ApiModelProperty("联络人二编号")
    private String coordinateduseridt;
    /**
     * è”络人二姓名
     */
    @ApiModelProperty("联络人二姓名")
    private String coordinatedusernamet;
    /**
     * è…¹ä¸»åŠ¨è„‰æ’ç®¡æ—¶é—´
     */
    @ApiModelProperty("腹主动脉插管时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "腹主动脉插管时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date abdominalaortacannulatime;
    /**
     * è…¹ä¸»åŠ¨è„‰çŒæ³¨æ—¶é—´
     */
    @ApiModelProperty("腹主动脉灌注时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "腹主动脉灌注时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date abdominalaortaperfusiontime;
    /**
     * é—¨é™è„‰æ’管时间
     */
    @ApiModelProperty("门静脉插管时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "门静脉插管时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date portalveincannulatime;
    /**
     * é—¨é™è„‰çŒæ³¨æ—¶é—´
     */
    @ApiModelProperty("门静脉灌注时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "门静脉灌注时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date portalveinperfusiontime;
    /**
     * è‚ºåŠ¨è„‰æ’ç®¡æ—¶é—´
     */
    @ApiModelProperty("肺动脉插管时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "肺动脉插管时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date pulmonaryarterycannulatime;
    /**
     * è‚ºåŠ¨è„‰çŒæ³¨æ—¶é—´
     */
    @ApiModelProperty("肺动脉灌注时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "肺动脉灌注时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date pulmonaryarteryperfusiontime;
    /**
     * ä¸»åŠ¨è„‰æ’ç®¡æ—¶é—´
     */
    @ApiModelProperty("主动脉插管时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "主动脉插管时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date aortacannulatime;
    /**
     * ä¸»åŠ¨è„‰çŒæ³¨æ—¶é—´
     */
    @ApiModelProperty("主动脉灌注时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "主动脉灌注时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date aortaperfusiontime;
    /**
     * æçŒ®å™¨å®˜
     */
    @ApiModelProperty("捐献器官")
    @Excel(name = "捐献器官")
    private String organdonation;
    /**
     * æçŒ®å™¨å®˜ å…¶ä»–
     */
    @ApiModelProperty("捐献器官 å…¶ä»–")
    @Excel(name = "捐献器官 å…¶ä»–")
    private String organdonationOther;
    /**
     * æçŒ®ç±»åˆ«
     */
    @ApiModelProperty("捐献类别")
    @Excel(name = "捐献类别")
    private String donationcategory;
    /**
     * åè°ƒå‘˜è¿›æ‰‹æœ¯å®¤æ—¶é—´
     */
    @ApiModelProperty("协调员进手术室时间")
    @Excel(name = "协调员进手术室时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date coordinatorInOperating;
    /**
     * åè°ƒå‘˜å‡ºæ‰‹æœ¯å®¤æ—¶é—´
     */
    @ApiModelProperty("协调员出手术室时间")
    @Excel(name = "协调员出手术室时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date coordinatorOutOperating;
    /**
     * åè°ƒå‘˜ç­¾å­—
     */
    @ApiModelProperty("协调员签字")
    @Excel(name = "协调员签字")
    private String coordinatorSign;
    /**
     * åè°ƒå‘˜ç­¾å­—æ—¶é—´
     */
    @ApiModelProperty("协调员签字时间")
    @Excel(name = "协调员签字时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date coordinatorSignTime;
    @ApiModelProperty("器官列表集合")
    List<ServiceDonationwitnessorgan> serviceDonationwitnessorgans;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/MedicalevaluationBaseInfoDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,154 @@
package com.ruoyi.project.domain.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.project.domain.ServiceMedicalevaluationorgan;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * åŒ»å­¦è¯„估对象 service_medicalevaluation
 *
 * @author ruoyi
 * @date 2021-11-19
 */
@Data
@ApiModel("医学评估基础信息")
public class MedicalevaluationBaseInfoDTO {
    private static final long serialVersionUID = 1L;
    /**
     * $column.columnComment
     */
    @ApiModelProperty("医学评估的id")
    private Long id;
    /**
     *
     */
    @ApiModelProperty("baseInfo的id")
    private Long infoid;
    /**
     * è®°å½•状态
     */
    @ApiModelProperty("记录状态")
    @Excel(name = "记录状态")
    private String recordstate;
    /**
     * æ¡ˆä¾‹ç¼–号
     */
    @ApiModelProperty("案例编号")
    @Excel(name = "案例编号")
    private String caseNo;
    /**
     * æçŒ®è€…编号
     */
    @ApiModelProperty("捐献者编号")
    @Excel(name = "捐献者编号")
    private String donorno;
    /**
     * æ‰€åœ¨åŒ»ç–—机构名称
     */
    @ApiModelProperty("所在医疗机构名称")
    @Excel(name = "所在医疗机构名称")
    private String treatmenthospitalname;
    /**
     * æ‰€åœ¨åŒ»ç–—机构编码
     */
    @ApiModelProperty("所在医疗机构编码")
    private String treatmenthospitalno;
    /**
     * æ€§åˆ«
     */
    @ApiModelProperty("性别")
    private String sex;
    /**
     * å¹´é¾„
     */
//    @TableField(exist = false)
    @ApiModelProperty("年龄")
    private Long age;
    /**
     * è¡€åž‹
     */
    @ApiModelProperty("血型 ")
    private String bloodtype;
    /**
     * è¯ä»¶å·ç 
     */
    @ApiModelProperty("证件号码")
    private String idcardno;
    /**
     * ç–¾ç—…诊断名称
     */
    @ApiModelProperty("疾病诊断名称")
    @Excel(name = "疾病诊断名称")
    private String diagnosisname;
    /**
     * åè°ƒå‘˜å§“名
     */
    @ApiModelProperty("协调员姓名")
    @Excel(name = "协调员姓名", readConverterExp = "协调员姓名")
    private String coordinatorName;
    /**
     * é¦–次评估时间
     */
    @ApiModelProperty("首次评估时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "首次评估时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date assessFirstTime;
    /**
     * è¯„估状态:   é¦–次:1.评估通过  2评估不通过
     */
    @ApiModelProperty("评估状态:   é¦–次:1.评估通过  2评估不通过     ")
    private String firstAssessState;
    /**
     * è¯„估状态:   é¦–次:1.评估通过  2评估不通过
     */
    @ApiModelProperty("评估状态:  å†æ¬¡ï¼š1.评估通过  2评估不通过")
    private String secondAssessState;
    /**
     * äºŒæ¬¡è¯„ä¼°æ—¶é—´
     */
    @ApiModelProperty("二次评估时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "二次评估时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date assessSecondTime;
    /**
     * è¯„估附件
     */
    @ApiModelProperty("评估附件")
    private String assessannex;
    /**
     * å™¨å®˜è¯„估详情
     */
    @ApiModelProperty("器官评估详情")
    private ServiceMedicalevaluationorgan serviceMedicalevaluationorgan;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/RelativeConfirmationBaseInfoDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,176 @@
package com.ruoyi.project.domain.dto;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * å™¨å®˜æçŒ®è§è¯åŸºç¡€ä¿¡æ¯ï¼ˆæ­»äº¡åˆ¤å®šï¼‰å“åº”信息
 */
@ApiModel("器官捐献确认基础信息响应信息")
@Data
public class RelativeConfirmationBaseInfoDTO {
    /**
     * baseInfo的ID
     */
    @ApiModelProperty("baseInfo的ID")
    private Long infoid;
    /**
     * è®°å½•状态
     */
    @ApiModelProperty("记录状态")
    @Excel(name = "记录状态")
    private String recordstate;
    /**
     * æ¡ˆä¾‹ç¼–号
     */
    @ApiModelProperty("案例编号")
    @Excel(name = "案例编号")
    private String caseNo;
    /**
     * æçŒ®è€…编号
     */
    @ApiModelProperty("捐献者编号")
    @Excel(name = "捐献者编号")
    private String donorno;
    /**
     * æ‰€åœ¨åŒ»ç–—机构名称
     */
    @ApiModelProperty("所在医疗机构名称")
    @Excel(name = "所在医疗机构名称")
    private String treatmenthospitalname;
    /**
     * æ‰€åœ¨åŒ»ç–—机构编码
     */
    @ApiModelProperty("所在医疗机构编码")
    private String treatmenthospitalno;
    /**
     * æ€§åˆ«
     */
    @ApiModelProperty("性别")
    private String sex;
    /**
     * å§“名
     */
    @ApiModelProperty("姓名")
    @Excel(name = "姓名")
    private String name;
    /**
     * å¹´é¾„
     */
//    @TableField(exist = false)
    @ApiModelProperty("年龄")
    private Long age;
    /**
     * è¡€åž‹
     */
    @ApiModelProperty("血型 ")
    private String bloodtype;
    /**
     * è¯ä»¶å·ç 
     */
    @ApiModelProperty("证件号码")
    private String idcardno;
    /**
     * ç–¾ç—…诊断名称
     */
    @ApiModelProperty("疾病诊断名称")
    @Excel(name = "疾病诊断名称")
    private String diagnosisname;
    /**
     * åè°ƒå‘˜å§“名
     */
    @ApiModelProperty("协调员姓名")
    @Excel(name = "协调员姓名", readConverterExp = "协调员姓名")
    private String CoordinatedUserIDO;
    /**
     * äº²å±žç¡®è®¤ç­¾å­—
     */
    @ApiModelProperty("亲属确认签字")
    @Excel(name = "亲属确认签字", readConverterExp = "亲属确认签字")
    private String relativeconfirmationsign;
    /**
     * ç­¾å­—日期
     */
    @ApiModelProperty("签字日期")
    @Excel(name = "签字日期", readConverterExp = "签字日期")
    private Date signdate;
    /**
     * è´Ÿè´£äººå§“名
     */
    @ApiModelProperty("负责人姓名")
    @Excel(name = "负责人姓名", readConverterExp = "负责人姓名")
    private String responsibleusername;
    /**
     * è´Ÿè´£äººç¼–号
     */
    @ApiModelProperty("负责人编号")
    private String responsibleuserid;
    /**
     * åè°ƒå‘˜å§“名2
     */
    @ApiModelProperty("协调员姓名2")
    @Excel(name = "协调员姓名2", readConverterExp = "协调员姓名2")
    private String coordinatedusernamet;
    /**
     * åè°ƒå‘˜ç¼–号2
     */
    @ApiModelProperty("协调员编号2")
    @Excel(name = "协调员编号2", readConverterExp = "协调员编号2")
    private String coordinateduseridt;
    /**
     * åè°ƒå‘˜å§“名1
     */
    @ApiModelProperty("协调员姓名1")
    @Excel(name = "协调员姓名1", readConverterExp = "协调员姓名1")
    private String coordinatedusernameo;
    /**
     * åè°ƒå‘˜ç¼–号1
     */
    @ApiModelProperty("协调员编号1")
    @Excel(name = "协调员编号1", readConverterExp = "协调员编号1")
    private String coordinateduserido;
    /**
     * è¯„估附件
     */
    @ApiModelProperty("评估附件")
    private String assessannex;
    /**
     * å®¶å±žæ„è§å¤‡æ³¨
     */
    @ApiModelProperty("家属意见备注")
    private String relativeRemark;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/ReviewInitiateBaseInfoDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,153 @@
package com.ruoyi.project.domain.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * ä¼¦ç†å®¡æŸ¥å‘起请求对象
 *
 * @author ruoyi
 * @date 2025-12-20
 */
@Data
@ApiModel("伦理审查发起响应对象")
public class ReviewInitiateBaseInfoDTO extends BaseEntity {
    /**
     * baseInfo的ID
     */
    @ApiModelProperty("baseInfo的ID")
    private Long infoid;
    /**
     * baseInfo的ID
     */
    @ApiModelProperty("伦理审查的ID")
    private Long id;
    /**
     * è®°å½•状态
     */
    @ApiModelProperty("记录状态")
    @Excel(name = "记录状态")
    private String recordstate;
    /**
     * æ¡ˆä¾‹ç¼–号
     */
    @ApiModelProperty("案例编号")
    @Excel(name = "案例编号")
    private String caseNo;
    /**
     * æçŒ®è€…编号
     */
    @ApiModelProperty("捐献者编号")
    @Excel(name = "捐献者编号")
    private String donorno;
    /**
     * æ‰€åœ¨åŒ»ç–—机构名称
     */
    @ApiModelProperty("所在医疗机构名称")
    @Excel(name = "所在医疗机构名称")
    private String treatmenthospitalname;
    /**
     * æ‰€åœ¨åŒ»ç–—机构编码
     */
    @ApiModelProperty("所在医疗机构编码")
    private String treatmenthospitalno;
    /**
     * æ€§åˆ«
     */
    @ApiModelProperty("性别")
    private String sex;
    /**
     * å§“名
     */
    @ApiModelProperty("姓名")
    @Excel(name = "姓名")
    private String name;
    /**
     * ä½é™¢å·
     */
    @ApiModelProperty("住院号")
    @Excel(name = "住院号")
    private String inpatientno;
    /**
     * å¹´é¾„
     */
//    @TableField(exist = false)
    @ApiModelProperty("年龄")
    private Long age;
    /**
     * è¡€åž‹
     */
    @ApiModelProperty("血型 ")
    private String bloodtype;
    /**
     * è¯ä»¶å·ç 
     */
    @ApiModelProperty("证件号码")
    private String idcardno;
    /**
     * ç–¾ç—…诊断名称
     */
    @ApiModelProperty("疾病诊断名称")
    @Excel(name = "疾病诊断名称")
    private String diagnosisname;
    /**
     * ä¸“家意见
     */
    @ApiModelProperty("专家意见")
    @Excel(name = "专家意见")
    private String expertOpinion;
    /**
     * ä¸“家姓名
     */
    @ApiModelProperty("专家姓名")
    @Excel(name = "专家姓名")
    private String expertName;
    /**
     * ä¸“家结论  è§å­—å…¸ sys_0_1
     */
    @ApiModelProperty("专家结论  è§å­—å…¸ sys_0_1 ")
    @Excel(name = "专家结论  è§å­—å…¸ sys_0_1 ")
    private String expertConclusion;
    /**
     * ç»“论时间
     */
    @ApiModelProperty("结论时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "结论时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date expertTime;
    /**
     * 0:新建;1:审查中;2:结束
     */
    @ApiModelProperty("状态:0:新建;1:审查中;2:结束")
    @Excel(name = "状态:0:新建;1:审查中;2:结束")
    private String status;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/ServiceDonatebaseinfoDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,626 @@
package com.ruoyi.project.domain.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.project.domain.ServiceDonatemaintenance;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
/**
 * æçŒ®åŸºç¡€å¯¹è±¡ service_donatebaseinfo
 *
 * @author ruoyi
 * @date 2021-11-15
 */
@Data
@ApiModel("捐献基础")
public class ServiceDonatebaseinfoDTO extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * $column.columnComment
     */
    @ApiModelProperty("$column.columnComment")
    //数据库自增改成@TableId(type = IdType.AUTO)
    @TableId(type = IdType.AUTO)
    private Long id;
    /**
     * æ¡ˆä¾‹ç¼–号
     */
    @ApiModelProperty("案例编号")
    @Excel(name = "案例编号")
    private String caseNo;
    /**
     * å§“名
     */
    @ApiModelProperty("姓名")
    @Excel(name = "姓名")
    private String name;
    /**
     * æ€§åˆ«
     */
    @ApiModelProperty("性别")
    private String sex;
    /**
     * è¯ä»¶ç±»åž‹
     */
    @ApiModelProperty("证件类型")
    private Long idcardtype;
    /**
     * æ¡ˆä¾‹ä¸ŠæŠ¥ID
     */
    @ApiModelProperty("案例上报ID")
    private Long reportId;
    /**
     * è¯ä»¶å·ç 
     */
    @ApiModelProperty("证件号码")
    private String idcardno;
    /**
     * å¹´é¾„
     */
//    @TableField(exist = false)
    @ApiModelProperty("年龄")
    private Long age;
    /**
     * å¹´é¾„单位
     */
//    @TableField(exist = false)
    @ApiModelProperty("年龄单位")
    private String ageunit;
    /**
     * å¹´é¾„
     */
    @TableField(exist = false)
    @ApiModelProperty("年龄")
    private Long age2;
    /**
     * å¹´
     * é¾„单位
     */
    @TableField(exist = false)
    @ApiModelProperty("年龄单位")
    private String ageunit2;
    /**
     * å‡ºç”Ÿæ—¥æœŸ
     */
    @ApiModelProperty("出生日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date birthday;
    /**
     * è”系电话
     */
    @ApiModelProperty("联系电话")
    private String phone;
    /**
     * çŽ°ä½åœ°å€
     */
    @ApiModelProperty("现住地址")
    private String residenceaddress;
    /**
     * å›½ç±
     */
    @ApiModelProperty("国籍")
    private String nationality;
    /**
     * çœ(区/市)
     */
    @ApiModelProperty("省(区/市)")
    @Excel(name = "省(区/市)")
    private String residenceprovince;
    /**
     * ç±è´¯
     */
    @ApiModelProperty("籍贯")
    @Excel(name = "籍贯")
    private String nativeplace;
    /**
     * çŽ°ä½åœ°å€çœåç§°
     */
    @ApiModelProperty("现住地址省名称")
    private String residenceprovincename;
    /**
     * æ°‘族
     */
    @ApiModelProperty("民族")
    private String nation;
    /**
     * èŒä¸š
     */
    @ApiModelProperty("职业")
    private String occupation;
    /**
     * å¸‚(州)
     */
    @ApiModelProperty("市(州)")
    private String residencecity;
    /**
     * å¸‚名称
     */
    @ApiModelProperty("市名称")
    private String residencecityname;
    /**
     * å­¦åކ
     */
    @ApiModelProperty("学历")
    private String education;
    /**
     * åŽ¿ï¼ˆå¸‚/区)
     */
    @ApiModelProperty("县(市/区)")
    private String residencetown;
    /**
     * æ‰€å±žè¡—道(镇)名称
     */
    @ApiModelProperty("所属街道(镇)名称")
    private String residencetownname;
    /**
     * ç¤¾åŒºï¼ˆæ‘)编号 æ ¹æ®è¡Œæ”¿åŒºåˆ’表
     */
    @ApiModelProperty("社区(村)编号 æ ¹æ®è¡Œæ”¿åŒºåˆ’表")
    private String residencecommunity;
    /**
     * ç¤¾åŒºï¼ˆæ‘)名称
     */
    @ApiModelProperty("社区(村)名称")
    private String residencecommunityname;
    /**
     * æ‰€å±žåŒºåŸŸç¼–号  æ ¹æ®è¡Œæ”¿åŒºåˆ’表
     */
    @ApiModelProperty("所属区域编号  æ ¹æ®è¡Œæ”¿åŒºåˆ’表")
    private String residencecountycode;
    /**
     * æ‰€å±žåŒºåŸŸåç§°
     */
    @ApiModelProperty("所属区域名称")
    private String residencecountyname;
    /**
     * æˆ·ç±åœ°å€
     */
    @ApiModelProperty("户籍地址")
    private String registeraddress;
    /**
     * çœ(区/市)
     */
    @ApiModelProperty("省(区/市)")
    private String registerprovince;
    /**
     * æˆ·ç±åœ°å€çœåç§°
     */
    @ApiModelProperty("户籍地址省名称")
    private String registerprovincename;
    /**
     * å¸‚(州)
     */
    @ApiModelProperty("市(州)")
    private String registercity;
    /**
     * å¸‚名称
     */
    @ApiModelProperty("市名称")
    private String registercityname;
    /**
     * åŽ¿ï¼ˆå¸‚/区)
     */
    @ApiModelProperty("县(市/区)")
    private String registertown;
    /**
     * æ‰€å±žè¡—道(镇)名称
     */
    @ApiModelProperty("所属街道(镇)名称")
    private String registertownname;
    /**
     * ç¤¾åŒºï¼ˆæ‘)编号 æ ¹æ®è¡Œæ”¿åŒºåˆ’表
     */
    @ApiModelProperty("社区(村)编号 æ ¹æ®è¡Œæ”¿åŒºåˆ’表")
    private String registercommunity;
    /**
     * ç¤¾åŒºï¼ˆæ‘)名称
     */
    @ApiModelProperty("社区(村)名称")
    private String registercommunityname;
    /**
     * æ‰€å±žåŒºåŸŸç¼–号  æ ¹æ®è¡Œæ”¿åŒºåˆ’表
     */
    @ApiModelProperty("所属区域编号  æ ¹æ®è¡Œæ”¿åŒºåˆ’表")
    private String registercountycode;
    /**
     * æ‰€å±žåŒºåŸŸåç§°
     */
    @ApiModelProperty("所属区域名称")
    private String registercountyname;
    /**
     * è®°å½•状态
     */
    @ApiModelProperty("记录状态")
    @Excel(name = "记录状态")
    private String recordstate;
    /**
     * æ²»ç–—医院
     */
    @ApiModelProperty("治疗医院")
    private String treatmenthospitalno;
    /**
     * æ‰€åœ¨åŒ»ç–—机构
     */
    @ApiModelProperty("所在医疗机构")
    @Excel(name = "所在医疗机构")
    private String treatmenthospitalname;
    /**
     * ç§‘室
     */
    @ApiModelProperty("科室")
    private String treatmentdeptname;
    /**
     * ç–¾ç—…诊断
     */
    @ApiModelProperty("疾病诊断")
    private String diagnosisno;
    /**
     * ç–¾ç—…诊断名称
     */
    @ApiModelProperty("疾病诊断名称")
    private String diagnosisname;
    /**
     * è¡€åž‹
     */
    @ApiModelProperty("血型 ")
    private String bloodtype;
    /**
     * ä½é™¢å·
     */
    @ApiModelProperty("住院号")
    private String inpatientno;
    /**
     * Rh阴性
     */
    @ApiModelProperty("Rh阴性")
    private String rhyin;
    /**
     * æçŒ®è€…编号
     */
    @ApiModelProperty("捐献者编号")
    private String donorno;
    /**
     * æçŒ®ç±»åˆ«
     */
    @ApiModelProperty("捐献类别")
    private String donationcategory;
    /**
     * ç—…情概况
     */
    @ApiModelProperty("病情概况")
    private String illnessoverview;
    /**
     * ç–¾ç—…类型
     */
    @ApiModelProperty("疾病类型")
    private String diseasetype;
    /**
     * ä¼ æŸ“病情况
     */
    @ApiModelProperty("传染病情况")
    private String infectious;
    /**
     * æœ¬äººæ„æ„¿
     */
    @ApiModelProperty("本人意愿 ")
    private String selfwill;
    /**
     * å…¶ä»–情况
     */
    @ApiModelProperty("其他情况")
    private String othercases;
    /**
     * äº²å±žæ„æ„¿
     */
    @ApiModelProperty("亲属意愿")
    private Long kinshipwill;
    /**
     * å…¶ä»–
     */
    @ApiModelProperty("其他")
    private String diseasetypeOther;
    /**
     * äº²å±žå…³ç³»çж况
     */
    @ApiModelProperty("亲属关系状况")
    private String kinship;
    /**
     * ä¿¡æ¯æ¥æº
     */
    @ApiModelProperty("信息来源")
    private String infosources;
    /**
     * çº¢åå­—会机构编号 é€‰è‡ªæœºæž„表
     */
    @ApiModelProperty("红十字会机构编号 é€‰è‡ªæœºæž„表")
    private String redorganno;
    /**
     * çº¢åå­—会机构名称
     */
    @ApiModelProperty("红十字会机构名称")
    private String redorganname;
    /**
     * çº¢åå­—会联系人
     */
    @ApiModelProperty("红十字会联系人")
    private String contactperson;
    /**
     * å…¶ä»–
     */
    @ApiModelProperty("其他")
    private String infectiousOther;
    /**
     * çº¢åå­—会联系电话
     */
    @ApiModelProperty("红十字会联系电话")
    private String contactnumber;
    /**
     * æŠ¥å‘Šè€…编号
     */
    @ApiModelProperty("报告者编号")
    private String reporterno;
    /**
     * æŠ¥å‘Šè€…姓名
     */
    @ApiModelProperty("报告者姓名")
    @Excel(name = "报告者姓名")
    private String reportername;
    /**
     * ç—…人状况
     */
    @ApiModelProperty("病人状况")
    private String patientstate;
    /**
     * æŠ¥å‘Šè€…联系电话
     */
    @ApiModelProperty("报告者联系电话")
    private String reporterphone;
    /**
     * ä¿¡æ¯æ¥æºå…¶ä»–
     */
    @ApiModelProperty("信息来源其他")
    private String infosourcesOther;
    /**
     * æŠ¥å‘Šæ—¶é—´
     */
    @ApiModelProperty("报告时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "报告时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date reporttime;
    /**
     * å…¶ä»–
     */
    @ApiModelProperty("其他")
    private String kinshipOther;
    /**
     * ä¸»è¦äº²å±ž
     */
    @ApiModelProperty("主要亲属")
    private String majorrelatives;
    /**
     * ä¸Žæèµ è€…关系
     */
    @ApiModelProperty("与捐赠者关系")
    private String familyrelations;
    /**
     * èŽ·å–ç»„ç»‡ç¼–å·
     */
    @ApiModelProperty("获取组织编号")
    private String acquisitiontissueno;
    /**
     * èŽ·å–ç»„ç»‡åç§°
     */
    @ApiModelProperty("获取组织名称")
    private String acquisitiontissuename;
    /**
     * ä¿¡æ¯å‘˜å§“名
     */
    @ApiModelProperty("信息员姓名")
    private String infoName;
    /**
     * ä¿¡æ¯å‘˜å§“名
     */
    @ApiModelProperty("信息员编号")
    private String infoNo;
    /**
     * ä¿¡æ¯å‘˜è”系方式
     */
    @ApiModelProperty("信息员联系方式")
    private String infophone;
    /**
     * è”系时间
     */
    @ApiModelProperty("联系时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date contacttime;
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField(exist = false)
    private Date starttime;
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField(exist = false)
    private Date endtime;
    @TableField(exist = false)
    private String city;
    private Long deptid;
    @ApiModelProperty("部门名称")
    @Excel(name = "部门名称")
    private String deptname;
    @ApiModelProperty("组长编码")
    @Excel(name = "组长编码")
    private String leaderno;
    @ApiModelProperty("组长名称")
    @Excel(name = "组长名称")
    private String leadername;
    @ApiModelProperty("业务地区")
    @Excel(name = "业务地区")
    private String businessarea;
    @ApiModelProperty("附件地址")
    @Excel(name = "附件地址")
    private String annexfiles;
    @ApiModelProperty("工作流")
    @Excel(name = "工作流")
    private Integer workflow;
    @ApiModelProperty("终止案例:0开启,1终止    é»˜è®¤å€¼ï¼š0")
    @Excel(name = "终止案例")
    private Integer terminationCase;
    @ApiModelProperty("案例时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date donatetime;
    @ApiModelProperty("案例序号")
    private String donateno;
    @ApiModelProperty("当前医疗机构")
    private String currentMedicalInstitution;
    @ApiModelProperty("首次医疗机构")
    private String firstMedicalInstitution;
    @ApiModelProperty("当前医疗机构科室")
    private String currentDept;
    @ApiModelProperty("首次医疗机构科室")
    private String firstDept;
    /**
     * GSC评分
     */
    @ApiModelProperty("GSC评分")
    @Excel(name = "GSC评分", readConverterExp = "GSC评分")
    private String gcsScore;
    /**
     * åè°ƒå‘˜ç¼–号
     */
    @ApiModelProperty("协调员编号")
    @Excel(name = "协调员编号", readConverterExp = "协调员编号")
    private String coordinatorNo;
    /**
     * åè°ƒå‘˜å§“名
     */
    @ApiModelProperty("协调员姓名")
    @Excel(name = "协调员姓名", readConverterExp = "协调员姓名")
    private String coordinatorName;
    //  ä¸‹é¢æ˜¯ â€œä¾›ä½“维护记录对象”里的字段
    @ApiModelProperty("供体维护记录")
    @Excel(name = "供体维护记录")
    @TableField(exist = false)
    private List<ServiceDonatemaintenance> serviceDonatemaintenanceList;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/WitnessBaseInfoDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,159 @@
package com.ruoyi.project.domain.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * å™¨å®˜æçŒ®è§è¯åŸºç¡€ä¿¡æ¯ï¼ˆæ­»äº¡åˆ¤å®šï¼‰å“åº”信息
 */
@ApiModel("器官捐献见证基础信息(死亡判定)响应信息")
@Data
public class WitnessBaseInfoDTO extends BaseEntity {
    /**
     *
     */
    @ApiModelProperty("捐献见证(死亡判定)的ID")
    private Long id;
    @ApiModelProperty("baseInfo的ID")
    private Long infoid;
    /**
     * è®°å½•状态
     */
    @ApiModelProperty("记录状态")
    @Excel(name = "记录状态")
    private String recordstate;
    /**
     * æ¡ˆä¾‹ç¼–号
     */
    @ApiModelProperty("案例编号")
    @Excel(name = "案例编号")
    private String caseNo;
    /**
     * æçŒ®è€…编号
     */
    @ApiModelProperty("捐献者编号")
    @Excel(name = "捐献者编号")
    private String donorno;
    /**
     * æ‰€åœ¨åŒ»ç–—机构名称
     */
    @ApiModelProperty("所在医疗机构名称")
    @Excel(name = "所在医疗机构名称")
    private String treatmenthospitalname;
    /**
     * æ‰€åœ¨åŒ»ç–—机构编码
     */
    @ApiModelProperty("所在医疗机构编码")
    private String treatmenthospitalno;
    /**
     * æ€§åˆ«
     */
    @ApiModelProperty("性别")
    private String sex;
    /**
     * å§“名
     */
    @ApiModelProperty("姓名")
    @Excel(name = "姓名")
    private String name;
    /**
     * å¹´é¾„
     */
//    @TableField(exist = false)
    @ApiModelProperty("年龄")
    private Long age;
    /**
     * è¡€åž‹
     */
    @ApiModelProperty("血型 ")
    private String bloodtype;
    /**
     * æ­»äº¡è¯æ˜Žé™„件路径,多张用;号隔开
     */
    @ApiModelProperty("死亡证明附件路径,多张用;号隔开 ")
    private String deathJudgeAnnex;
    /**
     * è¯ä»¶å·ç 
     */
    @ApiModelProperty("证件号码")
    private String idcardno;
    /**
     * ç–¾ç—…诊断名称
     */
    @ApiModelProperty("疾病诊断名称")
    @Excel(name = "疾病诊断名称")
    private String diagnosisname;
    /**
     * æ­»äº¡æ—¶é—´
     */
    @ApiModelProperty("死亡时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "死亡时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date deathtime;
    /**
     * æ­»äº¡åŽŸå› 
     */
    @ApiModelProperty("死亡原因")
    @Excel(name = "死亡原因")
    private String deathreason;
    /**
     * æ­»äº¡åˆ¤å®šåŒ»ç”Ÿä¸€
     */
    @ApiModelProperty("死亡判定医生一")
    @Excel(name = "死亡判定医生一")
    private String deathjudgedocto;
    /**
     * æ­»äº¡åˆ¤å®šåŒ»ç”ŸäºŒ
     */
    @ApiModelProperty("死亡判定医生二")
    @Excel(name = "死亡判定医生二")
    private String deathjudgedoctt;
    /**
     * æ­»äº¡è¯æ˜Žé™„件路径
     */
    @ApiModelProperty("死亡证明附件路径")
    private String deathjudgeannex;
    /**
     * åè°ƒå‘˜ç­¾å­—
     */
    @ApiModelProperty("协调员签字")
    @Excel(name = "协调员签字")
    private String coordinatorSign;
    /**
     * åè°ƒå‘˜ç­¾å­—æ—¶é—´
     */
    @ApiModelProperty("协调员签字时间")
    @Excel(name = "协调员签字时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date coordinatorSignTime;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DeathBaseInfoVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,190 @@
package com.ruoyi.project.domain.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * æ‚£è€…死亡信息对象 service_deathinfo
 *
 * @author ls
 * @date 2026-01-20
 */
@Data
@ApiModel("患者死亡信息请求对象")
public class DeathBaseInfoVO extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * baseInfo的ID
     */
    @ApiModelProperty("baseInfo的ID")
    private Long infoid;
    /**
     * è®°å½•状态
     */
    @ApiModelProperty("记录状态")
    @Excel(name = "记录状态")
    private String recordstate;
    /**
     * æ¡ˆä¾‹ç¼–号
     */
    @ApiModelProperty("案例编号")
    @Excel(name = "案例编号")
    private String caseNo;
    /**
     * æ‰€åœ¨åŒ»ç–—机构名称
     */
    @ApiModelProperty("所在医疗机构名称")
    @Excel(name = "所在医疗机构名称")
    private String treatmenthospitalname;
    /**
     * æ‰€åœ¨åŒ»ç–—机构编码
     */
    @ApiModelProperty("所在医疗机构编码")
    private String treatmenthospitalno;
    /**
     * æ€§åˆ«
     */
    @ApiModelProperty("性别")
    private String sex;
    /**
     * å§“名
     */
    @ApiModelProperty("姓名")
    @Excel(name = "姓名")
    private String name;
    /**
     * ä½é™¢å·
     */
    @ApiModelProperty("住院号")
    @Excel(name = "住院号")
    private String inpatientno;
    /**
     * å¹´é¾„
     */
//    @TableField(exist = false)
    @ApiModelProperty("年龄")
    private Long age;
    /**
     * è¡€åž‹
     */
    @ApiModelProperty("血型 ")
    private String bloodtype;
    /**
     * è¯ä»¶å·ç 
     */
    @ApiModelProperty("证件号码")
    private String idcardno;
    /**
     * ç–¾ç—…诊断名称
     */
    @ApiModelProperty("疾病诊断名称")
    @Excel(name = "疾病诊断名称")
    private String diagnosisname;
    /**
     * æçŒ®è€…编号
     */
    @ApiModelProperty("捐献者编号")
    @Excel(name = "捐献者编号")
    private String donorno;
    /**
     * å™¨å®˜èŽ·å–æœºæž„ç¼–å· å¯¹åº”机构表
     */
    @ApiModelProperty("器官获取机构编号 å¯¹åº”机构表")
    @Excel(name = "器官获取机构编号 å¯¹åº”机构表")
    private String gainhospitalno;
    /**
     * å™¨å®˜èŽ·å–æœºæž„åç§° å¯¹åº”机构表
     */
    @ApiModelProperty("器官获取机构名称 å¯¹åº”机构表")
    @Excel(name = "器官获取机构名称 å¯¹åº”机构表")
    private String gainhospitalname;
    /**
     * æ­»äº¡æ—¶é—´
     */
    @ApiModelProperty("死亡时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "死亡时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date deathtime;
    /**
     * æ­»äº¡åŽŸå› 
     */
    @ApiModelProperty("死亡原因")
    @Excel(name = "死亡原因")
    private String deathreason;
    /**
     * æ­»äº¡åˆ¤å®šåŒ»ç”Ÿä¸€
     */
    @ApiModelProperty("死亡判定医生一")
    @Excel(name = "死亡判定医生一")
    private String deathjudgedocto;
    /**
     * æ­»äº¡åˆ¤å®šåŒ»ç”ŸäºŒ
     */
    @ApiModelProperty("死亡判定医生二")
    @Excel(name = "死亡判定医生二")
    private String deathjudgedoctt;
    /**
     * æ˜¯å¦é»˜å“€ç¼…怀仪式 0:否;1:是
     */
    @ApiModelProperty("是否默哀缅怀仪式 0:否;1:是")
    @Excel(name = "是否默哀缅怀仪式 0:否;1:是")
    private Integer isspendremember;
    /**
     * æ˜¯å¦æ¢å¤é—体仪容 0:否;1:是
     */
    @ApiModelProperty("是否恢复遗体仪容 0:否;1:是")
    @Excel(name = "是否恢复遗体仪容 0:否;1:是")
    private Integer isrestoreremains;
    /**
     * è´Ÿè´£äººç¼–号
     */
    @ApiModelProperty("负责人编号")
    @Excel(name = "负责人编号")
    private String responsibleuserid;
    /**
     * è´Ÿè´£äººå§“名
     */
    @ApiModelProperty("负责人姓名")
    @Excel(name = "负责人姓名")
    private String responsibleusername;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonatebaseinfoProgressVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
package com.ruoyi.project.domain.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
 * æçŒ®åŸºç¡€å¯¹è±¡ service_donatebaseinfo
 *
 * @author ruoyi
 * @date 2021-11-15
 */
@Data
@ApiModel("捐献基础")
public class DonatebaseinfoProgressVO extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * $column.columnComment
     */
    @ApiModelProperty("$column.columnComment")
    //数据库自增改成@TableId(type = IdType.AUTO)
    @TableId(type = IdType.AUTO)
    private Long id;
    /**
     * æ¡ˆä¾‹ç¼–号
     */
    @ApiModelProperty("案例编号")
    @Excel(name = "案例编号")
    private String caseNo;
    /**
     * å§“名
     */
    @ApiModelProperty("姓名")
    @Excel(name = "姓名")
    private String name;
    /**
     * æ¡ˆä¾‹ä¸ŠæŠ¥ID
     */
    @ApiModelProperty("案例上报ID")
    private Long reportId;
    /**
     * è¯ä»¶å·ç 
     */
    @ApiModelProperty("证件号码")
    private String idcardno;
    /**
     * è®°å½•状态
     */
    @ApiModelProperty("记录状态")
    @Excel(name = "记录状态")
    private String recordstate;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonateorganBaseInfoVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,153 @@
package com.ruoyi.project.domain.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
 * å™¨å®˜åˆ†é…å¯¹è±¡ DonateorganBaseInfoVO
 * å™¨å®˜åˆ†é…åŸºæœ¬ä¿¡æ¯è¯·æ±‚对象
 *
 * @author ruoyi
 * @date 2021-11-10
 */
@Data
@ApiModel("器官分配基本信息请求对象")
public class DonateorganBaseInfoVO extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * baseInfo的ID
     */
    @ApiModelProperty("baseInfo的ID")
    private Long infoid;
    /**
     * è®°å½•状态
     */
    @ApiModelProperty("记录状态")
    @Excel(name = "记录状态")
    private String recordstate;
    /**
     * æ¡ˆä¾‹ç¼–号
     */
    @ApiModelProperty("案例编号")
    @Excel(name = "案例编号")
    private String caseNo;
    /**
     * ä½é™¢å·
     */
    @ApiModelProperty("住院号")
    private String inpatientno;
    /**
     * æçŒ®è€…编号
     */
    @ApiModelProperty("捐献者编号")
    @Excel(name = "捐献者编号")
    private String donorno;
    /**
     * æ‰€åœ¨åŒ»ç–—机构名称
     */
    @ApiModelProperty("所在医疗机构名称")
    @Excel(name = "所在医疗机构名称")
    private String treatmenthospitalname;
    /**
     * æ‰€åœ¨åŒ»ç–—机构编码
     */
    @ApiModelProperty("所在医疗机构编码")
    private String treatmenthospitalno;
    /**
     * æ€§åˆ«
     */
    @ApiModelProperty("性别")
    private String sex;
    /**
     * å§“名
     */
    @ApiModelProperty("姓名")
    @Excel(name = "姓名")
    private String name;
    /**
     * å¹´é¾„
     */
//    @TableField(exist = false)
    @ApiModelProperty("年龄")
    private Long age;
    /**
     * è¡€åž‹
     */
    @ApiModelProperty("血型 ")
    private String bloodtype;
    /**
     * è¯ä»¶å·ç 
     */
    @ApiModelProperty("证件号码")
    private String idcardno;
    /**
     * ç–¾ç—…诊断名称
     */
    @ApiModelProperty("疾病诊断名称")
    @Excel(name = "疾病诊断名称")
    private String diagnosisname;
    /**
     * åˆ†é…çŠ¶æ€ï¼š0:未分配;1:已分配;2作废
     */
    @ApiModelProperty("分配状态:0:未分配;1:已分配;2作废")
    @Excel(name = "分配状态:0:未分配;1:已分配;2作废")
    private Long allocationStatus;
    /**
     * åˆ†é…æ—¶é—´
     */
    @ApiModelProperty("分配时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "分配时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date allocationTime;
    /**
     * ç™»è®°äººç¼–号
     */
    @ApiModelProperty("登记人编号")
    @Excel(name = "登记人编号")
    private String registrationCode;
    /**
     * ç™»è®°äººå§“名
     */
    @ApiModelProperty("登记人姓名")
    @Excel(name = "登记人姓名")
    private String registrationName;
    /**
     * ç™»è®°æ—¶é—´
     */
    @ApiModelProperty("登记时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "登记时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date registrationTime;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationCompletionBaseInfoVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,122 @@
package com.ruoyi.project.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
@ApiModel("器官捐献完成基本信息请求对象(器官利用请求对象)")
public class DonationCompletionBaseInfoVO {
    /**
     * baseInfo的ID
     */
    @ApiModelProperty("baseInfo的ID")
    private Long infoid;
    /**
     * è®°å½•状态
     */
    @ApiModelProperty("记录状态")
    @Excel(name = "记录状态")
    private String recordstate;
    /**
     * æ¡ˆä¾‹ç¼–号
     */
    @ApiModelProperty("案例编号")
    @Excel(name = "案例编号")
    private String caseNo;
    /**
     * æ‰€åœ¨åŒ»ç–—机构名称
     */
    @ApiModelProperty("所在医疗机构名称")
    @Excel(name = "所在医疗机构名称")
    private String treatmenthospitalname;
    /**
     * æ‰€åœ¨åŒ»ç–—机构编码
     */
    @ApiModelProperty("所在医疗机构编码")
    private String treatmenthospitalno;
    /**
     * æ€§åˆ«
     */
    @ApiModelProperty("性别")
    private String sex;
    /**
     * ä½é™¢å·
     */
    @ApiModelProperty("住院号")
    private String inpatientno;
    /**
     * æçŒ®è€…编号
     */
    @ApiModelProperty("捐献者编号")
    @Excel(name = "捐献者编号")
    private String donorno;
    /**
     * æçŒ®è€…姓名
     */
    @ApiModelProperty("捐献者姓名")
    @Excel(name = "捐献者姓名")
    private String name;
    /**
     * å¹´é¾„
     */
//    @TableField(exist = false)
    @ApiModelProperty("年龄")
    private Long age;
    /**
     * è¡€åž‹
     */
    @ApiModelProperty("血型 ")
    private String bloodtype;
    /**
     * è¯ä»¶å·ç 
     */
    @ApiModelProperty("证件号码")
    private String idcardno;
    /**
     * ç–¾ç—…诊断名称
     */
    @ApiModelProperty("疾病诊断名称")
    @Excel(name = "疾病诊断名称")
    private String diagnosisname;
    /**
     * å®Œæˆæ—¶é—´
     */
    @ApiModelProperty("完成时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date completetime;
    /**
     * è´Ÿè´£äººç¼–号
     */
    @ApiModelProperty("负责人编号")
    private String responsibleuserid;
    /**
     * è´Ÿè´£äººå§“名
     */
    @ApiModelProperty("负责人姓名")
    @Excel(name = "负责人姓名")
    private String responsibleusername;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationwitnessBaseInfoVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,253 @@
package com.ruoyi.project.domain.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * æçŒ®è§è¯åŸºæœ¬ä¿¡æ¯è¯·æ±‚对象
 *
 * @author ruoyi
 * @date 2026-01-20
 */
@Data
@ApiModel("捐献见证基本信息请求对象")
public class DonationwitnessBaseInfoVO extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * $column.columnComment
     */
    @ApiModelProperty("$column.columnComment")
    //数据库自增改成@TableId(type = IdType.AUTO)
    @TableId(type = IdType.AUTO)
    private Long id;
    /**
     * ä½é™¢å·
     */
    @ApiModelProperty("住院号")
    private String inpatientno;
    /**
     *
     */
    @ApiModelProperty("")
    private Long infoid;
    /**
     * æçŒ®è€…编号
     */
    @ApiModelProperty("捐献者编号")
    @Excel(name = "捐献者编号")
    private String donorno;
    /**
     * å™¨å®˜èŽ·å–æœºæž„ç¼–å·
     */
    @ApiModelProperty("器官获取机构编号")
    private String gainhospitalno;
    /**
     * å™¨å®˜èŽ·å–æœºæž„åç§°
     */
    @ApiModelProperty("器官获取机构名称")
    @Excel(name = "器官获取机构名称")
    private String gainhospitalname;
    /**
     * æ‰‹æœ¯å¼€å§‹æ—¶é—´
     */
    @ApiModelProperty("手术开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "手术开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date operationbegtime;
    /**
     * æ‰‹æœ¯ç»“束时间
     */
    @ApiModelProperty("手术结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "手术结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date operationendtime;
    /**
     * æ‰‹æœ¯åŒ»ç”Ÿ
     */
    @ApiModelProperty("手术医生")
    @Excel(name = "手术医生")
    private String operationdoctor;
    /**
     * è´Ÿè´£äººç¼–号
     */
    @ApiModelProperty("负责人编号")
    private String responsibleuserid;
    /**
     * è´Ÿè´£äººå§“名
     */
    @ApiModelProperty("负责人姓名")
    @Excel(name = "负责人姓名")
    private String responsibleusername;
    /**
     * å§“名
     */
    @ApiModelProperty("姓名")
    @Excel(name = "姓名")
    private String name;
    /**
     * è”络人一编号
     */
    @ApiModelProperty("联络人一编号")
    private String coordinateduserido;
    /**
     * è”络人一姓名
     */
    @ApiModelProperty("联络人一姓名")
    private String coordinatedusernameo;
    /**
     * è”络人二编号
     */
    @ApiModelProperty("联络人二编号")
    private String coordinateduseridt;
    /**
     * è”络人二姓名
     */
    @ApiModelProperty("联络人二姓名")
    private String coordinatedusernamet;
    /**
     * è…¹ä¸»åŠ¨è„‰æ’ç®¡æ—¶é—´
     */
    @ApiModelProperty("腹主动脉插管时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "腹主动脉插管时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date abdominalaortacannulatime;
    /**
     * è…¹ä¸»åŠ¨è„‰çŒæ³¨æ—¶é—´
     */
    @ApiModelProperty("腹主动脉灌注时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "腹主动脉灌注时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date abdominalaortaperfusiontime;
    /**
     * é—¨é™è„‰æ’管时间
     */
    @ApiModelProperty("门静脉插管时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "门静脉插管时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date portalveincannulatime;
    /**
     * é—¨é™è„‰çŒæ³¨æ—¶é—´
     */
    @ApiModelProperty("门静脉灌注时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "门静脉灌注时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date portalveinperfusiontime;
    /**
     * è‚ºåŠ¨è„‰æ’ç®¡æ—¶é—´
     */
    @ApiModelProperty("肺动脉插管时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "肺动脉插管时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date pulmonaryarterycannulatime;
    /**
     * è‚ºåŠ¨è„‰çŒæ³¨æ—¶é—´
     */
    @ApiModelProperty("肺动脉灌注时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "肺动脉灌注时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date pulmonaryarteryperfusiontime;
    /**
     * ä¸»åŠ¨è„‰æ’ç®¡æ—¶é—´
     */
    @ApiModelProperty("主动脉插管时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "主动脉插管时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date aortacannulatime;
    /**
     * ä¸»åŠ¨è„‰çŒæ³¨æ—¶é—´
     */
    @ApiModelProperty("主动脉灌注时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "主动脉灌注时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date aortaperfusiontime;
    /**
     * æçŒ®å™¨å®˜
     */
    @ApiModelProperty("捐献器官")
    @Excel(name = "捐献器官")
    private String organdonation;
    /**
     * æçŒ®å™¨å®˜ å…¶ä»–
     */
    @ApiModelProperty("捐献器官 å…¶ä»–")
    @Excel(name = "捐献器官 å…¶ä»–")
    private String organdonationOther;
    /**
     * æçŒ®ç±»åˆ«
     */
    @ApiModelProperty("捐献类别")
    @Excel(name = "捐献类别")
    private String donationcategory;
    /**
     * åè°ƒå‘˜è¿›æ‰‹æœ¯å®¤æ—¶é—´
     */
    @ApiModelProperty("协调员进手术室时间")
    @Excel(name = "协调员进手术室时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date coordinatorInOperating;
    /**
     * åè°ƒå‘˜å‡ºæ‰‹æœ¯å®¤æ—¶é—´
     */
    @ApiModelProperty("协调员出手术室时间")
    @Excel(name = "协调员出手术室时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date coordinatorOutOperating;
    /**
     * åè°ƒå‘˜ç­¾å­—
     */
    @ApiModelProperty("协调员签字")
    @Excel(name = "协调员签字")
    private String coordinatorSign;
    /**
     * åè°ƒå‘˜ç­¾å­—æ—¶é—´
     */
    @ApiModelProperty("协调员签字时间")
    @Excel(name = "协调员签字时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date coordinatorSignTime;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/EthicalReviewVO.java
@@ -345,6 +345,12 @@
     */
    @ApiModelProperty("其他情况")
    private String othercases;
    /**
     * æ¡ˆä»¶ç¼–号
     */
    @ApiModelProperty("案件编号 ")
    private String caseNo;
    /**
     * äº²å±žæ„æ„¿
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/RelativeConfirmationBaseInfoVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,164 @@
package com.ruoyi.project.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
 * å™¨å®˜æçŒ®è§è¯åŸºç¡€ä¿¡æ¯ï¼ˆæ­»äº¡åˆ¤å®šï¼‰å“åº”信息
 */
@ApiModel("器官捐献确认基础信息请求信息")
@Data
public class RelativeConfirmationBaseInfoVO extends BaseEntity {
    /**
     * baseInfo的ID
     */
    @ApiModelProperty("baseInfo的ID")
    private Long infoid;
    /**
     * è®°å½•状态
     */
    @ApiModelProperty("记录状态")
    @Excel(name = "记录状态")
    private String recordstate;
    /**
     * æ¡ˆä¾‹ç¼–号
     */
    @ApiModelProperty("案例编号")
    @Excel(name = "案例编号")
    private String caseNo;
    /**
     * æçŒ®è€…编号
     */
    @ApiModelProperty("捐献者编号")
    @Excel(name = "捐献者编号")
    private String donorno;
    /**
     * æ‰€åœ¨åŒ»ç–—机构名称
     */
    @ApiModelProperty("所在医疗机构名称")
    @Excel(name = "所在医疗机构名称")
    private String treatmenthospitalname;
    /**
     * æ‰€åœ¨åŒ»ç–—机构编码
     */
    @ApiModelProperty("所在医疗机构编码")
    private String treatmenthospitalno;
    /**
     * æ€§åˆ«
     */
    @ApiModelProperty("性别")
    private String sex;
    /**
     * å§“名
     */
    @ApiModelProperty("姓名")
    @Excel(name = "姓名")
    private String name;
    /**
     * å¹´é¾„
     */
//    @TableField(exist = false)
    @ApiModelProperty("年龄")
    private Long age;
    /**
     * è¡€åž‹
     */
    @ApiModelProperty("血型 ")
    private String bloodtype;
    /**
     * è¯ä»¶å·ç 
     */
    @ApiModelProperty("证件号码")
    private String idcardno;
    /**
     * ç–¾ç—…诊断名称
     */
    @ApiModelProperty("疾病诊断名称")
    @Excel(name = "疾病诊断名称")
    private String diagnosisname;
    /**
     * äº²å±žç¡®è®¤ç­¾å­—
     */
    @ApiModelProperty("亲属确认签字")
    @Excel(name = "亲属确认签字", readConverterExp = "亲属确认签字")
    private String relativeconfirmationsign;
    /**
     * ç­¾å­—日期
     */
    @ApiModelProperty("开始签字日期")
    @Excel(name = "开始签字日期", readConverterExp = "开始签字日期")
    private Date startSigndate;   /**
     * ç­¾å­—日期
     */
    @ApiModelProperty("结束签字日期")
    @Excel(name = "结束签字日期", readConverterExp = "结束签字日期")
    private Date endSigndate;
    /**
     * è´Ÿè´£äººå§“名
     */
    @ApiModelProperty("负责人姓名")
    @Excel(name = "负责人姓名", readConverterExp = "负责人姓名")
    private String responsibleusername;
    /**
     * è´Ÿè´£äººç¼–号
     */
    @ApiModelProperty("负责人编号")
    private String responsibleuserid;
    /**
     * åè°ƒå‘˜å§“名2
     */
    @ApiModelProperty("协调员姓名2")
    @Excel(name = "协调员姓名2", readConverterExp = "协调员姓名2")
    private String coordinatedusernamet;
    /**
     * åè°ƒå‘˜ç¼–号2
     */
    @ApiModelProperty("协调员编号2")
    @Excel(name = "协调员编号2", readConverterExp = "协调员编号2")
    private String coordinateduseridt;
    /**
     * åè°ƒå‘˜å§“名1
     */
    @ApiModelProperty("协调员姓名1")
    @Excel(name = "协调员姓名1", readConverterExp = "协调员姓名1")
    private String coordinatedusernameo;
    /**
     * åè°ƒå‘˜ç¼–号1
     */
    @ApiModelProperty("协调员编号1")
    @Excel(name = "协调员编号1", readConverterExp = "协调员编号1")
    private String coordinateduserido;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/ReviewInitiateBaseInfoVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,149 @@
package com.ruoyi.project.domain.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * ä¼¦ç†å®¡æŸ¥å‘起请求对象
 *
 * @author ruoyi
 * @date 2025-12-20
 */
@Data
@ApiModel("伦理审查发起请求对象")
public class ReviewInitiateBaseInfoVO extends BaseEntity {
    /**
     * baseInfo的ID
     */
    @ApiModelProperty("baseInfo的ID")
    private Long infoid;
    /**
     * è®°å½•状态
     */
    @ApiModelProperty("记录状态")
    @Excel(name = "记录状态")
    private String recordstate;
    /**
     * æ¡ˆä¾‹ç¼–号
     */
    @ApiModelProperty("案例编号")
    @Excel(name = "案例编号")
    private String caseNo;
    /**
     * æçŒ®è€…编号
     */
    @ApiModelProperty("捐献者编号")
    @Excel(name = "捐献者编号")
    private String donorno;
    /**
     * æ‰€åœ¨åŒ»ç–—机构名称
     */
    @ApiModelProperty("所在医疗机构名称")
    @Excel(name = "所在医疗机构名称")
    private String treatmenthospitalname;
    /**
     * æ‰€åœ¨åŒ»ç–—机构编码
     */
    @ApiModelProperty("所在医疗机构编码")
    private String treatmenthospitalno;
    /**
     * æ€§åˆ«
     */
    @ApiModelProperty("性别")
    private String sex;
    /**
     * å§“名
     */
    @ApiModelProperty("姓名")
    @Excel(name = "姓名")
    private String name;
    /**
     * ä½é™¢å·
     */
    @ApiModelProperty("住院号")
    @Excel(name = "住院号")
    private String inpatientno;
    /**
     * å¹´é¾„
     */
//    @TableField(exist = false)
    @ApiModelProperty("年龄")
    private Long age;
    /**
     * è¡€åž‹
     */
    @ApiModelProperty("血型 ")
    private String bloodtype;
    /**
     * è¯ä»¶å·ç 
     */
    @ApiModelProperty("证件号码")
    private String idcardno;
    /**
     * ç–¾ç—…诊断名称
     */
    @ApiModelProperty("疾病诊断名称")
    @Excel(name = "疾病诊断名称")
    private String diagnosisname;
    /**
     * ä¸“家意见
     */
    @ApiModelProperty("专家意见")
    @Excel(name = "专家意见")
    private String expertOpinion;
    /**
     * ä¸“家姓名
     */
    @ApiModelProperty("专家姓名")
    @Excel(name = "专家姓名")
    private String expertName;
    /**
     * ä¸“家结论  è§å­—å…¸ sys_0_1
     */
    @ApiModelProperty("专家结论  è§å­—å…¸ sys_0_1 ")
    @Excel(name = "专家结论  è§å­—å…¸ sys_0_1 ")
    private String expertConclusion;
    /**
     * ç»“论时间
     */
    @ApiModelProperty("结论时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "结论时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date expertTime;
    /**
     * 0:新建;1:审查中;2:结束
     */
    @ApiModelProperty("状态:0:新建;1:审查中;2:结束")
    @Excel(name = "状态:0:新建;1:审查中;2:结束")
    private String status;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/ServiceDonatemaintenanceVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,74 @@
package com.ruoyi.project.domain.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * ä¾›ä½“维护记录对象 service_donatemaintenance
 *
 * @author ruoyi
 * @date 2025-12-27
 */
@Data
@ApiModel("供体维护记录")
public class ServiceDonatemaintenanceVO extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * å…³è”service_donatebaseinfo表的ID
     */
    @ApiModelProperty("关联service_donatebaseinfo表的ID")
    @Excel(name = "关联service_donatebaseinfo表的ID")
    private Long infoid;
    /**
     * æ¡ˆä¾‹ç¼–号
     */
    @ApiModelProperty("案例编号")
    @Excel(name = "案例编号")
    private String caseNo;
    /**
     * å§“名
     */
    @ApiModelProperty("姓名")
    @Excel(name = "姓名")
    private String name;
    /**
     * æ‰€åœ¨åŒ»ç–—机构
     */
    @ApiModelProperty("所在医疗机构")
    @Excel(name = "所在医疗机构")
    private String treatmenthospitalname;
    @ApiModelProperty("部门名称(医疗组)")
    @Excel(name = "部门名称(医疗组)")
    private String deptname;
    /**
     * æŠ¥å‘Šæ—¶é—´
     */
    @ApiModelProperty("报告时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "报告时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date reporttime;
    /**
     * è®°å½•状态
     */
    @ApiModelProperty("记录状态")
    @Excel(name = "记录状态")
    private String recordstate;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/ServiceMedicalevaluationVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,105 @@
package com.ruoyi.project.domain.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * åŒ»å­¦è¯„估对象 service_medicalevaluation
 *
 * @author LS
 * @date 2021-11-19
 */
@Data
@ApiModel("医学评估")
public class ServiceMedicalevaluationVO extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * å…³è”service_donatebaseinfo表的ID
     */
    @ApiModelProperty("关联service_donatebaseinfo表的ID")
    @Excel(name = "关联service_donatebaseinfo表的ID")
    private Long infoid;
    /**
     * æ¡ˆä¾‹ç¼–号
     */
    @ApiModelProperty("案例编号")
    @Excel(name = "案例编号")
    private String caseNo;
    /**
     * æçŒ®è€…编号
     */
    @ApiModelProperty("捐献者编号")
    @Excel(name = "捐献者编号")
    private String donorno;
    /**
     * ç–¾ç—…诊断名称
     */
    @ApiModelProperty("疾病诊断名称")
    @Excel(name = "疾病诊断名称")
    private String diagnosisname;
    /**
     * è¯„估附件
     */
    @ApiModelProperty("评估附件")
    private String assessannex;
    /**
     * è¯„估状态:   é¦–次:1.评估通过  2评估不通过         æœ€ç»ˆï¼š3.评估通过  4评估不通过
     */
    @ApiModelProperty("评估状态:   é¦–次:1.评估通过  2评估不通过         æœ€ç»ˆï¼š3.评估通过  4评估不通过")
    private String assessState;
    /**
     * é¦–次评估时间
     */
    @ApiModelProperty("首次评估时间(默认评估时间)")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "首次评估时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date assessFirstTime;
    /**
     * äºŒæ¬¡è¯„ä¼°æ—¶é—´
     */
    @ApiModelProperty("二次评估时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "二次评估时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date assessSecondTime;
    /**
     * åè°ƒå‘˜ç¼–号
     */
    @ApiModelProperty("协调员编号")
    @Excel(name = "协调员编号", readConverterExp = "协调员编号")
    private String coordinatorNo;
    /**
     * åè°ƒå‘˜å§“名
     */
    @ApiModelProperty("协调员姓名")
    @Excel(name = "协调员姓名", readConverterExp = "协调员姓名")
    private String coordinatorName;
    /**
     * æŠ¥å‘Šæ—¶é—´
     */
    @ApiModelProperty("报告时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "报告时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date reporttime;
}
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceDeathinfoMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.ruoyi.project.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.project.domain.ServiceDeathinfo;
import com.ruoyi.project.domain.dto.DeathBaseInfoDTO;
import com.ruoyi.project.domain.vo.DeathBaseInfoVO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
 * æ‚£è€…死亡信息Mapper接口
 *
 * @author ls
 * @date 2026-01-20
 */
@Mapper
public interface ServiceDeathinfoMapper extends BaseMapper<ServiceDeathinfo> {
    /**
     * æŸ¥è¯¢æ‚£è€…死亡信息列表
     *
     * @param serviceDeathinfo æ‚£è€…死亡信息
     * @return æ‚£è€…死亡信息集合
     */
    public List<ServiceDeathinfo> selectServiceDeathinfoList(ServiceDeathinfo serviceDeathinfo);
    public List<DeathBaseInfoDTO> dathInfoBaseInfoList(DeathBaseInfoVO deathBaseInfoVO);
}
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceDonatebaseinfoMapper.java
@@ -7,6 +7,8 @@
import java.util.List;
import com.ruoyi.project.domain.ServiceDonatebaseinfo;
import com.ruoyi.project.domain.dto.DonatebaseinfoProgressDTO;
import com.ruoyi.project.domain.vo.DonatebaseinfoProgressVO;
import com.ruoyi.project.domain.vo.TimeVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -53,6 +55,8 @@
    String gethqzz(Long infoid);
    List<DonatebaseinfoProgressDTO> donateBaseInfoProgressList(DonatebaseinfoProgressVO donatebaseinfoProgressVO);
    ServiceDonatebaseinfo getById(Long infoid);
    int countByRecordState(@Param("recordState") String recordState, @Param("starttime") Date starttime, @Param("endtime") Date endtime);
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceDonateorganBaseMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.ruoyi.project.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import com.ruoyi.project.domain.dto.DonateorganBaseInfoDTO;
import com.ruoyi.project.domain.vo.DonateorganBaseInfoVO;
import org.apache.ibatis.annotations.Mapper;
import com.ruoyi.project.domain.ServiceDonateorganBase;
/**
 * æçŒ®å™¨å®˜åˆ†é…åŸºç¡€Mapper接口
 *
 * @author ls
 * @date 2026-01-17
 */
@Mapper
public interface ServiceDonateorganBaseMapper extends BaseMapper<ServiceDonateorganBase> {
    /**
     * æŸ¥è¯¢æçŒ®å™¨å®˜åˆ†é…åŸºç¡€åˆ—表
     *
     * @param serviceDonateorganBase æçŒ®å™¨å®˜åˆ†é…åŸºç¡€
     * @return æçŒ®å™¨å®˜åˆ†é…åŸºç¡€é›†åˆ
     */
    public List<ServiceDonateorganBase> selectServiceDonateorganBaseList(ServiceDonateorganBase serviceDonateorganBase);
    public List<DonateorganBaseInfoDTO> getDonateorganBaseInfoList(DonateorganBaseInfoVO donateorganBaseInfoVO);
}
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceDonationwitnessMapper.java
@@ -3,11 +3,10 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.sql.Time;
import java.util.Collection;
import java.util.List;
import com.ruoyi.project.domain.ServiceDonateorgan;
import com.ruoyi.project.domain.dto.DonationwitnessBaseInfoDTO;
import com.ruoyi.project.domain.vo.DonationwitnessBaseInfoVO;
import com.ruoyi.project.domain.ServiceDonationwitness;
import com.ruoyi.project.domain.vo.DonationWitnessVO;
import com.ruoyi.project.domain.vo.TimeVO;
@@ -15,7 +14,7 @@
/**
 * æçŒ®è§è¯Mapper接口
 *
 *
 * @author ruoyi
 * @date 2021-11-17
 */
@@ -28,7 +27,9 @@
     * @param serviceDonationwitness æçŒ®è§è¯
     * @return æçŒ®è§è¯é›†åˆ
     */
    public List<ServiceDonationwitness> selectServiceDonationwitnessList(ServiceDonationwitness serviceDonationwitness);
     List<ServiceDonationwitness> selectServiceDonationwitnessList(ServiceDonationwitness serviceDonationwitness);
     List<DonationwitnessBaseInfoDTO> getDonationwitnessBaseInfo(DonationwitnessBaseInfoVO donationwitnessBaseInfoVO);
    List<ServiceDonationwitness> getWitnessList();
@@ -46,8 +47,8 @@
    ServiceDonationwitness selectByInfoId(Long infoid);
    List<ServiceDonationwitness> getAllDonatePeople();
    List<ServiceDonationwitness> getAllDonatePeople();
    int countThisYearByTime(TimeVO timeVO);
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceEthicalreviewinitiateMapper.java
@@ -3,6 +3,8 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.project.domain.ServiceEthicalreviewinitiate;
import com.ruoyi.project.domain.dto.ReviewInitiateBaseInfoDTO;
import com.ruoyi.project.domain.vo.ReviewInitiateBaseInfoVO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@@ -22,4 +24,6 @@
     * @return ä¼¦ç†å®¡æŸ¥å‘起集合
     */
    public List<ServiceEthicalreviewinitiate> selectServiceEthicalreviewinitiateList(ServiceEthicalreviewinitiate serviceEthicalreviewinitiate);
    public List<ReviewInitiateBaseInfoDTO>  reviewinitiateBaseInfoList(ReviewInitiateBaseInfoVO reviewInitiateBaseInfoVO);
}
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceMedicalevaluationMapper.java
@@ -2,21 +2,25 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import com.ruoyi.project.domain.dto.MedicalevaluationBaseInfoDTO;
import com.ruoyi.project.domain.ServiceMedicalevaluation;
import com.ruoyi.project.domain.vo.MedicalEvaluationWithBaseInfoVO;
import com.ruoyi.project.domain.vo.ServiceMedicalevaluationVO;
import com.ruoyi.project.domain.vo.MedicalEvaluationVO;
import com.ruoyi.project.domain.vo.TimeVO;
import org.apache.ibatis.annotations.Mapper;
/**
 * åŒ»å­¦è¯„ä¼°Mapper接口
 *
 *
 * @author ruoyi
 * @date 2021-11-19
 */
@Mapper
public interface ServiceMedicalevaluationMapper extends BaseMapper<ServiceMedicalevaluation>
{
public interface ServiceMedicalevaluationMapper extends BaseMapper<ServiceMedicalevaluation> {
    /**
     * æŸ¥è¯¢åŒ»å­¦è¯„估列表
     *
@@ -28,4 +32,6 @@
    List<MedicalEvaluationVO> selectVOList(MedicalEvaluationVO medicalEvaluationVO);
    Integer countNumber(TimeVO timeVO);
    List<MedicalevaluationBaseInfoDTO> selectEvaluateBaseInfoList(MedicalEvaluationWithBaseInfoVO medicalEvaluationWithBaseInfoVO);
}
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceRelativesconfirmationMapper.java
@@ -6,6 +6,8 @@
import java.util.List;
import com.ruoyi.project.domain.ServiceRelativesconfirmation;
import com.ruoyi.project.domain.dto.RelativeConfirmationBaseInfoDTO;
import com.ruoyi.project.domain.vo.RelativeConfirmationBaseInfoVO;
import com.ruoyi.project.domain.vo.RelativeConfirmationVO;
import com.ruoyi.project.domain.vo.TimeVO;
import org.apache.ibatis.annotations.Mapper;
@@ -30,5 +32,7 @@
    List<RelativeConfirmationVO> selectVOList(RelativeConfirmationVO relativeConfirmationVO);
    List<RelativeConfirmationBaseInfoDTO> confirmationBaseInfoList(RelativeConfirmationBaseInfoVO relativeConfirmationBaseInfoVO);
    Integer countNumber(TimeVO timeVO);
}
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceDeathinfoService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
package com.ruoyi.project.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.project.domain.ServiceDeathinfo;
import com.ruoyi.project.domain.dto.DeathBaseInfoDTO;
import com.ruoyi.project.domain.vo.DeathBaseInfoVO;
import java.util.List;
/**
 * æ‚£è€…死亡信息Service接口
 *
 * @author ls
 * @date 2026-01-20
 */
public interface IServiceDeathinfoService extends IService<ServiceDeathinfo>
{
    /**
     * æŸ¥è¯¢æ‚£è€…死亡信息列表
     *
     * @param serviceDeathinfo æ‚£è€…死亡信息
     * @return æ‚£è€…死亡信息集合
     */
    public Page<ServiceDeathinfo> queryList(ServiceDeathinfo serviceDeathinfo);
    /**
     * æŸ¥è¯¢æ‚£è€…死亡信息列表
     *
     * @param serviceDeathinfo æ‚£è€…死亡信息
     * @return æ‚£è€…死亡信息集合
     */
    public List<ServiceDeathinfo> exportQueryList(ServiceDeathinfo serviceDeathinfo);
    public List<DeathBaseInfoDTO> dathInfoBaseInfoList(DeathBaseInfoVO deathBaseInfoVO);
}
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceDonatebaseinfoService.java
@@ -3,29 +3,39 @@
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.project.domain.ServiceDonatebaseinfo;
import com.ruoyi.project.domain.dto.DonatebaseinfoProgressDTO;
import com.ruoyi.project.domain.vo.DonatebaseinfoProgressVO;
import com.ruoyi.project.domain.vo.TimeVO;
import com.ruoyi.project.domain.vo.countByRecordStateVO;
import org.apache.xmlbeans.impl.xb.xsdschema.Public;
/**
 * æçŒ®åŸºç¡€Service接口
 *
 *
 * @author ruoyi
 * @date 2021-11-13
 */
public interface IServiceDonatebaseinfoService extends IService<ServiceDonatebaseinfo>
{
public interface IServiceDonatebaseinfoService extends IService<ServiceDonatebaseinfo> {
    /**
     * æŸ¥è¯¢æçŒ®åŸºç¡€åˆ—表
     *
     *
     * @param serviceDonatebaseinfo æçŒ®åŸºç¡€
     * @return æçŒ®åŸºç¡€é›†åˆ
     */
    public List<ServiceDonatebaseinfo> queryList(ServiceDonatebaseinfo serviceDonatebaseinfo);
    /**
     * æŸ¥è¯¢æçŒ®åŸºç¡€åˆ—表(分页)
     *
     * @param serviceDonatebaseinfo æçŒ®åŸºç¡€
     * @return æçŒ®åŸºç¡€é›†åˆ(分页)
     */
    public Page<ServiceDonatebaseinfo> queryListPage(ServiceDonatebaseinfo serviceDonatebaseinfo);
    public String getDonateNumber(ServiceDonatebaseinfo serviceDonatebaseinfo);
@@ -39,6 +49,8 @@
    List<ServiceDonatebaseinfo> listForSearch(ServiceDonatebaseinfo serviceDonatebaseinfo);
    List<DonatebaseinfoProgressDTO> donateBaseInfoProgressList(DonatebaseinfoProgressVO donatebaseinfoProgressVO);
    String gethqzz(Long infoid);
    countByRecordStateVO countByRecordState(TimeVO timeVO);
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceDonatemaintenanceService.java
@@ -1,9 +1,9 @@
package com.ruoyi.project.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.project.domain.ServiceDonatemaintenance;
import java.util.List;
import com.ruoyi.project.domain.vo.ServiceDonatemaintenanceVO;
/**
 * ä¾›ä½“维护记录Service接口
@@ -20,5 +20,13 @@
     * @param serviceDonatemaintenance ä¾›ä½“维护记录
     * @return ä¾›ä½“维护记录集合
     */
    public List<ServiceDonatemaintenance> queryList(ServiceDonatemaintenance serviceDonatemaintenance);
    public Page<ServiceDonatemaintenance> queryList(ServiceDonatemaintenance serviceDonatemaintenance);
    /**
     * èŽ·å–ä¾›ä½“ç»´æŠ¤è®°å½•åŸºæœ¬ä¿¡æ¯åˆ—è¡¨
     *
     * @param serviceDonatemaintenanceVO
     * @return
     */
    public Page maintenanceBaseInfoList(ServiceDonatemaintenanceVO serviceDonatemaintenanceVO);
}
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceDonateorganBaseService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package com.ruoyi.project.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.project.domain.ServiceDonateorganBase;
import com.ruoyi.project.domain.dto.DonateorganBaseInfoDTO;
import com.ruoyi.project.domain.vo.DonateorganBaseInfoVO;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
/**
 * æçŒ®å™¨å®˜åˆ†é…åŸºç¡€Service接口
 *
 * @author ls
 * @date 2026-01-17
 */
public interface IServiceDonateorganBaseService extends IService<ServiceDonateorganBase> {
    /**
     * æŸ¥è¯¢æçŒ®å™¨å®˜åˆ†é…åŸºç¡€åˆ—表
     *
     * @param serviceDonateorganBase æçŒ®å™¨å®˜åˆ†é…åŸºç¡€
     * @return æçŒ®å™¨å®˜åˆ†é…åŸºç¡€é›†åˆ
     */
    public Page<ServiceDonateorganBase> queryList(ServiceDonateorganBase serviceDonateorganBase);
    /**
     * æŸ¥è¯¢æçŒ®å™¨å®˜åˆ†é…åŸºç¡€åˆ—表
     * @param donateorganBaseInfoVO
     * @return
     */
    public List<DonateorganBaseInfoDTO> getDonateorganBaseInfoList(@RequestBody DonateorganBaseInfoVO donateorganBaseInfoVO);
    /**
     * æŸ¥è¯¢æçŒ®å™¨å®˜åˆ†é…åŸºç¡€åˆ—表
     *
     * @param serviceDonateorganBase æçŒ®å™¨å®˜åˆ†é…åŸºç¡€
     * @return æçŒ®å™¨å®˜åˆ†é…åŸºç¡€é›†åˆ
     */
    public List<ServiceDonateorganBase> exportQueryList(ServiceDonateorganBase serviceDonateorganBase);
}
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceDonationwitnessService.java
@@ -1,8 +1,11 @@
package com.ruoyi.project.service;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.project.domain.vo.DonationwitnessBaseInfoVO;
import com.ruoyi.project.domain.ServiceDonationwitness;
import com.ruoyi.project.domain.dto.DonationwitnessBaseInfoDTO;
import com.ruoyi.project.domain.vo.DonationWitnessVO;
import com.ruoyi.project.domain.vo.TimeVO;
import com.ruoyi.project.domain.vo.WitnessStatsVO;
@@ -13,8 +16,7 @@
 * @author ruoyi
 * @date 2021-11-17
 */
public interface IServiceDonationwitnessService extends IService<ServiceDonationwitness>
{
public interface IServiceDonationwitnessService extends IService<ServiceDonationwitness> {
    /**
     * æŸ¥è¯¢æçŒ®è§è¯åˆ—表
@@ -26,6 +28,13 @@
    public List<ServiceDonationwitness> selectServiceDonationwitnessList(ServiceDonationwitness serviceDonationwitness);
    /**
     * èŽ·å–æçŒ®è§è¯åŸºæœ¬ä¿¡æ¯
     * @param donationwitnessBaseInfoVO
     * @return
     */
    public List<DonationwitnessBaseInfoDTO>  getDonationwitnessBaseInfo(DonationwitnessBaseInfoVO donationwitnessBaseInfoVO);
    List<DonationWitnessVO> selectVOList(DonationWitnessVO donationWitnessVO);
    ServiceDonationwitness getByInfoId(Long infoid);
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceEthicalreviewinitiateService.java
@@ -2,6 +2,8 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.project.domain.ServiceEthicalreviewinitiate;
import com.ruoyi.project.domain.dto.ReviewInitiateBaseInfoDTO;
import com.ruoyi.project.domain.vo.ReviewInitiateBaseInfoVO;
import java.util.List;
@@ -11,8 +13,7 @@
 * @author ruoyi
 * @date 2025-12-20
 */
public interface IServiceEthicalreviewinitiateService extends IService<ServiceEthicalreviewinitiate>
{
public interface IServiceEthicalreviewinitiateService extends IService<ServiceEthicalreviewinitiate> {
    /**
     * æŸ¥è¯¢ä¼¦ç†å®¡æŸ¥å‘起列表
@@ -21,4 +22,6 @@
     * @return ä¼¦ç†å®¡æŸ¥å‘起集合
     */
    public List<ServiceEthicalreviewinitiate> queryList(ServiceEthicalreviewinitiate serviceEthicalreviewinitiate);
    public List<ReviewInitiateBaseInfoDTO> reviewinitiateBaseInfoList(ReviewInitiateBaseInfoVO reviewInitiateBaseInfoVO);
}
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceMedicalevaluationService.java
@@ -1,13 +1,16 @@
package com.ruoyi.project.service;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.project.domain.ServiceMedicalevaluation;
import com.ruoyi.project.domain.dto.MedicalevaluationBaseInfoDTO;
import com.ruoyi.project.domain.vo.MedicalEvaluationVO;
import com.ruoyi.project.domain.vo.MedicalEvaluationWithBaseInfoVO;
import java.util.List;
/**
 * åŒ»å­¦è¯„ä¼°Service接口
 *
 *
 * @author ruoyi
 * @date 2021-11-19
 */
@@ -16,7 +19,7 @@
    /**
     * æŸ¥è¯¢åŒ»å­¦è¯„估列表
     *
     *
     * @param serviceMedicalevaluation åŒ»å­¦è¯„ä¼°
     * @return åŒ»å­¦è¯„估集合
     */
@@ -24,5 +27,5 @@
    List<MedicalEvaluationVO> selectVOList(MedicalEvaluationVO medicalEvaluationVO);
    List<ServiceMedicalevaluation> selectServiceMedicalevaluationList(ServiceMedicalevaluation serviceMedicalevaluation);
    List<MedicalevaluationBaseInfoDTO> evaluateBaseInfolist(MedicalEvaluationWithBaseInfoVO medicalEvaluationWithBaseInfoVO);
}
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceRelativesconfirmationService.java
@@ -3,11 +3,13 @@
import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.project.domain.ServiceRelativesconfirmation;
import com.ruoyi.project.domain.dto.RelativeConfirmationBaseInfoDTO;
import com.ruoyi.project.domain.vo.RelativeConfirmationBaseInfoVO;
import com.ruoyi.project.domain.vo.RelativeConfirmationVO;
/**
 * æçŒ®äº²å±žç¡®è®¤Service接口
 *
 *
 * @author ruoyi
 * @date 2021-11-15
 */
@@ -16,7 +18,7 @@
    /**
     * æŸ¥è¯¢æçŒ®äº²å±žç¡®è®¤åˆ—表
     *
     *
     * @param serviceRelativesconfirmation æçŒ®äº²å±žç¡®è®¤
     * @return æçŒ®äº²å±žç¡®è®¤é›†åˆ
     */
@@ -26,4 +28,6 @@
    List<RelativeConfirmationVO> selectVOList(RelativeConfirmationVO relativeConfirmationVO);
    List<RelativeConfirmationBaseInfoDTO> confirmationBaseInfoList(RelativeConfirmationBaseInfoVO relativeConfirmationBaseInfoVO);
}
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/DingTalkServiceImpl.java
@@ -3,19 +3,14 @@
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.*;
import com.dingtalk.api.response.*;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.http.HttpUtils;
import com.ruoyi.project.domain.vo.DingDetpInfoVo;
import com.ruoyi.project.domain.vo.DingTalkReqVo;
import com.ruoyi.project.domain.vo.DingUserInfoVo;
import com.ruoyi.project.service.DingTalkService;
import com.ruoyi.project.utils.DingTalkProxyClient;
import com.ruoyi.system.mapper.SysUserMapper;
import com.taobao.api.ApiException;
import lombok.extern.log4j.Log4j;
@@ -27,6 +22,7 @@
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -54,6 +50,9 @@
    @Autowired
    private SysUserMapper sysUserMapper;
    @Autowired
    private DingTalkProxyClient dingTalkProxyClient;
    @Override
    public Boolean sendNotification(DingTalkReqVo dingTalkReqVo) {
        String body = null;
@@ -63,37 +62,32 @@
        String accessToken = null;
        try {
            accessToken = getAccessToken();
            accessToken = dingTalkProxyClient.getAccessToken();
        } catch (ApiException e) {
            e.printStackTrace();
        }
        if (StringUtils.isNotEmpty(dingTalkReqVo.getNumber())) {
            DingTalkClient clientT = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/getbymobile");
            OapiV2UserGetbymobileRequest req = new OapiV2UserGetbymobileRequest();
            req.setMobile(dingTalkReqVo.getNumber());
            OapiV2UserGetbymobileResponse rsp = null;
            // ä½¿ç”¨ä»£ç†å®¢æˆ·ç«¯è°ƒç”¨èŽ·å–ç”¨æˆ·ID接口
            Map<String, String> params = new HashMap<>();
            params.put("access_token", accessToken);
            params.put("mobile", dingTalkReqVo.getNumber());
            try {
                rsp = clientT.execute(req, accessToken);
                body = rsp.getBody();
                body = dingTalkProxyClient.executeGet("/topapi/v2/user/getbymobile", params);
                String jsonObject = JSONObject.parseObject(body).getJSONObject("result").get("userid").toString();
                userIdlist.add(jsonObject);
            } catch (ApiException e) {
                e.printStackTrace();
            }
        } else {
            DingTalkClient client3 = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/user/listid");
            OapiUserListidRequest request2 = new OapiUserListidRequest();
            request2.setDeptId(dingTalkReqVo.getDeptId()); // è®¾ç½®è¦èŽ·å–çš„éƒ¨é—¨ ID,这里以根部门为例675909059L
            // è®¾ç½®éƒ¨é—¨ ID,如果获取所有员工手机号,可以设置为根部门的 ID
            OapiUserListidResponse response2 = null;
            // ä½¿ç”¨ä»£ç†å®¢æˆ·ç«¯è°ƒç”¨èŽ·å–éƒ¨é—¨ç”¨æˆ·ID列表接口
            Map<String, String> params = new HashMap<>();
            params.put("access_token", accessToken);
            params.put("dept_id", String.valueOf(dingTalkReqVo.getDeptId()));
            try {
                response2 = client3.execute(request2, accessToken);
                body = dingTalkProxyClient.executeGet("/topapi/user/listid", params);
            } catch (ApiException e) {
                e.printStackTrace();
            }
            body = response2.getBody();
            // è§£æžä¸ºJSONObject
            JSONObject jsonObject = JSONObject.parseObject(body);
            if (jsonObject != null) {
@@ -108,60 +102,62 @@
        //userid数组
        for (String urid : userIdlist) {
            DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2");
            OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request();
            request.setUseridList(urid);
            request.setAgentId(agentId);
            request.setToAllUser(false);
            // æž„建发送消息的完整JSON对象,符合钉钉API格式
            Map<String, Object> messageData = new HashMap<>();
            messageData.put("userid_list", urid);
            messageData.put("agent_id", agentId);
            messageData.put("to_all_user", false);
            //发送内容处理
            List<ConcurrentHashMap<String, Object>> contents = dingTalkReqVo.getContents();
            ArrayList<OapiMessageCorpconversationAsyncsendV2Request.Form> objects = new ArrayList<>();
            List<Map<String, Object>> objects = new ArrayList<>();
            for (int i = 0; i < contents.size(); i++) {
                ConcurrentHashMap<String, Object> map = contents.get(i);
                for (Map.Entry<String, Object> entry : map.entrySet()) {
                    OapiMessageCorpconversationAsyncsendV2Request.Form formSeverityDesc = new OapiMessageCorpconversationAsyncsendV2Request.Form();
                    formSeverityDesc.setKey(entry.getKey());
                    Map<String, Object> formItem = new HashMap<>();
                    formItem.put("key", entry.getKey());
                    if (entry.getKey().contains("审批时间")) {
                        Date date = (Date) entry.getValue();
                        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                        String format = simpleDateFormat.format(date);
                        formSeverityDesc.setValue(format);
                        formItem.put("value", format);
                    } else {
                        if (entry.getValue() != null) {
                            formSeverityDesc.setValue(entry.getValue().toString());
                            formItem.put("value", entry.getValue().toString());
                        } else {
                            formItem.put("value", "");
                        }
                    }
                    objects.add(formSeverityDesc);
                    objects.add(formItem);
                }
            }
            OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg();
            msg.setOa(new OapiMessageCorpconversationAsyncsendV2Request.OA());
            msg.getOa().setMessageUrl(dingTalkReqVo.getUrl());
            msg.getOa().setPcMessageUrl(dingTalkReqVo.getUrl());
            msg.getOa().setHead(new OapiMessageCorpconversationAsyncsendV2Request.Head());
            //   msg.getOa().getHead().setText("你在说啥呢绒顶替苛夺阿斯蒂芬阿斯蒂芬");
            msg.getOa().getHead().setBgcolor("00409eff");
            msg.getOa().setBody(new OapiMessageCorpconversationAsyncsendV2Request.Body());
            msg.getOa().getBody().setTitle(dingTalkReqVo.getTitle());
            // msg.getOa().getBody().setContent("待处理:" + "123" + "条");
            Map<String, Object> msg = new HashMap<>();
            Map<String, Object> oa = new HashMap<>();
            oa.put("message_url", dingTalkReqVo.getUrl());
            oa.put("pc_message_url", dingTalkReqVo.getUrl());
            Map<String, Object> head = new HashMap<>();
            head.put("bgcolor", "00409eff");
            oa.put("head", head);
            Map<String, Object> bodyContent = new HashMap<>();
            bodyContent.put("title", dingTalkReqVo.getTitle());
            bodyContent.put("form", objects);
            oa.put("body", bodyContent);
            msg.put("oa", oa);
            msg.put("msgtype", "oa");
            messageData.put("msg", msg);
            msg.getOa().getBody().setForm(objects);
            msg.setMsgtype("oa");
            request.setMsg(msg);
            //  log.info("获取发送通知消息体和获取发送通知人完成");
            OapiMessageCorpconversationAsyncsendV2Response response = null;
            // å°†access_token作为URL参数传递
            String messageJson = JSONObject.toJSONString(messageData);
            try {
                response = client.execute(request, accessToken);
                // ä½¿ç”¨ä»£ç†å®¢æˆ·ç«¯å‘送POST请求
                body = dingTalkProxyClient.executePost("/topapi/message/corpconversation/asyncsend_v2?access_token=" + accessToken, messageJson);
                JSONObject response = JSONObject.parseObject(body);
                result = response.getInteger("errcode") == 0;
            } catch (ApiException e) {
                e.getErrMsg();
                log.error("发送钉钉消息失败: " + e.getErrMsg());
            }
            //  log.info("消息任务ID"+response.getTaskId());
            System.out.println(response.getTaskId());
            result = response.isSuccess();
        }
        return result;
    }
@@ -174,9 +170,8 @@
     */
    public Map<String, Object> noLogin(String authCode) {
        try {
            String urlString = "https://oapi.dingtalk.com/topapi/v2/user/getuserinfo";
            String params = "access_token=" + getAccessToken() + "&code=" + authCode;
            String result = HttpUtils.sendPost(urlString, params);
            String params = "access_token=" + dingTalkProxyClient.getAccessToken() + "&code=" + authCode;
            String result = HttpUtils.sendPost("https://oapi.dingtalk.com/topapi/v2/user/getuserinfo", params);
            ObjectMapper objectMapper = new ObjectMapper();
            Map<String, Object> map = objectMapper.readValue(result, Map.class);
            return map;
@@ -193,13 +188,13 @@
            //根据传过来的部门ID,去获取该部门下的用户信息
            if (begin != 1) DingUserInfoList(deptID);
            //获取子部门的dept_id
            DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/department/listsub");
            OapiV2DepartmentListsubRequest req = new OapiV2DepartmentListsubRequest();
            req.setDeptId(deptID);
            req.setLanguage("zh_CN");
            OapiV2DepartmentListsubResponse rsp = client.execute(req, getAccessToken());
            Map<String, String> params = new HashMap<>();
            params.put("access_token", dingTalkProxyClient.getAccessToken());
            params.put("dept_id", deptID.toString());
            params.put("language", "zh_CN");
            String rspBody = dingTalkProxyClient.executeGet("/topapi/v2/department/listsub", params);
            ObjectMapper objectMapper = new ObjectMapper();
            Map<String, Object> map = objectMapper.readValue(rsp.getBody(), Map.class);
            Map<String, Object> map = objectMapper.readValue(rspBody, Map.class);
            if (ObjectUtils.isNotEmpty(map)) {
                List<Map<String, Object>> dingDetpInfoList = (List<Map<String, Object>>) map.get("result");
                if (Integer.valueOf(map.get("errcode").toString()) == 0) {
@@ -216,18 +211,17 @@
    }
    public void DingUserInfoList(Long deptId) {
        DingTalkClient client = null;
        try {
            client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/list?access_token=" + getAccessToken());
            OapiV2UserListRequest req = new OapiV2UserListRequest();
            req.setDeptId(deptId);
            req.setCursor(0L);
            req.setSize(100L);
            req.setLanguage("zh_CN");
            OapiV2UserListResponse rsp = client.execute(req, "");
            Map<String, String> params = new HashMap<>();
            params.put("access_token", dingTalkProxyClient.getAccessToken());
            params.put("dept_id", deptId.toString());
            params.put("cursor", "0");
            params.put("size", "100");
            params.put("language", "zh_CN");
            String rspBody = dingTalkProxyClient.executeGet("/topapi/v2/user/list", params);
            //获取resp里的用户信息集合
            ObjectMapper objectMapper = new ObjectMapper();
            Map<String, Object> map = objectMapper.readValue(rsp.getBody(), Map.class);
            Map<String, Object> map = objectMapper.readValue(rspBody, Map.class);
            Map<String, Object> mapResult = (Map<String, Object>) map.get("result");
            List<Map<String, Object>> userInfoMapList = (List<Map<String, Object>>) mapResult.get("list");
            if (!CollectionUtils.isEmpty(userInfoMapList)) {
@@ -251,16 +245,7 @@
     * èŽ·å– access_token
     */
    private String getAccessToken() throws ApiException {
        DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
        OapiGettokenRequest request = new OapiGettokenRequest();
        //Appkey
        request.setAppkey(dingAppid);
        //Appsecret
        request.setAppsecret(dingAppSecret);
        /*请求方式*/
        request.setHttpMethod("GET");
        OapiGettokenResponse response = client.execute(request);
        return response.getAccessToken();
        return dingTalkProxyClient.getAccessToken();
    }
}
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDeathinfoServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,152 @@
package com.ruoyi.project.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.project.domain.ServiceDeathinfo;
import com.ruoyi.project.domain.dto.DeathBaseInfoDTO;
import com.ruoyi.project.domain.vo.DeathBaseInfoVO;
import com.ruoyi.project.mapper.ServiceDeathinfoMapper;
import com.ruoyi.project.service.IServiceDeathinfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * æ‚£è€…死亡信息Service业务层处理
 *
 * @author ls
 * @date 2026-01-20
 */
@Service
public class ServiceDeathinfoServiceImpl extends ServiceImpl<ServiceDeathinfoMapper, ServiceDeathinfo> implements IServiceDeathinfoService {
    @Autowired
    private ServiceDeathinfoMapper serviceDeathinfoMapper;
    /**
     * æŸ¥è¯¢æ‚£è€…死亡信息列表
     *
     * @param serviceDeathinfo æ‚£è€…死亡信息
     * @return æ‚£è€…死亡信息
     */
    @Override
    public Page<ServiceDeathinfo> queryList(ServiceDeathinfo serviceDeathinfo) {
        LambdaQueryWrapper<ServiceDeathinfo> wrappers = Wrappers.lambdaQuery();
        if (serviceDeathinfo.getInfoid() != null) {
            wrappers.eq(ServiceDeathinfo::getInfoid, serviceDeathinfo.getInfoid());
        }
        if (StringUtils.isNotBlank(serviceDeathinfo.getDonorno())) {
            wrappers.eq(ServiceDeathinfo::getDonorno, serviceDeathinfo.getDonorno());
        }
        if (StringUtils.isNotBlank(serviceDeathinfo.getGainhospitalno())) {
            wrappers.eq(ServiceDeathinfo::getGainhospitalno, serviceDeathinfo.getGainhospitalno());
        }
        if (StringUtils.isNotBlank(serviceDeathinfo.getGainhospitalname())) {
            wrappers.like(ServiceDeathinfo::getGainhospitalname, serviceDeathinfo.getGainhospitalname());
        }
        if (serviceDeathinfo.getDeathtime() != null) {
            wrappers.eq(ServiceDeathinfo::getDeathtime, serviceDeathinfo.getDeathtime());
        }
        if (StringUtils.isNotBlank(serviceDeathinfo.getDeathreason())) {
            wrappers.eq(ServiceDeathinfo::getDeathreason, serviceDeathinfo.getDeathreason());
        }
        if (StringUtils.isNotBlank(serviceDeathinfo.getDeathjudgedocto())) {
            wrappers.eq(ServiceDeathinfo::getDeathjudgedocto, serviceDeathinfo.getDeathjudgedocto());
        }
        if (StringUtils.isNotBlank(serviceDeathinfo.getDeathjudgedoctt())) {
            wrappers.eq(ServiceDeathinfo::getDeathjudgedoctt, serviceDeathinfo.getDeathjudgedoctt());
        }
        if (StringUtils.isNotBlank(serviceDeathinfo.getDeathjudgeannex())) {
            wrappers.eq(ServiceDeathinfo::getDeathjudgeannex, serviceDeathinfo.getDeathjudgeannex());
        }
        if (serviceDeathinfo.getIsspendremember() != null) {
            wrappers.eq(ServiceDeathinfo::getIsspendremember, serviceDeathinfo.getIsspendremember());
        }
        if (serviceDeathinfo.getIsrestoreremains() != null) {
            wrappers.eq(ServiceDeathinfo::getIsrestoreremains, serviceDeathinfo.getIsrestoreremains());
        }
        if (StringUtils.isNotBlank(serviceDeathinfo.getRememberannex())) {
            wrappers.eq(ServiceDeathinfo::getRememberannex, serviceDeathinfo.getRememberannex());
        }
        if (StringUtils.isNotBlank(serviceDeathinfo.getResponsibleuserid())) {
            wrappers.eq(ServiceDeathinfo::getResponsibleuserid, serviceDeathinfo.getResponsibleuserid());
        }
        if (StringUtils.isNotBlank(serviceDeathinfo.getResponsibleusername())) {
            wrappers.like(ServiceDeathinfo::getResponsibleusername, serviceDeathinfo.getResponsibleusername());
        }
        int currentPage = (serviceDeathinfo.getPageNum() == null || serviceDeathinfo.getPageNum() < 1) ? 1 : serviceDeathinfo.getPageNum();
        int size = (serviceDeathinfo.getPageSize() == null || serviceDeathinfo.getPageSize() < 1) ? 10 : serviceDeathinfo.getPageSize();
        Page<ServiceDeathinfo> page = new Page<>(currentPage, size);
        List<ServiceDeathinfo> serviceDeathinfoList = serviceDeathinfoMapper.selectPage(page, wrappers).getRecords();
        return page.setRecords(serviceDeathinfoList);
    }
    /**
     * æŸ¥è¯¢æ‚£è€…死亡信息列表
     *
     * @param serviceDeathinfo æ‚£è€…死亡信息
     * @return æ‚£è€…死亡信息
     */
    @Override
    public List<ServiceDeathinfo> exportQueryList(ServiceDeathinfo serviceDeathinfo) {
        LambdaQueryWrapper<ServiceDeathinfo> wrappers = Wrappers.lambdaQuery();
        if (serviceDeathinfo.getInfoid() != null) {
            wrappers.eq(ServiceDeathinfo::getInfoid, serviceDeathinfo.getInfoid());
        }
        if (StringUtils.isNotBlank(serviceDeathinfo.getDonorno())) {
            wrappers.eq(ServiceDeathinfo::getDonorno, serviceDeathinfo.getDonorno());
        }
        if (StringUtils.isNotBlank(serviceDeathinfo.getGainhospitalno())) {
            wrappers.eq(ServiceDeathinfo::getGainhospitalno, serviceDeathinfo.getGainhospitalno());
        }
        if (StringUtils.isNotBlank(serviceDeathinfo.getGainhospitalname())) {
            wrappers.like(ServiceDeathinfo::getGainhospitalname, serviceDeathinfo.getGainhospitalname());
        }
        if (serviceDeathinfo.getDeathtime() != null) {
            wrappers.eq(ServiceDeathinfo::getDeathtime, serviceDeathinfo.getDeathtime());
        }
        if (StringUtils.isNotBlank(serviceDeathinfo.getDeathreason())) {
            wrappers.eq(ServiceDeathinfo::getDeathreason, serviceDeathinfo.getDeathreason());
        }
        if (StringUtils.isNotBlank(serviceDeathinfo.getDeathjudgedocto())) {
            wrappers.eq(ServiceDeathinfo::getDeathjudgedocto, serviceDeathinfo.getDeathjudgedocto());
        }
        if (StringUtils.isNotBlank(serviceDeathinfo.getDeathjudgedoctt())) {
            wrappers.eq(ServiceDeathinfo::getDeathjudgedoctt, serviceDeathinfo.getDeathjudgedoctt());
        }
        if (StringUtils.isNotBlank(serviceDeathinfo.getDeathjudgeannex())) {
            wrappers.eq(ServiceDeathinfo::getDeathjudgeannex, serviceDeathinfo.getDeathjudgeannex());
        }
        if (serviceDeathinfo.getIsspendremember() != null) {
            wrappers.eq(ServiceDeathinfo::getIsspendremember, serviceDeathinfo.getIsspendremember());
        }
        if (serviceDeathinfo.getIsrestoreremains() != null) {
            wrappers.eq(ServiceDeathinfo::getIsrestoreremains, serviceDeathinfo.getIsrestoreremains());
        }
        if (StringUtils.isNotBlank(serviceDeathinfo.getRememberannex())) {
            wrappers.eq(ServiceDeathinfo::getRememberannex, serviceDeathinfo.getRememberannex());
        }
        if (StringUtils.isNotBlank(serviceDeathinfo.getResponsibleuserid())) {
            wrappers.eq(ServiceDeathinfo::getResponsibleuserid, serviceDeathinfo.getResponsibleuserid());
        }
        if (StringUtils.isNotBlank(serviceDeathinfo.getResponsibleusername())) {
            wrappers.like(ServiceDeathinfo::getResponsibleusername, serviceDeathinfo.getResponsibleusername());
        }
        return this.list(wrappers);
    }
    @Override
    public List<DeathBaseInfoDTO> dathInfoBaseInfoList(DeathBaseInfoVO deathBaseInfoVO) {
        List<DeathBaseInfoDTO> deathBaseInfoDTOS = serviceDeathinfoMapper.dathInfoBaseInfoList(deathBaseInfoVO);
        return deathBaseInfoDTOS;
    }
}
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatebaseinfoServiceImpl.java
@@ -9,12 +9,15 @@
import java.util.concurrent.ConcurrentHashMap;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.common.CalculateDateUtils;
import com.ruoyi.project.domain.*;
import com.ruoyi.project.domain.dto.DonatebaseinfoProgressDTO;
import com.ruoyi.project.domain.vo.DonatebaseinfoProgressVO;
import com.ruoyi.project.domain.vo.TimeVO;
import com.ruoyi.project.domain.vo.countByRecordStateVO;
import com.ruoyi.project.mapper.*;
@@ -92,50 +95,22 @@
    @Override
    public List<ServiceDonatebaseinfo> queryList(ServiceDonatebaseinfo serviceDonatebaseinfo) {
        LambdaQueryWrapper<ServiceDonatebaseinfo> wrappers = Wrappers.lambdaQuery();
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getName())) {
            wrappers.like(ServiceDonatebaseinfo::getName, serviceDonatebaseinfo.getName());
        }
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getIdcardno())) {
            wrappers.like(ServiceDonatebaseinfo::getIdcardno, serviceDonatebaseinfo.getIdcardno());
        }
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getResidenceprovince())) {
            wrappers.eq(ServiceDonatebaseinfo::getResidenceprovince, serviceDonatebaseinfo.getResidenceprovince());
        }
        if (serviceDonatebaseinfo.getRecordstate() != null) {
            wrappers.eq(ServiceDonatebaseinfo::getRecordstate, serviceDonatebaseinfo.getRecordstate());
        }
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getTreatmenthospitalname())) {
            wrappers.like(ServiceDonatebaseinfo::getTreatmenthospitalname, serviceDonatebaseinfo.getTreatmenthospitalname());
        }
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getDonorno())) {
            wrappers.eq(ServiceDonatebaseinfo::getDonorno, serviceDonatebaseinfo.getDonorno());
        }
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getReportername())) {
            wrappers.like(ServiceDonatebaseinfo::getReportername, serviceDonatebaseinfo.getReportername());
        }
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getCaseNo())) {
            wrappers.eq(ServiceDonatebaseinfo::getCaseNo, serviceDonatebaseinfo.getCaseNo());
        }
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getInfoName())) {
            wrappers.like(ServiceDonatebaseinfo::getInfoName, serviceDonatebaseinfo.getInfoName());
        }
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getInfoNo())) {
            wrappers.eq(ServiceDonatebaseinfo::getInfoNo, serviceDonatebaseinfo.getInfoNo());
        }
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getCoordinatorName())) {
            wrappers.like(ServiceDonatebaseinfo::getCoordinatorName, serviceDonatebaseinfo.getCoordinatorName());
        }
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getCoordinatorNo())) {
            wrappers.eq(ServiceDonatebaseinfo::getCoordinatorNo, serviceDonatebaseinfo.getCoordinatorNo());
        }
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getGcsScore())) {
            wrappers.eq(ServiceDonatebaseinfo::getGcsScore, serviceDonatebaseinfo.getGcsScore());
        }
        Map<String, Object> params = serviceDonatebaseinfo.getParams();
        if (params.get("beginReporttime") != null && params.get("endReporttime") != null) {
            wrappers.between(ServiceDonatebaseinfo::getReporttime, params.get("beginReporttime"), params.get("endReporttime"));
        }
        setWrappers( wrappers,serviceDonatebaseinfo);
        return this.list(wrappers);
    }
    @Override
    public Page<ServiceDonatebaseinfo> queryListPage(ServiceDonatebaseinfo serviceDonatebaseinfo) {
        LambdaQueryWrapper<ServiceDonatebaseinfo> wrappers = Wrappers.lambdaQuery();
        setWrappers( wrappers,serviceDonatebaseinfo);
        // åˆ›å»ºåˆ†é¡µå¯¹è±¡ï¼Œè®¾ç½®é¡µç å’Œæ¯é¡µå¤§å°
        int currentPage = (serviceDonatebaseinfo.getPageNum() == null || serviceDonatebaseinfo.getPageNum() < 1) ? 1 : serviceDonatebaseinfo.getPageNum();
        int size = (serviceDonatebaseinfo.getPageSize() == null || serviceDonatebaseinfo.getPageSize() < 1) ? 10 : serviceDonatebaseinfo.getPageSize();
        Page<ServiceDonatebaseinfo> page = new Page<>(currentPage, size);
        List<ServiceDonatebaseinfo> serviceDonatemaintenanceList = serviceDonatebaseinfoMapper.selectPage(page, wrappers).getRecords();
        return    page.setRecords(serviceDonatemaintenanceList);
    }
    @Override
@@ -192,15 +167,6 @@
        String number = "";
//        if (completeDonation < 10) {
//            number = "000" + completeDonation;
//        } else if (completeDonation >= 10 && completeDonation < 100) {
//            number = "00" + completeDonation;
//        } else if (completeDonation >= 100 && completeDonation < 1000) {
//            number = "0" + completeDonation;
//        } else {
//            number = "" + completeDonation;
//        }
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        BaseOnlyvalue baseOnlyvalue = new BaseOnlyvalue();
@@ -255,14 +221,6 @@
        }
        List<ServiceDonatebaseinfo> serviceDonatebaseinfos = serviceDonatebaseinfoMapper.selectServiceDonatebaseinfoList(serviceDonatebaseinfo);
        for (ServiceDonatebaseinfo serviceDonatebaseinfo1 : serviceDonatebaseinfos) {
            //这里不能再通过当前时间算年龄了,患者可能已经死亡了
//            if (serviceDonatebaseinfo1.getBirthday() != null) {
//                Map<String, String> map = CalculateDateUtils.calculateAge(serviceDonatebaseinfo1.getBirthday().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), LocalDate.now());
//                serviceDonatebaseinfo1.setAge(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age")) ? Long.valueOf(map.get("age")) : null);
//                serviceDonatebaseinfo1.setAgeunit(map.get("ageUnit"));
//                serviceDonatebaseinfo1.setAge2(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age2")) ? Long.valueOf(map.get("age2")) : null);
//                serviceDonatebaseinfo1.setAgeunit2(map.get("ageUnit2"));
//            }
            //先给个年龄默认值(因为age是数字类型,不能放横杠,所以就所横扛放到单位上)
            serviceDonatebaseinfo1.setAgeunit("-");
            serviceDonatebaseinfo1.setAge(null);
@@ -307,6 +265,17 @@
        }
        return serviceDonatebaseinfoMapper.listForSearch(serviceDonatebaseinfo);
    }
    /**
     * æçŒ®è¿›åº¦åŸºæœ¬ä¿¡æ¯
     * @param donatebaseinfoProgressVO
     * @return
     */
    @Override
    public List<DonatebaseinfoProgressDTO> donateBaseInfoProgressList(DonatebaseinfoProgressVO donatebaseinfoProgressVO) {
        List<DonatebaseinfoProgressDTO> donatebaseinfoProgressDTOS = serviceDonatebaseinfoMapper.donateBaseInfoProgressList(donatebaseinfoProgressVO);
        return donatebaseinfoProgressDTOS;
    }
    @Override
@@ -568,4 +537,52 @@
        //将数据封闭,并返回
        return map;
    }
    private void setWrappers(LambdaQueryWrapper<ServiceDonatebaseinfo> wrappers, ServiceDonatebaseinfo serviceDonatebaseinfo){
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getName())) {
            wrappers.like(ServiceDonatebaseinfo::getName, serviceDonatebaseinfo.getName());
        }
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getIdcardno())) {
            wrappers.like(ServiceDonatebaseinfo::getIdcardno, serviceDonatebaseinfo.getIdcardno());
        }
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getResidenceprovince())) {
            wrappers.eq(ServiceDonatebaseinfo::getResidenceprovince, serviceDonatebaseinfo.getResidenceprovince());
        }
        if (serviceDonatebaseinfo.getRecordstate() != null) {
            wrappers.eq(ServiceDonatebaseinfo::getRecordstate, serviceDonatebaseinfo.getRecordstate());
        }
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getTreatmenthospitalname())) {
            wrappers.like(ServiceDonatebaseinfo::getTreatmenthospitalname, serviceDonatebaseinfo.getTreatmenthospitalname());
        }
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getDonorno())) {
            wrappers.eq(ServiceDonatebaseinfo::getDonorno, serviceDonatebaseinfo.getDonorno());
        }
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getReportername())) {
            wrappers.like(ServiceDonatebaseinfo::getReportername, serviceDonatebaseinfo.getReportername());
        }
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getCaseNo())) {
            wrappers.eq(ServiceDonatebaseinfo::getCaseNo, serviceDonatebaseinfo.getCaseNo());
        }
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getInfoName())) {
            wrappers.like(ServiceDonatebaseinfo::getInfoName, serviceDonatebaseinfo.getInfoName());
        }
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getInfoNo())) {
            wrappers.eq(ServiceDonatebaseinfo::getInfoNo, serviceDonatebaseinfo.getInfoNo());
        }
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getCoordinatorName())) {
            wrappers.like(ServiceDonatebaseinfo::getCoordinatorName, serviceDonatebaseinfo.getCoordinatorName());
        }
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getCoordinatorNo())) {
            wrappers.eq(ServiceDonatebaseinfo::getCoordinatorNo, serviceDonatebaseinfo.getCoordinatorNo());
        }
        if (StringUtils.isNotBlank(serviceDonatebaseinfo.getGcsScore())) {
            wrappers.eq(ServiceDonatebaseinfo::getGcsScore, serviceDonatebaseinfo.getGcsScore());
        }
        Map<String, Object> params = serviceDonatebaseinfo.getParams();
        if (params.get("beginReporttime") != null && params.get("endReporttime") != null) {
            wrappers.between(ServiceDonatebaseinfo::getReporttime, params.get("beginReporttime"), params.get("endReporttime"));
        }
    }
}
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatemaintenanceServiceImpl.java
@@ -2,11 +2,18 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.DtoConversionUtils;
import com.ruoyi.project.domain.ServiceDonatebaseinfo;
import com.ruoyi.project.domain.ServiceDonatemaintenance;
import com.ruoyi.project.domain.dto.ServiceDonatebaseinfoDTO;
import com.ruoyi.project.domain.vo.ServiceDonatemaintenanceVO;
import com.ruoyi.project.mapper.ServiceDonatemaintenanceMapper;
import com.ruoyi.project.service.IServiceDonatebaseinfoService;
import com.ruoyi.project.service.IServiceDonatemaintenanceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@@ -18,9 +25,12 @@
 * @date 2025-12-27
 */
@Service
public class ServiceDonatemaintenanceServiceImpl extends ServiceImpl<ServiceDonatemaintenanceMapper, ServiceDonatemaintenance> implements IServiceDonatemaintenanceService
{
public class ServiceDonatemaintenanceServiceImpl extends ServiceImpl<ServiceDonatemaintenanceMapper, ServiceDonatemaintenance> implements IServiceDonatemaintenanceService {
    @Autowired
    private ServiceDonatemaintenanceMapper serviceDonatemaintenanceMapper;
    @Autowired
    private IServiceDonatebaseinfoService serviceDonatebaseinfoService;
    /**
     * æŸ¥è¯¢ä¾›ä½“维护记录列表
@@ -29,30 +39,61 @@
     * @return ä¾›ä½“维护记录
     */
    @Override
    public List<ServiceDonatemaintenance> queryList(ServiceDonatemaintenance serviceDonatemaintenance) {
    public Page<ServiceDonatemaintenance> queryList(ServiceDonatemaintenance serviceDonatemaintenance) {
        LambdaQueryWrapper<ServiceDonatemaintenance> wrappers = Wrappers.lambdaQuery();
        if (serviceDonatemaintenance.getInfoid() != null){
            wrappers.eq(ServiceDonatemaintenance::getInfoid ,serviceDonatemaintenance.getInfoid());
        if (serviceDonatemaintenance.getInfoid() != null) {
            wrappers.eq(ServiceDonatemaintenance::getInfoid, serviceDonatemaintenance.getInfoid());
        }
        if (StringUtils.isNotBlank(serviceDonatemaintenance.getCaseNo())){
            wrappers.eq(ServiceDonatemaintenance::getCaseNo ,serviceDonatemaintenance.getCaseNo());
        if (StringUtils.isNotBlank(serviceDonatemaintenance.getCaseNo())) {
            wrappers.eq(ServiceDonatemaintenance::getCaseNo, serviceDonatemaintenance.getCaseNo());
        }
        if (StringUtils.isNotBlank(serviceDonatemaintenance.getDonorno())){
            wrappers.eq(ServiceDonatemaintenance::getDonorno ,serviceDonatemaintenance.getDonorno());
        if (StringUtils.isNotBlank(serviceDonatemaintenance.getDonorno())) {
            wrappers.eq(ServiceDonatemaintenance::getDonorno, serviceDonatemaintenance.getDonorno());
        }
        if (StringUtils.isNotBlank(serviceDonatemaintenance.getItemNo())){
            wrappers.eq(ServiceDonatemaintenance::getItemNo ,serviceDonatemaintenance.getItemNo());
        if (StringUtils.isNotBlank(serviceDonatemaintenance.getItemNo())) {
            wrappers.eq(ServiceDonatemaintenance::getItemNo, serviceDonatemaintenance.getItemNo());
        }
        if (StringUtils.isNotBlank(serviceDonatemaintenance.getItemName())){
            wrappers.like(ServiceDonatemaintenance::getItemName ,serviceDonatemaintenance.getItemName());
        if (StringUtils.isNotBlank(serviceDonatemaintenance.getItemName())) {
            wrappers.like(ServiceDonatemaintenance::getItemName, serviceDonatemaintenance.getItemName());
        }
        if (serviceDonatemaintenance.getItemTime() != null){
            wrappers.eq(ServiceDonatemaintenance::getItemTime ,serviceDonatemaintenance.getItemTime());
        if (serviceDonatemaintenance.getItemTime() != null) {
            wrappers.eq(ServiceDonatemaintenance::getItemTime, serviceDonatemaintenance.getItemTime());
        }
        if (StringUtils.isNotBlank(serviceDonatemaintenance.getItemDesc())){
            wrappers.eq(ServiceDonatemaintenance::getItemDesc ,serviceDonatemaintenance.getItemDesc());
        if (StringUtils.isNotBlank(serviceDonatemaintenance.getItemDesc())) {
            wrappers.eq(ServiceDonatemaintenance::getItemDesc, serviceDonatemaintenance.getItemDesc());
        }
        return this.list(wrappers);
        // åˆ›å»ºåˆ†é¡µå¯¹è±¡ï¼Œè®¾ç½®é¡µç å’Œæ¯é¡µå¤§å°
        int currentPage = (serviceDonatemaintenance.getPageNum() == null || serviceDonatemaintenance.getPageNum() < 1) ? 1 : serviceDonatemaintenance.getPageNum();
        int size = (serviceDonatemaintenance.getPageSize() == null || serviceDonatemaintenance.getPageSize() < 1) ? 10 : serviceDonatemaintenance.getPageSize();
        Page<ServiceDonatemaintenance> page = new Page<>(currentPage, size);
        List<ServiceDonatemaintenance> serviceDonatemaintenanceList = serviceDonatemaintenanceMapper.selectPage(page, wrappers).getRecords();
        return page.setRecords(serviceDonatemaintenanceList);
    }
    @Override
    public Page maintenanceBaseInfoList(ServiceDonatemaintenanceVO serviceDonatemaintenanceVO) {
        ServiceDonatebaseinfo serviceDonatebaseinfo = new ServiceDonatebaseinfo();
        serviceDonatebaseinfo.setPageNum(serviceDonatemaintenanceVO.getPageNum());
        serviceDonatebaseinfo.setPageSize(serviceDonatemaintenanceVO.getPageSize());
        serviceDonatebaseinfo.setName(serviceDonatemaintenanceVO.getName());
        serviceDonatebaseinfo.setTreatmenthospitalname(serviceDonatemaintenanceVO.getTreatmenthospitalname());
        serviceDonatebaseinfo.setDeptname(serviceDonatemaintenanceVO.getDeptname());
        serviceDonatebaseinfo.setRecordstate(serviceDonatemaintenanceVO.getRecordstate());
        Page serviceDonatebaseinfoPage = serviceDonatebaseinfoService.queryListPage(serviceDonatebaseinfo);
        List<ServiceDonatebaseinfo> records = serviceDonatebaseinfoPage.getRecords();
        List<ServiceDonatebaseinfoDTO> serviceDonatebaseinfoDTOS = DtoConversionUtils.sourceToTarget(records, ServiceDonatebaseinfoDTO.class);
        for (ServiceDonatebaseinfoDTO serviceDonatebaseinfoDTO : serviceDonatebaseinfoDTOS) {
            ServiceDonatemaintenance serviceDonatemaintenance = new ServiceDonatemaintenance();
            serviceDonatemaintenance.setInfoid(serviceDonatebaseinfoDTO.getId());
            List<ServiceDonatemaintenance> serviceDonatemaintenanceList = serviceDonatemaintenanceMapper.selectServiceDonatemaintenanceList(serviceDonatemaintenance);
            serviceDonatebaseinfoDTO.setServiceDonatemaintenanceList(serviceDonatemaintenanceList);
        }
        serviceDonatebaseinfoPage.setRecords(serviceDonatebaseinfoDTOS);
        return serviceDonatebaseinfoPage;
    }
}
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonateorganBaseServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,130 @@
package com.ruoyi.project.service.impl;
import java.util.List;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.project.domain.ServiceDonateorgan;
import com.ruoyi.project.domain.dto.DonateorganBaseInfoDTO;
import com.ruoyi.project.domain.vo.DonateorganBaseInfoVO;
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.ServiceDonateorganBaseMapper;
import com.ruoyi.project.domain.ServiceDonateorganBase;
import com.ruoyi.project.service.IServiceDonateorganBaseService;
/**
 * æçŒ®å™¨å®˜åˆ†é…åŸºç¡€Service业务层处理
 *
 * @author ls
 * @date 2026-01-17
 */
@Service
public class ServiceDonateorganBaseServiceImpl extends ServiceImpl<ServiceDonateorganBaseMapper, ServiceDonateorganBase> implements IServiceDonateorganBaseService {
    @Autowired
    private ServiceDonateorganBaseMapper serviceDonateorganBaseMapper;
    @Autowired
    private ServiceDonateorganMapper serviceDonateorganMapper;
    /**
     * æŸ¥è¯¢æçŒ®å™¨å®˜åˆ†é…åŸºç¡€åˆ—表
     *
     * @param serviceDonateorganBase æçŒ®å™¨å®˜åˆ†é…åŸºç¡€
     * @return æçŒ®å™¨å®˜åˆ†é…åŸºç¡€
     */
    @Override
    public Page<ServiceDonateorganBase> queryList(ServiceDonateorganBase serviceDonateorganBase) {
        LambdaQueryWrapper<ServiceDonateorganBase> wrappers = Wrappers.lambdaQuery();
        if (serviceDonateorganBase.getInfoid() != null) {
            wrappers.eq(ServiceDonateorganBase::getInfoid, serviceDonateorganBase.getInfoid());
        }
        if (serviceDonateorganBase.getAllocationStatus() != null) {
            wrappers.eq(ServiceDonateorganBase::getAllocationStatus, serviceDonateorganBase.getAllocationStatus());
        }
        if (serviceDonateorganBase.getAllocationTime() != null) {
            wrappers.eq(ServiceDonateorganBase::getAllocationTime, serviceDonateorganBase.getAllocationTime());
        }
        if (StringUtils.isNotBlank(serviceDonateorganBase.getRegistrationCode())) {
            wrappers.eq(ServiceDonateorganBase::getRegistrationCode, serviceDonateorganBase.getRegistrationCode());
        }
        if (StringUtils.isNotBlank(serviceDonateorganBase.getRegistrationName())) {
            wrappers.like(ServiceDonateorganBase::getRegistrationName, serviceDonateorganBase.getRegistrationName());
        }
        if (serviceDonateorganBase.getRegistrationTime() != null) {
            wrappers.eq(ServiceDonateorganBase::getRegistrationTime, serviceDonateorganBase.getRegistrationTime());
        }
        if (serviceDonateorganBase.getEstimatedtime() != null) {
            wrappers.eq(ServiceDonateorganBase::getEstimatedtime, serviceDonateorganBase.getEstimatedtime());
        }
        int currentPage = (serviceDonateorganBase.getPageNum() == null || serviceDonateorganBase.getPageNum() < 1) ? 1 : serviceDonateorganBase.getPageNum();
        int size = (serviceDonateorganBase.getPageSize() == null || serviceDonateorganBase.getPageSize() < 1) ? 10 : serviceDonateorganBase.getPageSize();
        Page<ServiceDonateorganBase> page = new Page<>(currentPage, size);
        List<ServiceDonateorganBase> serviceDonateorganBaseList = serviceDonateorganBaseMapper.selectPage(page, wrappers).getRecords();
        return page.setRecords(serviceDonateorganBaseList);
    }
    @Override
    public List<DonateorganBaseInfoDTO> getDonateorganBaseInfoList(DonateorganBaseInfoVO donateorganBaseInfoVO) {
        List<DonateorganBaseInfoDTO> donateorganBaseInfoList = serviceDonateorganBaseMapper.getDonateorganBaseInfoList(donateorganBaseInfoVO);
        if (!donateorganBaseInfoList.isEmpty() && donateorganBaseInfoVO.getPageNum() != null) {
            for (DonateorganBaseInfoDTO donateorganBaseInfoDTO : donateorganBaseInfoList) {
                ServiceDonateorgan serviceDonateorgan = new ServiceDonateorgan();
                serviceDonateorgan.setInfoid(donateorganBaseInfoDTO.getInfoid());
                serviceDonateorgan.setBaseId(donateorganBaseInfoDTO.getId());
                //获取捐献多个器官详情管理列表
                List<ServiceDonateorgan> serviceDonateorgans = serviceDonateorganMapper.selectServiceDonateorganList(serviceDonateorgan);
                donateorganBaseInfoDTO.setServiceDonateorganList(serviceDonateorgans);
            }
        }
        return donateorganBaseInfoList;
    }
    /**
     * æŸ¥è¯¢æçŒ®å™¨å®˜åˆ†é…åŸºç¡€åˆ—表
     *
     * @param serviceDonateorganBase æçŒ®å™¨å®˜åˆ†é…åŸºç¡€
     * @return æçŒ®å™¨å®˜åˆ†é…åŸºç¡€
     */
    @Override
    public List<ServiceDonateorganBase> exportQueryList(ServiceDonateorganBase serviceDonateorganBase) {
        LambdaQueryWrapper<ServiceDonateorganBase> wrappers = Wrappers.lambdaQuery();
        if (serviceDonateorganBase.getInfoid() != null) {
            wrappers.eq(ServiceDonateorganBase::getInfoid, serviceDonateorganBase.getInfoid());
        }
        if (serviceDonateorganBase.getAllocationStatus() != null) {
            wrappers.eq(ServiceDonateorganBase::getAllocationStatus, serviceDonateorganBase.getAllocationStatus());
        }
        if (serviceDonateorganBase.getAllocationTime() != null) {
            wrappers.eq(ServiceDonateorganBase::getAllocationTime, serviceDonateorganBase.getAllocationTime());
        }
        if (StringUtils.isNotBlank(serviceDonateorganBase.getRegistrationCode())) {
            wrappers.eq(ServiceDonateorganBase::getRegistrationCode, serviceDonateorganBase.getRegistrationCode());
        }
        if (StringUtils.isNotBlank(serviceDonateorganBase.getRegistrationName())) {
            wrappers.like(ServiceDonateorganBase::getRegistrationName, serviceDonateorganBase.getRegistrationName());
        }
        if (serviceDonateorganBase.getRegistrationTime() != null) {
            wrappers.eq(ServiceDonateorganBase::getRegistrationTime, serviceDonateorganBase.getRegistrationTime());
        }
        if (serviceDonateorganBase.getEstimatedtime() != null) {
            wrappers.eq(ServiceDonateorganBase::getEstimatedtime, serviceDonateorganBase.getEstimatedtime());
        }
        return this.list(wrappers);
    }
}
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonateorganServiceImpl.java
@@ -82,6 +82,9 @@
    @Override
    public List<ServiceDonateorgan> queryList(ServiceDonateorgan serviceDonateorgan) {
        LambdaQueryWrapper<ServiceDonateorgan> wrappers = Wrappers.lambdaQuery();
        if (StringUtils.isNotNull(serviceDonateorgan.getBaseId())) {
            wrappers.eq(ServiceDonateorgan::getBaseId, serviceDonateorgan.getBaseId());
        }
        if (StringUtils.isNotNull(serviceDonateorgan.getInfoid())) {
            wrappers.eq(ServiceDonateorgan::getInfoid, serviceDonateorgan.getInfoid());
        }
@@ -446,7 +449,7 @@
    @Override
    public List<DonateOrganVO> selectVOList(DonateOrganVO donateOrganVO) {
        List<DonateOrganVO> donateOrganVOS = serviceDonateorganMapper.selectVOList(donateOrganVO);
        for (DonateOrganVO donateOrganVO1:donateOrganVOS) {
        for (DonateOrganVO donateOrganVO1 : donateOrganVOS) {
            if (donateOrganVO1.getBirthday() != null) {
                Map<String, String> map = CalculateDateUtils.calculateAge(donateOrganVO1.getBirthday().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), LocalDate.now());
                donateOrganVO1.setAge(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age")) ? Long.valueOf(map.get("age")) : null);
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonationwitnessServiceImpl.java
@@ -1,6 +1,5 @@
package com.ruoyi.project.service.impl;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;
import java.util.List;
@@ -8,16 +7,17 @@
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
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.common.CalculateDateUtils;
import com.ruoyi.project.domain.ServiceDonationwitnessorgan;
import com.ruoyi.project.domain.vo.DonationwitnessBaseInfoVO;
import com.ruoyi.project.domain.ServiceDonatebaseinfo;
import com.ruoyi.project.domain.ServiceDonateorgan;
import com.ruoyi.project.domain.dto.DonationwitnessBaseInfoDTO;
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 com.ruoyi.project.mapper.ServiceDonationwitnessorganMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -25,7 +25,6 @@
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;
@@ -47,6 +46,9 @@
    @Autowired
    ServiceDonationwitnessMapper serviceDonationwitnessMapper;
    @Autowired
    ServiceDonationwitnessorganMapper serviceDonationwitnessorganMapper;
    @Autowired
    ServiceDonatebaseinfoMapper serviceDonatebaseinfoMapper;
@@ -81,6 +83,22 @@
    }
    @Override
    public List<DonationwitnessBaseInfoDTO> getDonationwitnessBaseInfo(DonationwitnessBaseInfoVO donationwitnessBaseInfoVO) {
        List<DonationwitnessBaseInfoDTO> donationwitnessBaseInfos = serviceDonationwitnessMapper.getDonationwitnessBaseInfo(donationwitnessBaseInfoVO);
        //获取所有器官信息
        if (!CollectionUtils.isEmpty(donationwitnessBaseInfos)&&donationwitnessBaseInfoVO.getPageNum()!=null) {
            for (DonationwitnessBaseInfoDTO donationwitnessBaseInfoDTO:donationwitnessBaseInfos) {
                ServiceDonationwitnessorgan serviceDonationwitnessorgan=new ServiceDonationwitnessorgan();
                serviceDonationwitnessorgan.setInfoid(donationwitnessBaseInfoDTO.getInfoid());
                List<ServiceDonationwitnessorgan> serviceDonationwitnessorgans = serviceDonationwitnessorganMapper.selectServiceDonationwitnessorganList(serviceDonationwitnessorgan);
                donationwitnessBaseInfoDTO.setServiceDonationwitnessorgans(serviceDonationwitnessorgans);
            }
        }
        return donationwitnessBaseInfos;
    }
    @Override
    public List<DonationWitnessVO> selectVOList(DonationWitnessVO donationWitnessVO) {
        SysUser user = SecurityUtils.getLoginUser().getUser();
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceEthicalreviewinitiateServiceImpl.java
@@ -6,8 +6,11 @@
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.project.domain.ServiceDonatebaseinfoReport;
import com.ruoyi.project.domain.ServiceEthicalreviewinitiate;
import com.ruoyi.project.domain.dto.ReviewInitiateBaseInfoDTO;
import com.ruoyi.project.domain.vo.ReviewInitiateBaseInfoVO;
import com.ruoyi.project.mapper.ServiceEthicalreviewinitiateMapper;
import com.ruoyi.project.service.IServiceEthicalreviewinitiateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@@ -21,6 +24,8 @@
@Service
public class ServiceEthicalreviewinitiateServiceImpl extends ServiceImpl<ServiceEthicalreviewinitiateMapper, ServiceEthicalreviewinitiate> implements IServiceEthicalreviewinitiateService {
    @Autowired
    private ServiceEthicalreviewinitiateMapper serviceEthicalreviewinitiateMapper;
    /**
     * æŸ¥è¯¢ä¼¦ç†å®¡æŸ¥å‘起列表
@@ -84,4 +89,10 @@
        return this.list(wrappers);
    }
    @Override
    public List<ReviewInitiateBaseInfoDTO> reviewinitiateBaseInfoList(ReviewInitiateBaseInfoVO reviewInitiateBaseInfoVO) {
        List<ReviewInitiateBaseInfoDTO> reviewInitiateBaseInfoDTOS = serviceEthicalreviewinitiateMapper.reviewinitiateBaseInfoList(reviewInitiateBaseInfoVO);
        return reviewInitiateBaseInfoDTOS;
    }
}
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceMedicalevaluationServiceImpl.java
@@ -1,26 +1,27 @@
package com.ruoyi.project.service.impl;
import java.util.List;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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.common.utils.StringUtils;
import com.ruoyi.project.domain.ServiceMedicalevaluationorgan;
import com.ruoyi.project.domain.dto.MedicalevaluationBaseInfoDTO;
import com.ruoyi.project.domain.ServiceMedicalevaluation;
import com.ruoyi.project.domain.vo.MedicalEvaluationVO;
import com.ruoyi.project.domain.vo.MedicalEvaluationWithBaseInfoVO;
import com.ruoyi.project.mapper.ServiceDonatebaseinfoMapper;
import com.ruoyi.project.mapper.ServiceMedicalevaluationMapper;
import com.ruoyi.project.mapper.ServiceMedicalevaluationorganMapper;
import com.ruoyi.project.service.IServiceMedicalevaluationService;
import lombok.extern.slf4j.Slf4j;
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.ServiceMedicalevaluationMapper;
import com.ruoyi.project.domain.ServiceMedicalevaluation;
import com.ruoyi.project.service.IServiceMedicalevaluationService;
import java.util.List;
/**
 * åŒ»å­¦è¯„ä¼°Service业务层处理
@@ -34,6 +35,12 @@
    @Autowired
    ServiceMedicalevaluationMapper serviceMedicalevaluationMapper;
    @Autowired
    ServiceMedicalevaluationorganMapper serviceMedicalevaluationorganMapper;
    @Autowired
    ServiceDonatebaseinfoMapper serviceDonatebaseinfoMapper;
    /**
@@ -51,8 +58,10 @@
        if (StringUtils.isNotNull(serviceMedicalevaluation.getInfoid())) {
            wrappers.eq(ServiceMedicalevaluation::getInfoid, serviceMedicalevaluation.getInfoid());
        }
        if (StringUtils.isNotNull(serviceMedicalevaluation.getAssessState())) {
            wrappers.eq(ServiceMedicalevaluation::getAssessState, serviceMedicalevaluation.getAssessState());
        if (StringUtils.isNotNull(serviceMedicalevaluation.getFirstAssessState())) {
            wrappers.eq(ServiceMedicalevaluation::getFirstAssessState, serviceMedicalevaluation.getFirstAssessState());
        }  if (StringUtils.isNotNull(serviceMedicalevaluation.getSecondAssessState())) {
            wrappers.eq(ServiceMedicalevaluation::getSecondAssessState, serviceMedicalevaluation.getSecondAssessState());
        }
        if (StringUtils.isNotBlank(serviceMedicalevaluation.getDonorno())) {
            wrappers.eq(ServiceMedicalevaluation::getDonorno, serviceMedicalevaluation.getDonorno());
@@ -84,9 +93,20 @@
    }
    @Override
    public List<ServiceMedicalevaluation> selectServiceMedicalevaluationList(ServiceMedicalevaluation serviceMedicalevaluation) {
    public List<MedicalevaluationBaseInfoDTO> evaluateBaseInfolist(MedicalEvaluationWithBaseInfoVO medicalEvaluationWithBaseInfoVO) {
        List<MedicalevaluationBaseInfoDTO> medicalevaluationBaseInfoDTOS = serviceMedicalevaluationMapper.selectEvaluateBaseInfoList(medicalEvaluationWithBaseInfoVO);
        return serviceMedicalevaluationMapper.selectServiceMedicalevaluationList(serviceMedicalevaluation);
        //判断pgaeNun是为了让查询total不再查询serviceMedicalevaluationorgan
        if (medicalEvaluationWithBaseInfoVO.getPageNum() != null) {
            for (MedicalevaluationBaseInfoDTO medicalevaluationBaseInfoDTO : medicalevaluationBaseInfoDTOS) {
                ServiceMedicalevaluationorgan serviceMedicalevaluationorgan = new ServiceMedicalevaluationorgan();
                serviceMedicalevaluationorgan.setInfoid(medicalevaluationBaseInfoDTO.getInfoid());
                List<ServiceMedicalevaluationorgan> serviceMedicalevaluationorgans = serviceMedicalevaluationorganMapper.selectServiceMedicalevaluationorganList(serviceMedicalevaluationorgan);
                if (CollectionUtils.isNotEmpty(serviceMedicalevaluationorgans))
                    medicalevaluationBaseInfoDTO.setServiceMedicalevaluationorgan(serviceMedicalevaluationorgans.get(0));
            }
        }
        return medicalevaluationBaseInfoDTOS;
    }
}
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceRelativesconfirmationServiceImpl.java
@@ -13,7 +13,9 @@
import com.ruoyi.project.common.CalculateDateUtils;
import com.ruoyi.project.domain.ServiceDonatebaseinfo;
import com.ruoyi.project.domain.ServiceDonationwitness;
import com.ruoyi.project.domain.dto.RelativeConfirmationBaseInfoDTO;
import com.ruoyi.project.domain.vo.MedicalEvaluationVO;
import com.ruoyi.project.domain.vo.RelativeConfirmationBaseInfoVO;
import com.ruoyi.project.domain.vo.RelativeConfirmationVO;
import com.ruoyi.project.mapper.ServiceDonatebaseinfoMapper;
import com.ruoyi.project.mapper.ServiceDonationwitnessMapper;
@@ -249,4 +251,13 @@
        return relativeConfirmationVOS;
    }
    @Override
    public List<RelativeConfirmationBaseInfoDTO> confirmationBaseInfoList(RelativeConfirmationBaseInfoVO relativeConfirmationBaseInfoVO) {
        List<RelativeConfirmationBaseInfoDTO> relativeConfirmationBaseInfoDTOS = serviceRelativesconfirmationMapper.confirmationBaseInfoList(relativeConfirmationBaseInfoVO);
        if (!CollectionUtils.isEmpty(relativeConfirmationBaseInfoDTOS)) {
            return relativeConfirmationBaseInfoDTOS;
        }
        return null;
    }
}
ruoyi-project/src/main/resources/mapper/project/ServiceDeathinfoMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,138 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.mapper.ServiceDeathinfoMapper">
    <resultMap type="com.ruoyi.project.domain.ServiceDeathinfo" id="ServiceDeathinfoResult">
        <result property="id" column="ID"/>
        <result property="infoid" column="InfoID"/>
        <result property="donorno" column="DonorNo"/>
        <result property="gainhospitalno" column="GainHospitalNo"/>
        <result property="gainhospitalname" column="GainHospitalName"/>
        <result property="deathtime" column="DeathTime"/>
        <result property="deathreason" column="DeathReason"/>
        <result property="deathjudgedocto" column="DeathJudgeDoctO"/>
        <result property="deathjudgedoctt" column="DeathJudgeDoctT"/>
        <result property="deathjudgeannex" column="DeathJudgeAnnex"/>
        <result property="isspendremember" column="IsSpendRemember"/>
        <result property="isrestoreremains" column="IsRestoreRemains"/>
        <result property="rememberannex" column="RememberAnnex"/>
        <result property="responsibleuserid" column="ResponsibleUserID"/>
        <result property="responsibleusername" column="ResponsibleUserName"/>
        <result property="delFlag" column="del_flag"/>
        <result property="createBy" column="create_by"/>
        <result property="createTime" column="create_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
    </resultMap>
    <sql id="selectServiceDeathinfoVo">
        select ID,
               InfoID,
               DonorNo,
               GainHospitalNo,
               GainHospitalName,
               DeathTime,
               DeathReason,
               DeathJudgeDoctO,
               DeathJudgeDoctT,
               DeathJudgeAnnex,
               IsSpendRemember,
               IsRestoreRemains,
               RememberAnnex,
               ResponsibleUserID,
               ResponsibleUserName,
               del_flag,
               create_by,
               create_time,
               update_by,
               update_time
        from service_deathinfo
    </sql>
    <select id="selectServiceDeathinfoList" parameterType="com.ruoyi.project.domain.ServiceDeathinfo"
            resultMap="ServiceDeathinfoResult">
        <include refid="selectServiceDeathinfoVo"/>
        <where>
            <if test="infoid != null ">and InfoID = #{infoid}</if>
            <if test="donorno != null  and donorno != ''">and DonorNo = #{donorno}</if>
            <if test="gainhospitalno != null  and gainhospitalno != ''">and GainHospitalNo = #{gainhospitalno}</if>
            <if test="gainhospitalname != null  and gainhospitalname != ''">and GainHospitalName like concat('%',
                #{gainhospitalname}, '%')
            </if>
            <if test="deathtime != null ">and DeathTime = #{deathtime}</if>
            <if test="deathreason != null  and deathreason != ''">and DeathReason = #{deathreason}</if>
            <if test="deathjudgedocto != null  and deathjudgedocto != ''">and DeathJudgeDoctO = #{deathjudgedocto}</if>
            <if test="deathjudgedoctt != null  and deathjudgedoctt != ''">and DeathJudgeDoctT = #{deathjudgedoctt}</if>
            <if test="deathjudgeannex != null  and deathjudgeannex != ''">and DeathJudgeAnnex = #{deathjudgeannex}</if>
            <if test="isspendremember != null ">and IsSpendRemember = #{isspendremember}</if>
            <if test="isrestoreremains != null ">and IsRestoreRemains = #{isrestoreremains}</if>
            <if test="rememberannex != null  and rememberannex != ''">and RememberAnnex = #{rememberannex}</if>
            <if test="responsibleuserid != null  and responsibleuserid != ''">and ResponsibleUserID =
                #{responsibleuserid}
            </if>
            <if test="responsibleusername != null  and responsibleusername != ''">and ResponsibleUserName like
                concat('%', #{responsibleusername}, '%')
            </if>
        </where>
    </select>
    <select id="dathInfoBaseInfoList" parameterType="com.ruoyi.project.domain.vo.DeathBaseInfoVO"
            resultType="com.ruoyi.project.domain.dto.DeathBaseInfoDTO">
        SELECT
        sd.treatmenthospitalname AS treatmenthospitalname,
        sd.treatmenthospitalno AS treatmenthospitalno,
        sd.DonorNo AS donorno,
        sd.case_no AS caseNo,
        sd.Name AS NAME,
        sd.RecordState AS recordstate,
        sd.Sex AS sex,
        sd.Age AS age,
        sd.BloodType AS bloodtype,
        sd.idcardno AS idcardno,
        sd.diagnosisname AS diagnosisname,
        sdi.infoID AS infoid,
        sdi.ID AS id,
        sdi.GainHospitalNo as gainhospitalno,
        sdi.GainHospitalName as gainhospitalname,
        sdi.DeathTime as deathtime,
        sdi.DeathReason as deathreason,
        sdi.DeathJudgeDoctO as deathjudgedocto,
        sdi.DeathJudgeDoctT as deathjudgedoctt,
        sdi.DeathJudgeAnnex as deathjudgeannex,
        sdi.IsSpendRemember as isspendremember,
        sdi.IsRestoreRemains as isrestoreremains,
        sdi.RememberAnnex as rememberannex,
        sdi.ResponsibleUserID as responsibleuserid,
        sdi.ResponsibleUserName as responsibleusername
        FROM
        service_donatebaseinfo sd
        LEFT JOIN service_deathinfo sdi ON sd.ID = sdi.InfoID
        AND sd.del_flag = 0
        AND sdi.del_flag = 0
        <where>
            <if test="infoid != null ">and se.InfoID = #{infoid}</if>
            <if test="caseNo != null  and caseNo != ''">and sd.case_no = #{caseNo}</if>
            <if test="name != null  and name != ''">and sd.Name = #{name}</if>
            <if test="donorno != null  and donorno != ''">and sd.DonorNo = #{donorno}</if>
            <if test="treatmenthospitalno != null  and treatmenthospitalno != ''">and sd.treatmenthospitalno =
                #{treatmenthospitalno}
            </if>
            <if test="treatmenthospitalname != null  and treatmenthospitalname != ''">and sd.treatmenthospitalname like
                concat('%',#{treatmenthospitalname}, '%')
            </if>
            <if test="name != null  and name != ''">and sd.NAME like concat('%',#{name}, '%')</if>
            <if test="deathtime != null">and sdi.DeathTime = #{deathtime}</if>
            <if test="deathjudgedocto != null">and sdi.DeathJudgeDoctO = #{deathjudgedocto}</if>
            <if test="deathjudgedoctt != null">and sdi.DeathJudgeDoctT = #{deathjudgedoctt}</if>
            <if test="responsibleuserid != null">and sdi.ResponsibleUserID = #{responsibleuserid}</if>
            <if test="responsibleusername != null  and responsibleusername != ''">and sd.ResponsibleUserName like
                concat('%',#{responsibleusername}, '%')
            </if>
        </where>
        <if test="pageNum != null and pageSize != null">limit #{pageNum},#{pageSize}</if>
    </select>
</mapper>
ruoyi-project/src/main/resources/mapper/project/ServiceDonatebaseinfoMapper.xml
@@ -410,4 +410,52 @@
          AND d.OrganGetTime &lt;= #{endtime}
    </select>
    <select id="donateBaseInfoProgressList" resultType="com.ruoyi.project.domain.dto.DonatebaseinfoProgressDTO">
        SELECT sd.treatmenthospitalname AS treatmenthospitalname,
        sd.treatmenthospitalno AS treatmenthospitalno,
        sd.DonorNo AS donorno,
        sd.case_no AS caseNo,
        sd.NAME AS NAME,
        sd.RecordState AS recordstate,
        sd.Sex AS sex,
        sd.Age AS age,
        sd.BloodType AS bloodtype,
        sd.idcardno AS idcardno,
        sd.ReportTime AS reportTime,
        sd.coordinator_no AS coordinatorNo,
        sd.coordinator_name AS coordinatorName,
        sd.termination_case AS terminationCase,
        sd.diagnosisname AS diagnosisname,
        sm.assess_first_time AS assessFirstTime,-- ç¬¬ä¸€æ¬¡è¯„ä¼°æ—¶é—´
        sm.assess_second_time AS assessSecondTime,-- ç¬¬äºŒæ¬¡è¯„ä¼°æ—¶é—´
        sm.first_assess_state AS firstAssessState,-- ç¬¬ä¸€æ¬¡è¯„估结论
        sm.second_assess_state AS secondAssessState,-- ç¬¬äºŒæ¬¡è¯„估结论
        sr.SignDate AS signDate,-- äº²å±žç¡®è®¤æ—¶é—´
        se.expert_conclusion AS expertConclusion,-- ä¼¦ç†å®¡æŸ¥ä¸“家结论
        se.expert_time AS expertTime,-- ä¼¦ç†å®¡æŸ¥ä¸“家结论时间
        (SELECT COUNT(*) FROM service_donateorgan sdo WHERE sdo.InfoID = sd.ID) AS organCount,-- å™¨å®˜åˆ†é…æ•°é‡
        sdw.OperationBegTime AS operationBegTime,-- èŽ·å–è§è¯æ—¶é—´
        sdt.CompleteTime AS completeTime -- å®Œæˆç™»è®°æ—¶é—´
        FROM service_donatebaseinfo sd
        LEFT JOIN service_medicalevaluation sm ON sd.ID = sm.InfoID
        AND sm.del_flag = 0 -- æçŒ®è¯„ä¼°
        LEFT JOIN service_relativesconfirmation sr ON sd.ID = sr.InfoID
        AND sr.del_flag = 0-- æçŒ®ç¡®è®¤
        LEFT JOIN service_ethicalreviewinitiate se ON sd.ID = se.InfoID
        AND se.del_flag = 0-- ä¼¦ç†å®¡æŸ¥
        LEFT JOIN service_donationwitness sdw ON sd.ID = sdw.InfoID
        AND sdw.del_flag = 0-- èŽ·å–è§è¯
        LEFT JOIN service_donatecompletioninfo sdt ON sd.ID = sdt.InfoID
        AND sdt.del_flag = 0 -- å®Œæˆç™»è®°
        <where>sd.del_flag = 0
            <if test="name != null ">AND sd.Name >= #{name}</if>
            <if test="idcardno != null  and idcardno != ''">and IDCardNo = #{idcardno}</if>
            <if test="recordstate != null and recordstate != ''">and RecordState = #{recordstate}</if>
        </where>
        ORDER BY sd.ReportTime DESC
        <if test="pageNum != null and pageSize != null">limit #{pageNum},#{pageSize}</if>
    </select>
</mapper>
ruoyi-project/src/main/resources/mapper/project/ServiceDonatemaintenanceMapper.xml
@@ -41,6 +41,7 @@
            resultMap="ServiceDonatemaintenanceResult">
        <include refid="selectServiceDonatemaintenanceVo"/>
        <where>
            del_flag=0
            <if test="infoid != null ">and InfoID = #{infoid}</if>
            <if test="caseNo != null  and caseNo != ''">and case_no = #{caseNo}</if>
            <if test="donorno != null  and donorno != ''">and DonorNo = #{donorno}</if>
ruoyi-project/src/main/resources/mapper/project/ServiceDonateorganBaseMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.mapper.ServiceDonateorganBaseMapper">
    <resultMap type="com.ruoyi.project.domain.ServiceDonateorganBase" id="ServiceDonateorganBaseResult">
        <result property="id" column="ID"/>
        <result property="infoid" column="InfoID"/>
        <result property="allocationStatus" column="allocation_status"/>
        <result property="allocationTime" column="allocation_time"/>
        <result property="registrationCode" column="registration_code"/>
        <result property="registrationName" column="registration_name"/>
        <result property="registrationTime" column="registration_time"/>
        <result property="delFlag" column="del_flag"/>
        <result property="createBy" column="create_by"/>
        <result property="createTime" column="create_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
        <result property="estimatedtime" column="EstimatedTime"/>
    </resultMap>
    <sql id="selectServiceDonateorganBaseVo">
        select ID,
               InfoID,
               allocation_status,
               allocation_time,
               registration_code,
               registration_name,
               registration_time,
               del_flag,
               create_by,
               create_time,
               update_by,
               update_time,
               EstimatedTime
        from service_donateorgan_base
    </sql>
    <select id="selectServiceDonateorganBaseList" parameterType="com.ruoyi.project.domain.ServiceDonateorganBase"
            resultMap="ServiceDonateorganBaseResult">
        <include refid="selectServiceDonateorganBaseVo"/>
        <where>
            <if test="infoid != null ">and InfoID = #{infoid}</if>
            <if test="allocationStatus != null ">and allocation_status = #{allocationStatus}</if>
            <if test="allocationTime != null ">and allocation_time = #{allocationTime}</if>
            <if test="registrationCode != null  and registrationCode != ''">and registration_code =
                #{registrationCode}
            </if>
            <if test="registrationName != null  and registrationName != ''">and registration_name like concat('%',
                #{registrationName}, '%')
            </if>
            <if test="registrationTime != null ">and registration_time = #{registrationTime}</if>
            <if test="estimatedtime != null ">and EstimatedTime = #{estimatedtime}</if>
        </where>
    </select>
    <select id="getDonateorganBaseInfoList" resultType="com.ruoyi.project.domain.dto.DonateorganBaseInfoDTO">
        SELECT
        sd.treatmenthospitalname AS treatmenthospitalname,
        sd.treatmenthospitalno AS treatmenthospitalno,
        sd.DonorNo AS donorno,
        sd.case_no AS caseNo,
        sd.Name AS NAME,
        sd.Sex AS sex,
        sd.Age AS age,
        sd.BloodType AS bloodtype,
        sd.idcardno AS idcardno,
        sd.diagnosisname AS diagnosisname,
        sdb.infoID AS infoid,
        sdb.ID AS id,
        sdb.registration_name AS registrationName,
        sdb.registration_time AS registrationTime,
        sdb.registration_code AS registrationCode
        FROM
        service_donatebaseinfo sd
        LEFT JOIN service_donateorgan_base sdb ON sd.ID = sdb.InfoID and sd.del_flag = 0
        and sdb.del_flag = 0
        <where>
            <if test="donorno != null  and donorno != ''">and sd.DonorNo = #{donorno}</if>
            <if test="treatmenthospitalname != null  and treatmenthospitalname != ''">and sd.treatmenthospitalname like
                concat('%', #{treatmenthospitalname}, '%')
            </if>
            <if test="idcardno != null  and idcardno != ''">and sd.IDCardNo. = #{idcardno}</if>
            <if test="treatmenthospitalno != null  and treatmenthospitalno != ''">and sd.TreatmentHospitalNo =
                #{treatmenthospitalno}
            </if>
            <if test="recordstate != null  and recordstate != ''">and sd.RecordState = #{recordstate}
            </if>
            <if test="name != null  and name != ''">and sd.Name = #{name}
            </if>
            <if test="inpatientno != null  and inpatientno != ''">and sd.InpatientNo = #{inpatientno}
            </if>
            <if test="registrationName != null  and registrationName != ''">and sdb.registration_name =
                #{registrationName}
            </if>
            <if test="registrationTime != null and registrationTime != ''">
                and sdb.registration_time = #{registrationTime}
            </if>
            <if test="registrationCode != null and registrationCode != ''">
                and sdb.registration_code = #{registrationCode}
            </if>
        </where>
        <if test="pageNum != null and pageSize != null">limit #{pageNum},#{pageSize}</if>
    </select>
</mapper>
ruoyi-project/src/main/resources/mapper/project/ServiceDonateorganMapper.xml
@@ -6,6 +6,7 @@
    <resultMap type="com.ruoyi.project.domain.ServiceDonateorgan" id="ServiceDonateorganResult">
        <result property="id" column="ID"/>
        <result property="baseId" column="base_id"/>
        <result property="infoid" column="InfoID"/>
        <result property="donorno" column="DonorNo"/>
        <result property="organno" column="OrganNo"/>
@@ -29,7 +30,7 @@
        <result property="ispathogenpositive" column="IsPathogenPositive"/>
        <result property="ispnf" column="IsPNF"/>
        <result property="isdgf" column="IsDGF"/>
        <result property="del_flag" column="del_flag"/>
        <result property="delFlag" column="del_flag"/>
        <result property="createBy" column="create_by"/>
        <result property="createTime" column="create_time"/>
        <result property="updateBy" column="update_by"/>
@@ -74,6 +75,7 @@
    <sql id="selectServiceDonateorganVo">
        select ID,
               base_id,
               InfoID,
               DonorNo,
               OrganNo,
@@ -148,7 +150,9 @@
            resultMap="ServiceDonateorganResult">
        <include refid="selectServiceDonateorganVo"/>
        <where>
            del_flag=0
            <if test="infoid != null ">and InfoID = #{infoid}</if>
            <if test="baseId != null ">and base_id = #{baseId}</if>
            <if test="donorno != null  and donorno != ''">and DonorNo = #{donorno}</if>
            <if test="organno != null  and organno != ''">and OrganNo = #{organno}</if>
            <if test="organname != null  and organname != ''">and OrganName like concat('%', #{organname}, '%')</if>
@@ -535,7 +539,8 @@
          and OrganGetTime &lt;= #{endtime}
    </select>
    <select id="getDistinctOrgansCount" resultType="com.ruoyi.project.domain.vo.DistinctOrgansCount">
        select count(*) as gainsum,ifnull(sum( CASE WHEN transplantstate = 3 THEN 1 ELSE 0 END ),0) as abandonCount from service_donatecomporgan d
        select count(*) as gainsum,ifnull(sum( CASE WHEN transplantstate = 3 THEN 1 ELSE 0 END ),0) as abandonCount from
        service_donatecomporgan d
        inner join service_donatebaseinfo b on b.id = d.InfoID
        inner join base_organization o on b.TreatmentHospitalNo = o.OrganizationID
        where d.OrganNo = #{organno}
ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessMapper.xml
@@ -35,7 +35,7 @@
        <result property="pulmonaryarteryperfusiontime" column="PulmonaryArteryPerfusionTime"/>
        <result property="aortacannulatime" column="AortaCannulaTime"/>
        <result property="aortaperfusiontime" column="AortaPerfusionTime"/>
        <result property="del_flag" column="del_flag"/>
        <result property="delFlag" column="del_flag"/>
        <result property="createBy" column="create_by"/>
        <result property="createTime" column="create_time"/>
        <result property="updateBy" column="update_by"/>
@@ -106,6 +106,65 @@
            <if test="operationdoctor != null  and operationdoctor != ''">and OperationDoctor = #{operationdoctor}</if>
            <if test="infoid != null">and InfoID = #{infoid}</if>
        </where>
    </select>
    <select id="getDonationwitnessBaseInfo" parameterType="com.ruoyi.project.domain.vo.DonationwitnessBaseInfoVO" resultType="com.ruoyi.project.domain.dto.DonationwitnessBaseInfoDTO">
        select
        sd.treatmenthospitalname AS treatmenthospitalname,
        sd.treatmenthospitalno AS treatmenthospitalno,
        sd.DonorNo AS donorno,
        sd.case_no AS caseNo,
        sd.NAME AS name,
        sd.RecordState AS recordstate,
        sd.Sex AS sex,
        sd.Age AS age,
        sd.BloodType AS bloodtype,
        sd.idcardno AS idcardno,
        sd.diagnosisname AS diagnosisname,
        st.coordinator_in_operating as coordinatorInOperating,
        st.InfoID as infoid,
        st.coordinator_out_operating as coordinatorOutOperating,
        st.coordinator_sign as coordinatorSign,
        st.coordinator_sign_time as coordinatorSignTime,
        st.DonorNo as donorno,
        st.GainHospitalNo as gainhospitalno,
        st.GainHospitalName as gainhospitalname,
        st.OperationBegTime as operationbegtime,
        st.OperationEndTime as operationendtime,
        st.OperationDoctor as operationdoctor,
        st.ResponsibleUserID as responsibleuserid,
        st.ResponsibleUserName as responsibleusername,
        st.CoordinatedUserIDO as coordinateduserido,
        st.CoordinatedUserNameO as coordinatedusernameo,
        st.CoordinatedUserIDT as coordinateduseridt,
        st.CoordinatedUserNameT as coordinatedusernamet,
        st.AbdominalAortaCannulaTime as abdominalaortacannulatime,
        st.AbdominalAortaPerfusionTime as abdominalaortaperfusiontime,
        st.PortalVeinCannulaTime as portalveincannulatime,
        st.PortalVeinPerfusionTime as portalveinperfusiontime,
        st.PulmonaryArteryCannulaTime as pulmonaryarterycannulatime,
        st.PulmonaryArteryPerfusionTime as pulmonaryarteryperfusiontime,
        st.AortaCannulaTime as aortacannulatime,
        st.AortaPerfusionTime as aortaperfusiontime,
        st.OrganDonation as organdonation,
        st.OrganDonation_Other as organdonationOther,
        st.DonationCategory as donationcategory
        FROM
        service_donatebaseinfo sd
        LEFT JOIN service_donationwitness st ON sd.ID = st.InfoID
        AND sd.del_flag = 0
        AND st.del_flag = 0
        <where>
            <if test="name != null  and name != ''">and sd.Name like concat('%', #{name}, '%')</if>
            <if test="inpatientno != null  and inpatientno != ''">and sd.inpatientno = #{inpatientno}</if>
            <if test="donorno != null  and donorno != ''">and st.DonorNo = #{donorno}</if>
            <if test="gainhospitalname != null  and gainhospitalname != ''">and  st.GainHospitalName like concat('%',
                #{gainhospitalname}, '%')
            </if>
            <if test="operationdoctor != null  and operationdoctor != ''">and  st.OperationDoctor = #{operationdoctor}</if>
            <if test="infoid != null">and  st.InfoID = #{infoid}</if>
        </where>
        <if test="pageNum != null and pageSize != null">limit #{pageNum},#{pageSize}</if>
    </select>
    <select id="selectVOList" resultType="com.ruoyi.project.domain.vo.DonationWitnessVO">
@@ -207,6 +266,7 @@
        order by `service_donationwitness`.`create_time` desc
    </select>
    <select id="getDBDDonaterNumberThisYear" resultType="java.lang.Integer">
        select count(*) from service_donationwitness w
        inner join service_donatebaseinfo b on w.InfoID = b.id
ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewinitiateMapper.xml
@@ -78,5 +78,41 @@
        </where>
    </select>
    <select id="reviewinitiateBaseInfoList" parameterType="com.ruoyi.project.domain.vo.ReviewInitiateBaseInfoVO"
            resultType="com.ruoyi.project.domain.dto.ReviewInitiateBaseInfoDTO">
        SELECT
        sd.treatmenthospitalname as treatmenthospitalname,
        sd.treatmenthospitalno as treatmenthospitalno,
        sd.DonorNo as donorno,
        sd.case_no as caseNo,
        sd.Name as name,
        sd.RecordState as recordstate,
        sd.Sex as sex,
        sd.Age as age,
        sd.BloodType as bloodtype,
        sd.idcardno as idcardno,
        sd.diagnosisname as diagnosisname,
        se.infoID as infoid,
        se.ID as id,
        se.expert_conclusion as expertConclusion,
        se.expert_name as expertName,
        se.expert_opinion as expertOpinion,
        se.expert_time as expertTime,
        se.status as status
        FROM
        service_donatebaseinfo sd
        LEFT JOIN service_ethicalreviewinitiate se ON sd.ID = se.InfoID and sd.del_flag = 0
        AND se.del_flag = 0
        <where>
            <if test="infoid != null ">and se.InfoID = #{infoid}</if>
            <if test="caseNo != null  and caseNo != ''">and sd.case_no = #{caseNo}</if>
            <if test="expertConclusion != null ">and se.expert_conclusion = #{expertConclusion}</if>
            <if test="expertName != null ">and se.expert_name = #{expertName}</if>
            <if test="expertOpinion != null ">and se.expert_opinion = #{expertOpinion}</if>
            <if test="expertTime != null ">and se.expert_time = #{expertTime}</if>
            <if test="status != null ">and se.status = #{status}</if>
        </where>
        <if test="pageNum != null and pageSize != null">limit #{pageNum},#{pageSize}</if>
    </select>
</mapper>
ruoyi-project/src/main/resources/mapper/project/ServiceMedicalevaluationMapper.xml
@@ -27,11 +27,32 @@
        <result property="assessState" column="assess_state"/>
        <result property="assessFirstTime" column="assess_first_time"/>
        <result property="assessSecondTime" column="assess_second_time"/>
        <result property="del_flag" column="del_flag"/>
        <result property="delFlag" column="del_flag"/>
        <result property="createBy" column="create_by"/>
        <result property="createTime" column="create_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
    </resultMap>
    <resultMap type="com.ruoyi.project.domain.dto.MedicalevaluationBaseInfoDTO"
               id="MedicalEvaluationWithBaseInfoVOResult">
        <id property="id" column="ID"/>
        <result property="infoid" column="infoID"/>
        <result property="recordstate" column="recordstate"/>
        <result property="caseNo" column="case_no"/>
        <result property="donorno" column="DonorNo"/>
        <result property="treatmenthospitalname" column="TreatmentHospitalName"/>
        <result property="treatmenthospitalno" column="TreatmentHospitalNo"/>
        <result property="sex" column="Sex"/>
        <result property="age" column="Age"/>
        <result property="bloodtype" column="BloodType"/>
        <result property="idcardno" column="idcardno"/>
        <result property="diagnosisname" column="diagnosisname"/>
        <result property="coordinatorName" column="coordinator_name"/>
        <result property="assessFirstTime" column="assess_first_time"/>
        <result property="assessSecondTime" column="assess_second_time"/>
        <result property="assessState" column="assess_state"/>
        <result property="assessannex" column="AssessAnnex"/>
    </resultMap>
    <sql id="selectServiceMedicalevaluationVo">
@@ -172,4 +193,49 @@
          and CoreTeamAssessTime &lt;= #{endtime}
    </select>
    <select id="selectEvaluateBaseInfoList" resultMap="MedicalEvaluationWithBaseInfoVOResult">
        SELECT
        sb.TreatmentHospitalName,
        sb.TreatmentHospitalNo,
        sb.DonorNo,
        sb.case_no,
        sb.Name,
        sb.Sex,
        sb.Age,
        sb.BloodType,
        sb.idcardno,
        sb.diagnosisname,
        sb.recordstate,
        sb.coordinator_name,
        sm.assess_first_time,
        sm.infoID,
        sm.ID,
        sm.assessannex,
        sm.assess_second_time,
        sm.assess_state
        FROM service_donatebaseinfo sb
        LEFT JOIN service_medicalevaluation sm ON sb.ID = sm.InfoID and sm.del_flag = 0
        and sb.del_flag = 0
        <where>
            <if test="infoid != null">AND sm.InfoID = #{infoid}</if>
            <if test="caseNo != null and caseNo != ''">AND sm.case_no = #{caseNo}</if>
            <if test="donorno != null and donorno != ''">AND sm.DonorNo = #{donorno}</if>
            <if test="diagnosisname != null and diagnosisname != ''">AND sm.DiagnosisName = #{diagnosisname}</if>
            <if test="assessState != null and assessState != ''">AND sm.assess_state = #{assessState}</if>
            <if test="name != null and name != ''">AND sb.Name LIKE CONCAT('%', #{name}, '%')</if>
            <if test="sex != null and sex != ''">AND sb.Sex = #{sex}</if>
            <if test="idcardno != null and idcardno != ''">AND sb.IDCardNo = #{idcardno}</if>
            <if test="recordstate != null and recordstate != ''">AND sb.RecordState = #{recordstate}</if>
            <if test="treatmenthospitalno != null and treatmenthospitalno != ''">AND sb.TreatmentHospitalNo =
                #{treatmenthospitalno}
            </if>
            <if test="treatmenthospitalname != null and treatmenthospitalname != ''">AND sb.TreatmentHospitalName =
                #{treatmenthospitalname}
            </if>
        </where>
        <if test="pageNum != null and pageSize != null">limit #{pageNum},#{pageSize}</if>
    </select>
</mapper>
ruoyi-project/src/main/resources/mapper/project/ServiceMedicalevaluationorganMapper.xml
@@ -33,6 +33,8 @@
    <sql id="selectServiceMedicalevaluationorganVo">
        select ID,
               InfoID,
               first_assess_state,
               second_assess_state,
               DonorNo,
               OrganNo,
               OrganName,
ruoyi-project/src/main/resources/mapper/project/ServiceRelativesconfirmationMapper.xml
@@ -1,77 +1,133 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.mapper.ServiceRelativesconfirmationMapper">
    <resultMap type="com.ruoyi.project.domain.ServiceRelativesconfirmation" id="ServiceRelativesconfirmationResult">
        <result property="id"    column="ID"    />
        <result property="infoid"    column="InfoID"    />
        <result property="donorno"    column="DonorNo"    />
        <result property="name"    column="Name"    />
        <result property="idcardtype"    column="IDCardType"    />
        <result property="idcardno"    column="IDCardNo"    />
        <result property="phone"    column="Phone"    />
        <result property="residenceaddress"    column="ResidenceAddress"    />
        <result property="residenceprovince"    column="ResidenceProvince"    />
        <result property="residenceprovincename"    column="ResidenceProvinceName"    />
        <result property="residencecity"    column="ResidenceCity"    />
        <result property="residencecityname"    column="ResidenceCityName"    />
        <result property="residencetown"    column="ResidenceTown"    />
        <result property="residencetownname"    column="ResidenceTownName"    />
        <result property="residencecommunity"    column="ResidenceCommunity"    />
        <result property="residencecommunityname"    column="ResidenceCommunityName"    />
        <result property="residencecountycode"    column="ResidenceCountyCode"    />
        <result property="residencecountyname"    column="ResidenceCountyName"    />
        <result property="kinship"    column="Kinship"    />
        <result property="kinshipChildrennum"    column="Kinship_ChildrenNum"    />
        <result property="signfamilyrelations"    column="SignFamilyRelations"    />
        <result property="kinshipconfirmationsign"    column="KinshipConfirmationSign"    />
        <result property="organdecision"    column="OrganDecision"    />
        <result property="organdecisionOther"    column="OrganDecision_Other"    />
        <result property="relativeconfirmationsign"    column="RelativeConfirmationSign"    />
        <result property="familyrelations"    column="FamilyRelations"    />
        <result property="acquisitiontissueno"    column="AcquisitionTissueNo"    />
        <result property="acquisitiontissuename"    column="AcquisitionTissueName"    />
        <result property="responsibleuserid"    column="ResponsibleUserID"    />
        <result property="responsibleusername"    column="ResponsibleUserName"    />
        <result property="coordinateduserido"    column="CoordinatedUserIDO"    />
        <result property="coordinatedusernameo"    column="CoordinatedUserNameO"    />
        <result property="coordinateduseridt"    column="CoordinatedUserIDT"    />
        <result property="coordinatedusernamet"    column="CoordinatedUserNameT"    />
        <result property="signdate"    column="SignDate"    />
        <result property="delFlag"    column="del_flag"    />
        <result property="createBy"    column="create_by"    />
        <result property="createTime"    column="create_time"    />
        <result property="updateBy"    column="update_by"    />
        <result property="updateTime"    column="update_time"    />
        <result property="operatorno"    column="operatorno"    />
        <result property="operatorname"    column="operatorname"    />
        <result property="nation"    column="nation"    />
        <result property="education"    column="education"    />
        <result property="occupation"    column="occupation"    />
        <result property="id" column="ID"/>
        <result property="infoid" column="InfoID"/>
        <result property="donorno" column="DonorNo"/>
        <result property="name" column="Name"/>
        <result property="idcardtype" column="IDCardType"/>
        <result property="idcardno" column="IDCardNo"/>
        <result property="phone" column="Phone"/>
        <result property="residenceaddress" column="ResidenceAddress"/>
        <result property="residenceprovince" column="ResidenceProvince"/>
        <result property="residenceprovincename" column="ResidenceProvinceName"/>
        <result property="residencecity" column="ResidenceCity"/>
        <result property="residencecityname" column="ResidenceCityName"/>
        <result property="residencetown" column="ResidenceTown"/>
        <result property="residencetownname" column="ResidenceTownName"/>
        <result property="residencecommunity" column="ResidenceCommunity"/>
        <result property="residencecommunityname" column="ResidenceCommunityName"/>
        <result property="residencecountycode" column="ResidenceCountyCode"/>
        <result property="residencecountyname" column="ResidenceCountyName"/>
        <result property="kinship" column="Kinship"/>
        <result property="kinshipChildrennum" column="Kinship_ChildrenNum"/>
        <result property="signfamilyrelations" column="SignFamilyRelations"/>
        <result property="kinshipconfirmationsign" column="KinshipConfirmationSign"/>
        <result property="organdecision" column="OrganDecision"/>
        <result property="organdecisionOther" column="OrganDecision_Other"/>
        <result property="relativeconfirmationsign" column="RelativeConfirmationSign"/>
        <result property="familyrelations" column="FamilyRelations"/>
        <result property="acquisitiontissueno" column="AcquisitionTissueNo"/>
        <result property="acquisitiontissuename" column="AcquisitionTissueName"/>
        <result property="responsibleuserid" column="ResponsibleUserID"/>
        <result property="responsibleusername" column="ResponsibleUserName"/>
        <result property="coordinateduserido" column="CoordinatedUserIDO"/>
        <result property="coordinatedusernameo" column="CoordinatedUserNameO"/>
        <result property="coordinateduseridt" column="CoordinatedUserIDT"/>
        <result property="coordinatedusernamet" column="CoordinatedUserNameT"/>
        <result property="signdate" column="SignDate"/>
        <result property="delFlag" column="del_flag"/>
        <result property="createBy" column="create_by"/>
        <result property="createTime" column="create_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
        <result property="operatorno" column="operatorno"/>
        <result property="operatorname" column="operatorname"/>
        <result property="nation" column="nation"/>
        <result property="education" column="education"/>
        <result property="occupation" column="occupation"/>
        <result property="assessannex" column="assessannex"/>
        <result property="relativeRemark" column="relative_remark"/>
    </resultMap>
    <sql id="selectServiceRelativesconfirmationVo">
        select ID, InfoID,nation,education,occupation, DonorNo, Name, IDCardType, IDCardNo, Phone, ResidenceAddress, ResidenceProvince, ResidenceProvinceName, ResidenceCity, ResidenceCityName, ResidenceTown, ResidenceTownName, ResidenceCommunity, ResidenceCommunityName, ResidenceCountyCode, ResidenceCountyName, Kinship, Kinship_ChildrenNum, SignFamilyRelations, KinshipConfirmationSign, OrganDecision, OrganDecision_Other, RelativeConfirmationSign, FamilyRelations, AcquisitionTissueNo, AcquisitionTissueName, ResponsibleUserID, ResponsibleUserName, CoordinatedUserIDO, CoordinatedUserNameO, CoordinatedUserIDT, CoordinatedUserNameT, SignDate, del_flag, create_by, create_time, update_by, update_time,operatorname,operatorno from service_relativesconfirmation
        select ID,
               InfoID,
               assessannex,
               relative_remark,
               nation,
               education,
               occupation,
               DonorNo,
               Name,
               IDCardType,
               IDCardNo,
               Phone,
               ResidenceAddress,
               ResidenceProvince,
               ResidenceProvinceName,
               ResidenceCity,
               ResidenceCityName,
               ResidenceTown,
               ResidenceTownName,
               ResidenceCommunity,
               ResidenceCommunityName,
               ResidenceCountyCode,
               ResidenceCountyName,
               Kinship,
               Kinship_ChildrenNum,
               SignFamilyRelations,
               KinshipConfirmationSign,
               OrganDecision,
               OrganDecision_Other,
               RelativeConfirmationSign,
               FamilyRelations,
               AcquisitionTissueNo,
               AcquisitionTissueName,
               ResponsibleUserID,
               ResponsibleUserName,
               CoordinatedUserIDO,
               CoordinatedUserNameO,
               CoordinatedUserIDT,
               CoordinatedUserNameT,
               SignDate,
               del_flag,
               create_by,
               create_time,
               update_by,
               update_time,
               operatorname,
               operatorno
        from service_relativesconfirmation
    </sql>
    <select id="selectServiceRelativesconfirmationList" parameterType="com.ruoyi.project.domain.ServiceRelativesconfirmation" resultMap="ServiceRelativesconfirmationResult">
    <select id="selectServiceRelativesconfirmationList"
            parameterType="com.ruoyi.project.domain.ServiceRelativesconfirmation"
            resultMap="ServiceRelativesconfirmationResult">
        <include refid="selectServiceRelativesconfirmationVo"/>
        <where>
            <if test="donorno != null  and donorno != ''"> and DonorNo = #{donorno}</if>
            <if test="name != null  and name != ''"> and Name like concat('%', #{name}, '%')</if>
            <if test="idcardno != null  and idcardno != ''"> and IDCardNo = #{idcardno}</if>
            <if test="acquisitiontissueno != null  and acquisitiontissueno != ''"> and AcquisitionTissueNo = #{acquisitiontissueno}</if>
            <if test="params.beginSigndate != null and params.beginSigndate != '' and params.endSigndate != null and params.endSigndate != ''"> and SignDate between #{params.beginSigndate} and #{params.endSigndate}</if>
            <if test="donorno != null  and donorno != ''">and DonorNo = #{donorno}</if>
            <if test="name != null  and name != ''">and Name like concat('%', #{name}, '%')</if>
            <if test="idcardno != null  and idcardno != ''">and IDCardNo = #{idcardno}</if>
            <if test="acquisitiontissueno != null  and acquisitiontissueno != ''">and AcquisitionTissueNo =
                #{acquisitiontissueno}
            </if>
            <if test="params.beginSigndate != null and params.beginSigndate != '' and params.endSigndate != null and params.endSigndate != ''">
                and SignDate between #{params.beginSigndate} and #{params.endSigndate}
            </if>
        </where>
    </select>
    <select id="getCoordinateUserByInfoId" resultType="java.lang.String">
        select CoordinatedUserIDO from service_relativesconfirmation
        select CoordinatedUserIDO
        from service_relativesconfirmation
        where InfoID = #{infoid}
    </select>
    <select id="selectVOList" resultType="com.ruoyi.project.domain.vo.RelativeConfirmationVO">
    SELECT
        SELECT
        `service_donatebaseinfo`.`ID` AS `ID`,
        `service_donatebaseinfo`.`Name` AS `Name`,
        `service_donatebaseinfo`.`Sex` AS `Sex`,
@@ -155,41 +211,111 @@
        `service_relativesconfirmation`.`nation` AS `nation`,
        `service_relativesconfirmation`.`education` AS `education`,
        `service_relativesconfirmation`.`occupation` AS `occupation`
    FROM
        FROM
            `service_donatebaseinfo`
            LEFT JOIN `service_relativesconfirmation` ON
                `service_donatebaseinfo`.`ID` = `service_relativesconfirmation`.`InfoID`
        `service_donatebaseinfo`
        LEFT JOIN `service_relativesconfirmation` ON
        `service_donatebaseinfo`.`ID` = `service_relativesconfirmation`.`InfoID`
        LEFT JOIN `base_organization` ON
        `base_organization`.`OrganizationID` = `service_donatebaseinfo`.`TreatmentHospitalNo`
        <where>
            service_donatebaseinfo.del_flag=0
            and service_relativesconfirmation.del_flag=0
            <if test="donorno != null  and donorno != ''"> and `service_donatebaseinfo`.`DonorNo` = #{donorno}</if>
            <if test="name != null  and name != ''"> and `service_donatebaseinfo`.`Name` like concat('%', #{name}, '%')</if>
            <if test="idcardno != null  and idcardno != ''"> and `service_donatebaseinfo`.`IDCardNo` = #{idcardno}</if>
            <if test="treatmenthospitalno != null  and treatmenthospitalno != ''"> and `service_donatebaseinfo`.`TreatmentHospitalNo` = #{treatmenthospitalno}</if>
            <if test="recordstate != null  and recordstate != ''"> and `service_donatebaseinfo`.`RecordState` = #{recordstate}</if>
            <if test="basecreateby != null  and basecreateby != ''"> and `service_donatebaseinfo`.`create_by` = #{basecreateby}</if>
            <if test="infoid != null  and infoid != ''"> and `service_relativesconfirmation`.`InfoID` = #{infoid}</if>
            <if test="starttime != null "> and `service_relativesconfirmation`.SignDate >= #{starttime} </if>
            <if test="endtime != null ">  and `service_relativesconfirmation`.SignDate &lt;= #{endtime}</if>
            <if test="reporterno != null  and reporterno != ''"> and `service_donatebaseinfo`.ReporterNo = #{reporterno}</if>
            <if test="city != null and city != ''"> and `base_organization`.`City` = #{city}</if>
            <if test="residenceprovince != null and residenceprovince != ''"> and `service_relativesconfirmation`.`ResidenceProvince` = #{residenceprovince}</if>
            <if test="residencecity != null and residencecity != ''"> and `service_relativesconfirmation`.`ResidenceCity` = #{residencecity}</if>
            <if test="residencetown != null and residencetown != ''"> and `service_relativesconfirmation`.`ResidenceTown` = #{residencetown}</if>
            <if test="workflow != null "> and `service_donatebaseinfo`.`workflow` = #{workflow}</if>
            <if test="donorno != null  and donorno != ''">and `service_donatebaseinfo`.`DonorNo` = #{donorno}</if>
            <if test="name != null  and name != ''">and `service_donatebaseinfo`.`Name` like concat('%', #{name}, '%')
            </if>
            <if test="idcardno != null  and idcardno != ''">and `service_donatebaseinfo`.`IDCardNo` = #{idcardno}</if>
            <if test="treatmenthospitalno != null  and treatmenthospitalno != ''">and
                `service_donatebaseinfo`.`TreatmentHospitalNo` = #{treatmenthospitalno}
            </if>
            <if test="recordstate != null  and recordstate != ''">and `service_donatebaseinfo`.`RecordState` =
                #{recordstate}
            </if>
            <if test="basecreateby != null  and basecreateby != ''">and `service_donatebaseinfo`.`create_by` =
                #{basecreateby}
            </if>
            <if test="infoid != null  and infoid != ''">and `service_relativesconfirmation`.`InfoID` = #{infoid}</if>
            <if test="starttime != null ">and `service_relativesconfirmation`.SignDate >= #{starttime}</if>
            <if test="endtime != null ">and `service_relativesconfirmation`.SignDate &lt;= #{endtime}</if>
            <if test="reporterno != null  and reporterno != ''">and `service_donatebaseinfo`.ReporterNo =
                #{reporterno}
            </if>
            <if test="city != null and city != ''">and `base_organization`.`City` = #{city}</if>
            <if test="residenceprovince != null and residenceprovince != ''">and
                `service_relativesconfirmation`.`ResidenceProvince` = #{residenceprovince}
            </if>
            <if test="residencecity != null and residencecity != ''">and `service_relativesconfirmation`.`ResidenceCity`
                = #{residencecity}
            </if>
            <if test="residencetown != null and residencetown != ''">and `service_relativesconfirmation`.`ResidenceTown`
                = #{residencetown}
            </if>
            <if test="workflow != null ">and `service_donatebaseinfo`.`workflow` = #{workflow}</if>
    </where>
        </where>
        order by `service_relativesconfirmation`.`create_time` desc
    </select>
    <select id="countNumber" resultType="java.lang.Integer">
        select count(*) from service_relativesconfirmation
        where SignDate >= #{starttime} and SignDate &lt;= #{endtime}
        select count(*)
        from service_relativesconfirmation
        where SignDate >= #{starttime}
          and SignDate &lt;= #{endtime}
    </select>
    <select id="confirmationBaseInfoList" resultType="com.ruoyi.project.domain.dto.RelativeConfirmationBaseInfoDTO">
        SELECT sd.TreatmentHospitalName as treatmenthospitalname,
        sd.TreatmentHospitalNo as treatmenthospitalno,
        sd.DonorNo as donorno,
        sd.case_no as caseNo,
        sd.Name as name,
        sd.RecordState as recordstate,
        sd.Sex as sex,
        sd.Age as age,
        sd.BloodType as bloodtype,
        sd.idcardno as idcardno,
        sd.diagnosisname as diagnosisname,
        sr.infoID as infoid,
        sr.ID as id,
        sr.RelativeConfirmationSign as relativeConfirmationSign,
        sr.SignDate as signdate,
        sr.ResponsibleUserName as responsibleusername,
        sr.ResponsibleUserID as responsibleuserid,
        sr.CoordinatedUserIDO as coordinateduserido,
        sr.CoordinatedUserNameO as coordinatedusernameo,
        sr.CoordinatedUserNameT as coordinateduseridt,
        sr.ResponsibleUserID as responsibleuserid
        FROM service_donatebaseinfo sd
        LEFT JOIN service_relativesconfirmation sr ON sd.ID = sr.InfoID and sd.del_flag = 0
        AND sr.del_flag = 0
        <where>
            <if test="infoid != null and infoid != ''">AND sr.InfoID = #{infoid}</if>
            <if test="recordstate != null and recordstate != ''">AND sd.RecordState = #{recordstate}</if>
            <if test="caseNo != null and caseNo != ''">AND sd.case_no = #{caseNo}</if>
            <if test="treatmenthospitalname != null and treatmenthospitalname != ''">AND sd.TreatmentHospitalName =
                #{treatmenthospitalname}
            </if>
            <if test="name != null and name != ''">AND sd.Name = #{name}</if>
            <if test="responsibleusername != null and responsibleusername != ''">AND sd.ResponsibleUserName =
                #{responsibleusername}
            </if>
            <if test="responsibleusername != null and responsibleusername != ''">AND sd.SignDate =
                #{responsibleusername}
            </if>
            <if test="relativeconfirmationsign != null and relativeconfirmationsign != ''">AND
                sd.RelativeConfirmationSign =
                #{relativeconfirmationsign}
            </if>
            <if test="startSigndate != null and startSigndate != ''"><!-- ç¡®è®¤å¼€å§‹æ—¶é—´æ£€ç´¢ -->
                and sr.SignDate &gt;= #{startSigndate}
            </if>
            <if test="endSigndate != null and endSigndate != ''"><!-- ç¡®è®¤ç»“束时间检索 -->
                and sr.SignDate &lt;= #{endSigndate}
            </if>
        </where>
        <if test="pageNum != null and pageSize != null">limit #{pageNum},#{pageSize}</if>
    </select>
</mapper>