Newspaper 1 ヶ月 前
コミット
b899bae0a4

+ 43 - 0
app-admin/src/main/java/com/ruoyi/web/controller/system/SubsidyProjectsController.java

@@ -0,0 +1,43 @@
+package com.ruoyi.web.controller.system;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.web.domain.dto.SubsidyProjects.SubsidyProjectsQueryRequest;
+import com.ruoyi.web.domain.entity.SubsidyProjects;
+import com.ruoyi.web.service.SubsidyProjectsService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import static com.ruoyi.common.core.domain.AjaxResult.error;
+import static com.ruoyi.common.core.domain.AjaxResult.success;
+
+@Api("补贴-项目信息管理")
+@RestController
+@RequestMapping("/system/subsidy/projects")
+public class SubsidyProjectsController {
+
+    @Autowired
+    private SubsidyProjectsService subsidyProjectsService;
+
+    /**
+     * 分页获取补贴-项目列表
+     *
+     * @param subsidyProjectsQueryRequest
+     * @return
+     */
+    @ApiOperation("分页获取补贴-项目列表")
+    @PostMapping("/list/page")
+    public AjaxResult listSubsidyProjectsByPage(@RequestBody SubsidyProjectsQueryRequest subsidyProjectsQueryRequest) {
+        if (subsidyProjectsQueryRequest == null) {
+            return error("请求参数为空");
+        }
+        Page<SubsidyProjects> listSubsidyProjectsByPage = subsidyProjectsService.getListSubsidyProjectsByPage(subsidyProjectsQueryRequest);
+        return success(listSubsidyProjectsByPage);
+    }
+
+}

+ 52 - 0
app-admin/src/main/java/com/ruoyi/web/domain/dto/SubsidyProjects/SubsidyProjectsQueryRequest.java

@@ -0,0 +1,52 @@
+package com.ruoyi.web.domain.dto.SubsidyProjects;
+
+import com.ruoyi.web.common.PageRequest;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 补贴-项目查询请求
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class SubsidyProjectsQueryRequest extends PageRequest implements Serializable {
+    /**
+     * 序号ID
+     */
+    private Integer id;
+
+    /**
+     * 补贴类别
+     */
+    private String subsidyType;
+
+    /**
+     * 姓名
+     */
+    private String realname;
+
+    /**
+     * 身份证号
+     */
+    private String idCard;
+
+    /**
+     * 开始时间
+     */
+    private Date startDate;
+
+    /**
+     * 结束时间
+     */
+    private Date endDate;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    private static final long serialVersionUID = 1L;
+}

+ 82 - 0
app-admin/src/main/java/com/ruoyi/web/domain/entity/SubsidyProjects.java

