From cbd223ee2185f2cc39267e37a72edaadf6a3aa19 Mon Sep 17 00:00:00 2001
From: sinake <sinake1@qq.com>
Date: 星期三, 18 三月 2026 08:57:12 +0800
Subject: [PATCH] 死亡判定相关接口新增死亡判定说明、扩展 器官分配相关接口新增记录状态、附件、扩展 器官获取相关接口新增附件、扩展 新开发去态查询API接口

---
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonationwitnessorgan.java  |   10 +
 ruoyi-project/src/main/java/com/ruoyi/project/service/IApiService.java                 |   17 ++
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonateorganBase.java       |   15 ++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/ApiController.java           |   68 +++++++++++
 ruoyi-project/src/main/resources/mapper/project/ServiceDonateorganBaseMapper.xml       |    5 
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDeathinfo.java             |    9 +
 ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessMapper.xml       |    2 
 ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessorganMapper.xml  |    4 
 ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/ApiDTO.java                   |   20 +++
 ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationwitnessBaseInfoVO.java |   11 +
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ApiServiceImpl.java         |   83 +++++++++++++
 ruoyi-project/src/main/java/com/ruoyi/project/domain/GiApi.java                        |   65 ++++++++++
 ruoyi-project/src/main/resources/mapper/project/ServiceDeathinfoMapper.xml             |    4 
 ruoyi-project/src/main/resources/mapper/project/ApiMapper.xml                          |    7 +
 ruoyi-project/src/main/java/com/ruoyi/project/mapper/ApiMapper.java                    |   24 ++++
 15 files changed, 340 insertions(+), 4 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/ApiController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/ApiController.java
