已修改8个文件
已添加7个文件
326 ■■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/ApiController.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/GiApi.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDeathinfo.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonateorganBase.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonationwitnessorgan.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/ApiDTO.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationwitnessBaseInfoVO.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ApiMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/IApiService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ApiServiceImpl.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ApiMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceDeathinfoMapper.xml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceDonateorganBaseMapper.xml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessorganMapper.xml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/ApiController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
package com.ruoyi.web.controller.common;
import com.alibaba.fastjson2.JSON;
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中有非法字符,只应许select");
                }
                lists = service.getListSql(tempSql.getApiSql(), DTO);
                return AjaxResult.success(JSON.toJSON(lists));
            } else
                return AjaxResult.error("sql代码没有对应的sql请核对");
        } 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中有非法字符,只应许select");
                }
                    return AjaxResult.success(service.getStringSql(tempSql.getApiSql(), DTO));
            }else
                return AjaxResult.error("sql代码没有对应的sql请核对");
        }else {
            return AjaxResult.error("表名不能为空");
        }
    }
}
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("机构代码")
    private String orginId;
    @ApiModelProperty("接口代码")
    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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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);
}
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);
}
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ApiServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
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);
    }
    /**
     * æŸ¥è¯¢æ•°æ®åˆ—表
     * @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);
    }
}
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>
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>
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>
ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessMapper.xml
@@ -91,7 +91,7 @@
               update_time,
               OrganDonation,
               OrganDonation_Other,
               DonationCategory
               donationcategory
        from service_donationwitness
    </sql>
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>