@@ -0,0 +1,82 @@
+package com.ruoyi.web.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 补贴项目管理表
+ *
+ * @TableName subsidy_projects
+ */
+@TableName(value = "subsidy_projects")
+@Data
+public class SubsidyProjects implements Serializable {
+    /**
+     * 序号ID
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 项目名称
+     */
+    private String projectName;
+
+    /**
+     * 补贴类别
+     */
+    private String subsidyType;
+
+    /**
+     * 姓名
+     */
+    private String realname;
+
+    /**
+     * 身份证号
+     */
+    private String idCard;
+
+    /**
+     * 实发金额(元)
+     */
+    private BigDecimal subsidyAmount;
+
+    /**
+     * 银行账号SHA-256哈希(加密存储)
+     */
+    private String bankAccountHash;
+
+    /**
+     * 兑现时间
+     */
+    private Date paymentDate;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 修改时间
+     */
+    private Date updateTime;
+
+    /**
+     * 删除标志
+     */
+    @TableLogic
+    private String delFlag;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 15 - 0
app-admin/src/main/java/com/ruoyi/web/mapper/SubsidyProjectsMapper.java

@@ -0,0 +1,15 @@
+package com.ruoyi.web.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.web.domain.entity.SubsidyProjects;
+
+/**
+ * @Entity generator.domain.SubsidyProjects
+ */
+public interface SubsidyProjectsMapper extends BaseMapper<SubsidyProjects> {
+
+}
+
+
+
+

+ 31 - 0
app-admin/src/main/java/com/ruoyi/web/service/SubsidyProjectsService.java

@@ -0,0 +1,31 @@
+package com.ruoyi.web.service;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.web.domain.dto.SubsidyProjects.SubsidyProjectsQueryRequest;
+import com.ruoyi.web.domain.entity.SubsidyProjects;
+
+
+/**
+ *
+ */
+public interface SubsidyProjectsService extends IService<SubsidyProjects> {
+    /**
+     * 分页获取补贴-项目列表
+     *
+     * @param subsidyProjectsQueryRequest
+     * @return
+     */
+    Page<SubsidyProjects> getListSubsidyProjectsByPage(SubsidyProjectsQueryRequest subsidyProjectsQueryRequest);
+
+
+    /**
+     * 获取查询条件
+     *
+     * @param subsidyProjectsQueryRequest
+     * @return
+     */
+    QueryWrapper<SubsidyProjects> getQueryWrapper(SubsidyProjectsQueryRequest subsidyProjectsQueryRequest);
+}

+ 86 - 0
app-admin/src/main/java/com/ruoyi/web/service/impl/SubsidyProjectsServiceImpl.java

@@ -0,0 +1,86 @@
+package com.ruoyi.web.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.web.domain.dto.SubsidyProjects.SubsidyProjectsQueryRequest;
+import com.ruoyi.web.domain.entity.SubsidyProjects;
+import com.ruoyi.web.mapper.SubsidyProjectsMapper;
+import com.ruoyi.web.service.SubsidyProjectsService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+/**
+ *
+ */
+@Service
+public class SubsidyProjectsServiceImpl extends ServiceImpl<SubsidyProjectsMapper, SubsidyProjects>
+        implements SubsidyProjectsService {
+
+    /**
+     * 分页获取补贴-项目列表
+     *
+     * @param subsidyProjectsQueryRequest
+     * @return
+     */
+    @Override
+    public Page<SubsidyProjects> getListSubsidyProjectsByPage(SubsidyProjectsQueryRequest subsidyProjectsQueryRequest) {
+        long current = subsidyProjectsQueryRequest.getCurrent();
+        long size = subsidyProjectsQueryRequest.getPageSize();
+        return this.page(new Page<>(current, size),
+                getQueryWrapper(subsidyProjectsQueryRequest));
+    }
+
+    /**
+     * 获取查询条件
+     *
+     * @param subsidyProjectsQueryRequest
+     * @return
+     */
+    @Override
+    public QueryWrapper<SubsidyProjects> getQueryWrapper(SubsidyProjectsQueryRequest subsidyProjectsQueryRequest) {
+        QueryWrapper<SubsidyProjects> queryWrapper = new QueryWrapper<>();
+        if (subsidyProjectsQueryRequest == null) {
+            return queryWrapper;
+        }
+
+        // 从对象中取值
+        Integer id = subsidyProjectsQueryRequest.getId();
+        String subsidyType = subsidyProjectsQueryRequest.getSubsidyType();
+        String realname = subsidyProjectsQueryRequest.getRealname();
+        String idCard = subsidyProjectsQueryRequest.getIdCard();
+        Date startDate = subsidyProjectsQueryRequest.getStartDate(); // 开始日期
+        Date endDate = subsidyProjectsQueryRequest.getEndDate();     // 结束日期
+        String status = subsidyProjectsQueryRequest.getStatus();
+        String sortField = subsidyProjectsQueryRequest.getSortField();
+        String sortOrder = subsidyProjectsQueryRequest.getSortOrder();
+
+
+        // 项目名称、项目描述 项目进度
+        queryWrapper.eq(ObjectUtil.isNotEmpty(id), "id", id);
+        queryWrapper.eq(StrUtil.isNotBlank(subsidyType), "subsidy_type", subsidyType);
+        queryWrapper.like(StringUtils.isNotBlank(realname), "realname", realname);
+        queryWrapper.eq(StringUtils.isNotBlank(idCard), "idCard", idCard);
+        // 日期范围查询(优先判断范围)
+        if (startDate != null && endDate != null) {
+            queryWrapper.between("payment_date", startDate, endDate);
+        } else if (startDate != null) {
+            queryWrapper.ge("payment_date", startDate); // >= 开始日期
+        } else if (endDate != null) {
+            queryWrapper.le("payment_date", endDate);   // <= 结束日期
+        }
+        queryWrapper.eq(StringUtils.isNotBlank(status), "status", status);
+
+        // 排序
+        queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), sortOrder.equals("ascend"), sortField);
+        return queryWrapper;
+    }
+}
+
+
+
+

+ 23 - 1
sql/sql.sql

@@ -104,4 +104,26 @@ CREATE TABLE projects (
     INDEX idx_progress (progress),
     INDEX idx_name (project_name),
     INDEX idx_dates (start_date, estimated_completion_date)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目表';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目表';
+
+-- 补贴(项目管理)
+CREATE TABLE subsidy_projects (
+    id  INT PRIMARY KEY AUTO_INCREMENT                  COMMENT '序号ID',
+    project_name VARCHAR(100) NOT NULL                  COMMENT '项目名称',
+    subsidy_type VARCHAR(100) NOT NULL                  COMMENT '补贴类别',
+    realname            VARCHAR(50) NOT NULL            COMMENT '姓名',
+    id_card        VARCHAR(18) UNIQUE                   COMMENT '身份证号',
+    subsidy_amount DECIMAL(20,2)                        COMMENT '实发金额(元)',
+    bank_account_hash CHAR(64) NOT NULL                 COMMENT '银行账号SHA-256哈希(加密存储)',
+    payment_date DATE NOT NULL                          COMMENT '兑现时间',
+    status VARCHAR(20)      NOT NULL                    COMMENT '状态',
+    create_time     datetime         null               comment '创建时间',
+    update_time     datetime         null               comment '修改时间',
+    del_flag        char default '0' null               comment '删除标志',
+    INDEX idx_type (subsidy_type),
+    INDEX idx_name (realname),
+    INDEX idx_payment_date (payment_date),
+    INDEX idx_status (status),
+    INDEX idx_type_status (subsidy_type, status),
+    INDEX idx_type_name_date (subsidy_type, realname, payment_date)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='补贴项目管理表';