new file mode 100644
index 0000000..11d74eb
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/ApiController.java
@@ -0,0 +1,68 @@
+package com.ruoyi.web.controller.common;
+
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.project.domain.BaseAnnextype;
+import com.ruoyi.project.domain.GiApi;
+import com.ruoyi.project.domain.dto.ApiDTO;
+import com.ruoyi.project.service.IApiService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@Api(description = "api鏈嶅姟")
+@RestController
+@RequestMapping("/api")
+public class ApiController {
+    @Autowired
+    private IApiService  service;
+    @ApiOperation("API->api鏌ヨ鍒楄〃")
+    @PostMapping("/{path}")
+    public AjaxResult getApiList(@PathVariable("path") String path, @RequestBody ApiDTO DTO){
+        List<Map<String,Object>> lists=new ArrayList<>();
+        if(ObjectUtils.isNotEmpty(path)) {
+            GiApi tempSql= service.getCode(path);
+            if(tempSql!=null&&ObjectUtils.isNotEmpty(tempSql.getApiSql())) {
+                String SQL_REG_EXP = ".*(\\b(insert|into|update|delete|trancate" +
+                        "|drop|execute|grant|use)\\b).*";
+                if (tempSql.getApiSql().toLowerCase().matches(SQL_REG_EXP)) {
+                    return AjaxResult.error("sql涓湁闈炴硶瀛楃,鍙簲璁竤elect");
+                }
+                    return AjaxResult.success(service.getListSql(tempSql.getApiSql(),DTO));
+            }else
+                return AjaxResult.error("sql浠g爜娌℃湁瀵瑰簲鐨剆ql璇锋牳瀵�");
+        }else {
+            return AjaxResult.error("琛ㄥ悕涓嶈兘涓虹┖");
+        }
+    }
+
+    @ApiOperation("API->api鏌ヨobject")
+    @PostMapping("/s/{path}")
+    public AjaxResult getStringSql(@PathVariable("path") String path, @RequestBody ApiDTO DTO){
+        List<Map<String,Object>> lists=new ArrayList<>();
+        if(ObjectUtils.isNotEmpty(path)) {
+            GiApi tempSql= service.getCode(path);
+            if(tempSql!=null&&ObjectUtils.isNotEmpty(tempSql.getApiSql())) {
+                String SQL_REG_EXP = ".*(\\b(insert|into|update|delete|trancate" +
+                        "|drop|execute|grant|use)\\b).*";
+                if (tempSql.getApiSql().toLowerCase().matches(SQL_REG_EXP)) {
+                    return AjaxResult.error("sql涓湁闈炴硶瀛楃,鍙簲璁竤elect");
+                }
+
+                    return AjaxResult.success(service.getStringSql(tempSql.getApiSql(), DTO));
+
+            }else
+                return AjaxResult.error("sql浠g爜娌℃湁瀵瑰簲鐨剆ql璇锋牳瀵�");
+        }else {
+            return AjaxResult.error("琛ㄥ悕涓嶈兘涓虹┖");
+        }
+    }
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/GiApi.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/GiApi.java
new file mode 100644
index 0000000..2855715
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/GiApi.java
@@ -0,0 +1,65 @@
+package com.ruoyi.project.domain;
+
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+
+import lombok.Data;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * api鎺ュ彛 瀹炰綋绫�
+ * 2026-02-27 15:57:47 sinake
+ */ 
+@Data
+@ApiModel("api鎺ュ彛")
+public class GiApi {
+
+	@ApiModelProperty("id")
+	@TableId(type = IdType.AUTO)
+	private String id;
+
+	@ApiModelProperty("鐖剁被id")
+	private String parentId;
+
+	@ApiModelProperty("鏈烘瀯浠g爜")
+	private String orginId;
+
+	@ApiModelProperty("鎺ュ彛浠g爜")
+	private String apiCode;
+
+	@ApiModelProperty("鎺ュ彛鍚嶇О")
+	private String apiName;
+
+	@ApiModelProperty("鎺ュ彛鏁版嵁婧�")
+	private String apiTable;
+
+	@ApiModelProperty("鎺ュ彛璇彞")
+	private String apiSql;
+
+	@ApiModelProperty("鎺ュ彛鏂瑰紡0list1string")
+	private String apiWay;
+
+	@ApiModelProperty("鏄惁鍒犻櫎0鍚�1鏄�")
+	private Integer isDel;
+
+	@ApiModelProperty("鍒涘缓浜�")
+	private String creator;
+
+	@ApiModelProperty("鍒涘缓鏃堕棿")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+	private Date createTime;
+
+	@ApiModelProperty("淇敼鐢ㄦ埛")
+	private String updater;
+
+	@ApiModelProperty("淇敼鏃堕棿")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+	private Date updateTime;
+}
+
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDeathinfo.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDeathinfo.java
index 8104a84..646e013 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDeathinfo.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDeathinfo.java
@@ -99,5 +99,14 @@
     @Excel(name = "璐熻矗浜哄鍚�")
     private String responsibleusername;
 
+    /** 璐熻矗浜哄鍚� */
+    @ApiModelProperty("姝讳骸鍒ゅ畾璇存槑")
+    @Excel(name = "姝讳骸鍒ゅ畾璇存槑")
+    private String judgmentDescription;
+
+    /** 璐熻矗浜哄鍚� */
+    @ApiModelProperty("鎵╁睍")
+    @Excel(name = "鎵╁睍")
+    private String extContent;
 }
 
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonateorganBase.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonateorganBase.java
index 5b77546..ae5b8ff 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonateorganBase.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonateorganBase.java
@@ -66,5 +66,20 @@
     @Excel(name = "棰勮鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date estimatedtime;
 
+    /** 璁板綍鐘舵�� */
+    @ApiModelProperty("璁板綍鐘舵��")
+    @Excel(name = "璁板綍鐘舵��")
+    private String recordstate;
+
+    /** 闄勪欢璺緞,澶氬紶鐢�;鍙烽殧寮� */
+    @ApiModelProperty("闄勪欢璺緞,澶氬紶鐢�;鍙烽殧寮�")
+    @Excel(name = "闄勪欢璺緞,澶氬紶鐢�;鍙烽殧寮�")
+    private String fileName;
+
+    /** 鎵╁睍 */
+    @ApiModelProperty("鎵╁睍")
+    @Excel(name = "鎵╁睍")
+    private String extContent;
+
 }
 
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonationwitnessorgan.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonationwitnessorgan.java
index 2f4766f..208fa5b 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonationwitnessorgan.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonationwitnessorgan.java
@@ -135,5 +135,15 @@
     @Excel(name = "鍣ㄥ畼鑾峰彇寮�濮嬫椂闂�", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date organStartTime;
 
+    /** 闄勪欢璺緞,澶氬紶鐢�;鍙烽殧寮� */
+    @ApiModelProperty("闄勪欢璺緞,澶氬紶鐢�;鍙烽殧寮�")
+    @Excel(name = "闄勪欢璺緞,澶氬紶鐢�;鍙烽殧寮�")
+    private String fileName;
+
+    /** 鎵╁睍 */
+    @ApiModelProperty("鎵╁睍")
+    @Excel(name = "鎵╁睍")
+    private String extContent;
+
 }
 
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/ApiDTO.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/ApiDTO.java
new file mode 100644
index 0000000..37d14a3
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/ApiDTO.java
@@ -0,0 +1,20 @@
+package com.ruoyi.project.domain.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.Tag;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+import java.util.Map;
+
+@Data
+@ToString
+@NoArgsConstructor
+@ApiModel("ApiDTO鐩稿叧json鍙傛暟")
+public class ApiDTO {
+    @ApiModelProperty("鐩稿叧鍙傛暟")
+    Map<String, Object> params;
+
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationwitnessBaseInfoVO.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationwitnessBaseInfoVO.java
index 897085c..c5d3a4e 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationwitnessBaseInfoVO.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationwitnessBaseInfoVO.java
@@ -256,5 +256,16 @@
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date coordinatorSignTime;
 
+
+    /** 闄勪欢璺緞,澶氬紶鐢�;鍙烽殧寮� */
+    @ApiModelProperty("闄勪欢璺緞,澶氬紶鐢�;鍙烽殧寮�")
+    @Excel(name = "闄勪欢璺緞,澶氬紶鐢�;鍙烽殧寮�")
+    private String fileName;
+
+    /** 鎵╁睍 */
+    @ApiModelProperty("鎵╁睍")
+    @Excel(name = "鎵╁睍")
+    private String extContent;
+
 }
 
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ApiMapper.java b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ApiMapper.java
new file mode 100644
index 0000000..547763d
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ApiMapper.java
@@ -0,0 +1,24 @@
+package com.ruoyi.project.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.project.domain.GiApi;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+import java.util.Map;
+
+public interface ApiMapper extends BaseMapper<GiApi> {
+
+    /**
+     * 鏌ヨsql
+     * @param sql
+     * @return
+     */
+    @Select({"${sql}"})
+    List<Map<String, Object>> executeSql(@Param("sql") String sql);
+
+
+    @Select({"${sql}"})
+    String getClob(@Param("sql") String sql);
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/IApiService.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/IApiService.java
new file mode 100644
index 0000000..ded83f0
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/IApiService.java
@@ -0,0 +1,17 @@
+package com.ruoyi.project.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.project.domain.GiApi;
+import com.ruoyi.project.domain.dto.ApiDTO;
+
+import java.util.List;
+import java.util.Map;
+
+public interface IApiService extends IService<GiApi>{
+
+    public GiApi getCode(String code);
+
+    public List<Map<String,Object>> getListSql(String sql, ApiDTO DTO);
+
+    public Object getStringSql(String sql,ApiDTO DTO);
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ApiServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ApiServiceImpl.java
new file mode 100644
index 0000000..af5ba86
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ApiServiceImpl.java
@@ -0,0 +1,83 @@
+package com.ruoyi.project.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.project.domain.GiApi;
+import com.ruoyi.project.domain.dto.ApiDTO;
+import com.ruoyi.project.mapper.ApiMapper;
+import com.ruoyi.project.service.IApiService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class ApiServiceImpl  extends ServiceImpl<ApiMapper, GiApi> implements IApiService {
+    @Autowired
+      ApiMapper mapper;
+    /**
+     * 涓婚敭鏌ヨ璇︾粏
+     * @param code
+     * @return
+     */
+    public GiApi getCode(String code){
+        QueryWrapper <GiApi> wrapper=new QueryWrapper<>();
+        wrapper.eq("api_Code",code);
+        return mapper.selectOne(wrapper);
+    }
+
+    public String buildSql(HttpServletRequest request, String sql) {
+
+//        JSONArray requestParams = JSON.parseArray(config.getParams());
+//        for (int i = 0; i < requestParams.size(); i++) {
+//            JSONObject jo = requestParams.getJSONObject(i);
+//            String name = jo.getString("name");
+//            String type = jo.getString("type");
+//            String old = '$' + name;
+//
+//            String value = request.getParameter(name);
+//
+//            //涓嶆槸鏁板瓧绫诲瀷鐨勫�艰鍔犲崟寮曞彿
+//            if (!"number".equals(type)) {
+//                value = String.format("'%s'", value);
+//            }
+//
+//            sql = sql.replace(old, value);
+//        }
+
+        return sql;
+    }
+
+    /**
+     * 鏌ヨ鏁版嵁鍒楄〃
+     * @param DTO
+     * @return
+     */
+    public List<Map<String,Object>> getListSql(String sql, ApiDTO DTO) {
+        if(DTO.getParams()!=null) {
+            for (String key : DTO.getParams().keySet()) {
+                sql = sql.replace("@" + key, DTO.getParams().get(key) + "");
+            }
+        }
+        return mapper.executeSql(sql);
+    }
+
+    /**
+     * 鏌ヨ鏁版嵁鍒楄〃
+     * @param DTO
+     * @return
+     */
+    public String getStringSql(String sql, ApiDTO DTO) {
+        if(DTO.getParams()!=null) {
+            for (String key : DTO.getParams().keySet()) {
+                sql = sql.replace("@" + key, DTO.getParams().get(key) + "");
+            }
+        }
+        return mapper.getClob(sql);
+    }
+}
diff --git a/ruoyi-project/src/main/resources/mapper/project/ApiMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ApiMapper.xml
new file mode 100644
index 0000000..9d65b56
--- /dev/null
+++ b/ruoyi-project/src/main/resources/mapper/project/ApiMapper.xml
@@ -0,0 +1,7 @@
+<?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.ApiMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceDeathinfoMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceDeathinfoMapper.xml
index 8141e05..65162c8 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceDeathinfoMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceDeathinfoMapper.xml
@@ -47,7 +47,9 @@
                create_by,
                create_time,
                update_by,
-               update_time
+               update_time,
+               judgment_description,
+               ext_content
         from service_deathinfo
     </sql>
 
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceDonateorganBaseMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceDonateorganBaseMapper.xml
index d96ae75..218707c 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceDonateorganBaseMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceDonateorganBaseMapper.xml
@@ -33,7 +33,10 @@
                create_time,
                update_by,
                update_time,
-               EstimatedTime
+               EstimatedTime,
+               recordstate,
+               file_name,
+               ext_content
         from service_donateorgan_base
     </sql>
 
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessMapper.xml
index a27acad..4b86477 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessMapper.xml
@@ -91,7 +91,7 @@
                update_time,
                OrganDonation,
                OrganDonation_Other,
-               DonationCategory
+               donationcategory
         from service_donationwitness
     </sql>
 
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessorganMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessorganMapper.xml
index 6eb01fc..ac45d2b 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessorganMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessorganMapper.xml
@@ -60,7 +60,9 @@
                update_by,
                caseno,
                name,
-               update_time
+               update_time,
+               file_name,
+               ext_content
         from service_donationwitnessorgan
     </sql>
 

--
Gitblit v1.9.3