From 92ac1754c713d206ebdafa3da8ec817c1d1e120d Mon Sep 17 00:00:00 2001
From: heheng <heheng@123456>
Date: 星期四, 16 一月 2025 16:39:09 +0800
Subject: [PATCH] 特种作业缴费版本

---
 exam-system/src/main/java/com/gkhy/exam/pay/entity/NonCoalPay.java                       |  212 ++++++
 exam-system/src/main/java/com/gkhy/exam/pay/entity/NonCoalCategory.java                  |  253 +++++++
 exam-system/src/main/java/com/gkhy/exam/pay/entity/NonCoalPayStudent.java                |  165 ++++
 exam-system/src/main/java/com/gkhy/exam/pay/service/NonCoalCategoryService.java          |   61 +
 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml                          |    3 
 exam-system/src/main/java/com/gkhy/exam/pay/controller/NonCoalPayController.java         |   81 ++
 exam-system/src/main/java/com/gkhy/exam/pay/mapper/NonCoalPayCategoryMapper.java         |   64 +
 exam-system/src/main/java/com/gkhy/exam/pay/service/NonCoalPayService.java               |   61 +
 exam-system/src/main/resources/mapper/pay/NonCoalPayMapper.xml                           |  121 +++
 ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java                     |   80 +-
 exam-system/src/main/java/com/gkhy/exam/pay/mapper/NonCoalCategoryMapper.java            |   70 ++
 exam-system/src/main/resources/mapper/pay/NonCoalCategoryMapper.xml                      |  154 ++++
 ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml                          |    8 
 exam-system/src/main/java/com/gkhy/exam/pay/service/impl/NonCoalPayServiceImpl.java      |   92 ++
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java              |   11 
 exam-system/src/main/resources/mapper/pay/NonCoalPayCategoryMapper.xml                   |   88 ++
 exam-system/src/main/java/com/gkhy/exam/pay/entity/NonCoalPayCategory.java               |  105 +++
 exam-system/src/main/java/com/gkhy/exam/pay/mapper/NonCoalPayMapper.java                 |   64 +
 exam-system/src/main/resources/mapper/pay/NonCoalPayStudentMapper.xml                    |  108 +++
 exam-system/src/main/java/com/gkhy/exam/pay/service/impl/NonCoalCategoryServiceImpl.java |  106 +++
 exam-system/src/main/java/com/gkhy/exam/pay/controller/NonCoalCategoryController.java    |   91 ++
 exam-system/src/main/java/com/gkhy/exam/pay/mapper/NonCoalPayStudentMapper.java          |   64 +
 ruoyi-admin/src/main/resources/application-dev.yml                                       |    2 
 23 files changed, 2,015 insertions(+), 49 deletions(-)

diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/controller/NonCoalCategoryController.java b/exam-system/src/main/java/com/gkhy/exam/pay/controller/NonCoalCategoryController.java
new file mode 100644
index 0000000..e7a6d3a
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/controller/NonCoalCategoryController.java
@@ -0,0 +1,91 @@
+package com.gkhy.exam.pay.controller;
+
+import com.gkhy.exam.pay.entity.NonCoalCategory;
+import com.gkhy.exam.pay.service.NonCoalCategoryService;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+
+/**
+ * 非煤工种类别Controller
+ *
+ * @author hh
+ * @date 2025-01-16
+ */
+@RestController
+@Api(tags = "非煤工种类别管理")
+@RequestMapping("/pay/nonCoalCategory")
+public class NonCoalCategoryController extends BaseController {
+    @Autowired
+    private NonCoalCategoryService nonCoalCategoryService;
+
+    /**
+     * 查询非煤工种类别列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list(NonCoalCategory nonCoalCategory) {
+        startPage();
+        List<NonCoalCategory> list = nonCoalCategoryService.selectNonCoalCategoryList(nonCoalCategory);
+        return getDataTable(list);
+    }
+
+//    /**
+//     * 导出非煤工种类别列表
+//     */
+//    @PreAuthorize("@ss.hasPermi('exam:category:export')")
+//    @PostMapping("/export")
+//    public void export(HttpServletResponse response, NonCoalCategory nonCoalCategory) {
+//        List<NonCoalCategory> list = nonCoalCategoryService.selectNonCoalCategoryList(nonCoalCategory);
+//        ExcelUtil<NonCoalCategory> util = new ExcelUtil<NonCoalCategory>(NonCoalCategory.class);
+//        util.exportExcel(response, list, "非煤工种类别数据");
+//    }
+
+    /**
+     * 获取非煤工种类别详细信息
+     */
+
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取非煤工种类别详细信息", httpMethod = "GET")
+    @ApiImplicitParam(name = "id", dataTypeClass = Long.class, value = "id", required = true)
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(nonCoalCategoryService.selectNonCoalCategoryById(id));
+    }
+
+    /**
+     * 新增非煤工种类别
+     */
+
+    @PostMapping("/add")
+    @ApiOperation(value = "新增非煤工种类别")
+    public AjaxResult add(@Validated @RequestBody NonCoalCategory nonCoalCategory) {
+        return toAjax(nonCoalCategoryService.insertNonCoalCategory(nonCoalCategory));
+    }
+
+    /**
+     * 修改非煤工种类别
+     */
+
+    @PostMapping("/edit")
+    @ApiOperation(value = "修改非煤工种类别")
+    public AjaxResult edit(@Validated @RequestBody NonCoalCategory nonCoalCategory) {
+        return toAjax(nonCoalCategoryService.updateNonCoalCategory(nonCoalCategory));
+    }
+
+    /**
+     * 删除非煤工种类别
+     */
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除非煤工种类别")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(nonCoalCategoryService.deleteNonCoalCategoryByIds(ids));
+    }
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/controller/NonCoalPayController.java b/exam-system/src/main/java/com/gkhy/exam/pay/controller/NonCoalPayController.java
new file mode 100644
index 0000000..4073215
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/controller/NonCoalPayController.java
@@ -0,0 +1,81 @@
+package com.gkhy.exam.pay.controller;
+
+import com.gkhy.exam.pay.entity.NonCoalPay;
+import com.gkhy.exam.pay.service.NonCoalPayService;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+
+/**
+ * 【请填写功能名称】Controller
+ *
+ * @author hh
+ * @date 2025-01-16
+ */
+@RestController
+@RequestMapping("/exam/pay")
+public class NonCoalPayController extends BaseController {
+    @Autowired
+    private NonCoalPayService nonCoalPayService;
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list(NonCoalPay nonCoalPay) {
+        startPage();
+        List<NonCoalPay> list = nonCoalPayService.selectNonCoalPayList(nonCoalPay);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出【请填写功能名称】列表
+     */
+
+//    @PostMapping("/export")
+//    public void export(HttpServletResponse response, NonCoalPay nonCoalPay) {
+//        List<NonCoalPay> list = nonCoalPayService.selectNonCoalPayList(nonCoalPay);
+//        ExcelUtil<NonCoalPay> util = new ExcelUtil<NonCoalPay>(NonCoalPay.class);
+//        util.exportExcel(response, list, "【请填写功能名称】数据");
+//    }
+
+    /**
+     * 获取【请填写功能名称】详细信息
+     */
+
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(nonCoalPayService.selectNonCoalPayById(id));
+    }
+
+    /**
+     * 新增【请填写功能名称】
+     */
+    @PostMapping
+    public AjaxResult add(@RequestBody NonCoalPay nonCoalPay) {
+        return toAjax(nonCoalPayService.insertNonCoalPay(nonCoalPay));
+    }
+
+    /**
+     * 修改【请填写功能名称】
+     */
+
+    @PutMapping
+    public AjaxResult edit(@RequestBody NonCoalPay nonCoalPay) {
+        return toAjax(nonCoalPayService.updateNonCoalPay(nonCoalPay));
+    }
+
+    /**
+     * 删除【请填写功能名称】
+     */
+
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(nonCoalPayService.deleteNonCoalPayByIds(ids));
+    }
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/entity/NonCoalCategory.java b/exam-system/src/main/java/com/gkhy/exam/pay/entity/NonCoalCategory.java
new file mode 100644
index 0000000..b6dde96
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/entity/NonCoalCategory.java
@@ -0,0 +1,253 @@
+package com.gkhy.exam.pay.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+
+/**
+ * 非煤工种类别对象 non_coal_category
+ *
+ * @author hh
+ * @date 2025-01-16
+ */
+@TableName("non_coal_category")
+@ApiModel(value = "非煤工种类别对象", description = "非煤工种类别对象")
+public class NonCoalCategory extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 地州编码
+     */
+    @Excel(name = "地州编码")
+    @NotBlank(message = "地州不能为空")
+    @ApiModelProperty("地州编码")
+    private String districtCode;
+
+    /**
+     * 类别1理论2实操
+     */
+    @Excel(name = "类别1理论2实操")
+    @ApiModelProperty("类别1理论2实操")
+    @NotNull(message = "类别不能为空")
+    private Long categoryType;
+
+    /**
+     * 科目名称
+     */
+    @Excel(name = "科目名称")
+    @NotBlank(message = "科目名称不能为空")
+    @ApiModelProperty("科目名称")
+    private String subjectName;
+
+    /**
+     * 关联资格类型
+     */
+    @Excel(name = "关联资格类型")
+    @ApiModelProperty("关联资格类型")
+    @NotNull(message = "关联资格类型不能为空")
+    private Long operateTypeId;
+
+    /**
+     * 金额
+     */
+    @Excel(name = "金额")
+    @ApiModelProperty("金额")
+    @NotNull(message = "金额不能为空")
+    private BigDecimal amount;
+
+    /**
+     * 业务编码
+     */
+    @Excel(name = "业务编码")
+    @NotBlank(message = "业务编码不能为空")
+    @ApiModelProperty("业务编码")
+    private String businessCode;
+
+    /**
+     * 单位编码
+     */
+    @Excel(name = "单位编码")
+    @NotBlank(message = "单位编码不能为空")
+    @ApiModelProperty("单位编码")
+    private String companyCode;
+
+    /**
+     * 开票人
+     */
+    @Excel(name = "开票人")
+    @NotBlank(message = "开票人不能为空")
+    @ApiModelProperty("开票人")
+    private String drawer;
+
+    /**
+     * 复核人
+     */
+    @Excel(name = "复核人")
+    @NotBlank(message = "复核人不能为空")
+    @ApiModelProperty("复核人")
+    private String reviewer;
+
+    /**
+     * 开票单位社会信用代码
+     */
+    @Excel(name = "开票单位社会信用代码")
+    @NotBlank(message = "开票单位社会信用代码不能为空")
+    @ApiModelProperty("开票单位社会信用代码")
+    private String invoicingCompanyCode;
+
+    /**
+     * 描述
+     */
+    @Excel(name = "描述")
+    private String describe;
+
+    /**
+     * 删除标志(0代表存在2代表删除)
+     */
+    @ApiModelProperty(value = "删除标志", hidden = true)
+    private Integer delFlag;
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setDistrictCode(String districtCode) {
+        this.districtCode = districtCode;
+    }
+
+    public String getDistrictCode() {
+        return districtCode;
+    }
+
+    public void setCategoryType(Long categoryType) {
+        this.categoryType = categoryType;
+    }
+
+    public Long getCategoryType() {
+        return categoryType;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setOperateTypeId(Long operateTypeId) {
+        this.operateTypeId = operateTypeId;
+    }
+
+    public Long getOperateTypeId() {
+        return operateTypeId;
+    }
+
+    public void setAmount(BigDecimal amount) {
+        this.amount = amount;
+    }
+
+    public BigDecimal getAmount() {
+        return amount;
+    }
+
+    public void setBussinessCode(String bussinessCode) {
+        this.businessCode = bussinessCode;
+    }
+
+    public String getBussinessCode() {
+        return businessCode;
+    }
+
+    public void setCompanyCode(String companyCode) {
+        this.companyCode = companyCode;
+    }
+
+    public String getCompanyCode() {
+        return companyCode;
+    }
+
+    public void setDrawer(String drawer) {
+        this.drawer = drawer;
+    }
+
+    public String getDrawer() {
+        return drawer;
+    }
+
+    public void setReviewer(String reviewer) {
+        this.reviewer = reviewer;
+    }
+
+    public String getReviewer() {
+        return reviewer;
+    }
+
+    public void setInvoicingCompanyCode(String invoicingCompanyCode) {
+        this.invoicingCompanyCode = invoicingCompanyCode;
+    }
+
+    public String getInvoicingCompanyCode() {
+        return invoicingCompanyCode;
+    }
+
+    public void setDescribe(String describe) {
+        this.describe = describe;
+    }
+
+    public String getDescribe() {
+        return describe;
+    }
+
+    public void setDelFlag(Integer delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Integer getDelFlag() {
+        return delFlag;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("districtCode", getDistrictCode())
+                .append("categoryType", getCategoryType())
+                .append("subjectName", getSubjectName())
+                .append("operateTypeId", getOperateTypeId())
+                .append("amount", getAmount())
+                .append("bussinessCode", getBussinessCode())
+                .append("companyCode", getCompanyCode())
+                .append("drawer", getDrawer())
+                .append("reviewer", getReviewer())
+                .append("invoicingCompanyCode", getInvoicingCompanyCode())
+                .append("describe", getDescribe())
+                .append("updateBy", getUpdateBy())
+                .append("updateTime", getUpdateTime())
+                .append("createBy", getCreateBy())
+                .append("createTime", getCreateTime())
+                .append("delFlag", getDelFlag())
+                .toString();
+    }
+}
\ No newline at end of file
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/entity/NonCoalPay.java b/exam-system/src/main/java/com/gkhy/exam/pay/entity/NonCoalPay.java
new file mode 100644
index 0000000..0518d12
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/entity/NonCoalPay.java
@@ -0,0 +1,212 @@
+package com.gkhy.exam.pay.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.math.BigDecimal;
+
+
+/**
+ * 【请填写功能名称】对象 non_coal_pay
+ *
+ * @author hh
+ * @date 2025-01-16
+ */
+@TableName("non_coal_pay")
+public class NonCoalPay extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 批次名称
+     */
+    @Excel(name = "批次名称")
+    private String batchName;
+
+    /**
+     * 考试点
+     */
+    @Excel(name = "考试点")
+    private Long deptId;
+
+    /**
+     * 地州code
+     */
+    @Excel(name = "地州code")
+    private String districtCode;
+
+    /**
+     * 缴费类型1初训理论2初训实操3初训理论与实操4复训理论
+     */
+    @Excel(name = "缴费类型1初训理论2初训实操3初训理论与实操4复训理论")
+    private Long payType;
+
+    /**
+     * 金额
+     */
+    @Excel(name = "金额")
+    private BigDecimal amount;
+
+    /**
+     * 年份
+     */
+    @Excel(name = "年份")
+    private String year;
+
+    /**
+     * 季度1一季度2二季度3三季度4四季度
+     */
+    @Excel(name = "季度1一季度2二季度3三季度4四季度")
+    private Long quarter;
+
+    /**
+     * 交款人类型1个人2团体
+     */
+    @Excel(name = "交款人类型1个人2团体")
+    private Integer payPersonType;
+
+    /**
+     * 缴款单位名称
+     */
+    @Excel(name = "缴款单位名称")
+    private String payCompanyName;
+
+    /**
+     * 缴款单位证件号
+     */
+    @Excel(name = "缴款单位证件号")
+    private String payCompanyCard;
+
+    /**
+     * 删除标志(0代表存在2代表删除)
+     */
+    private Integer delFlag;
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setBatchName(String batchName) {
+        this.batchName = batchName;
+    }
+
+    public String getBatchName() {
+        return batchName;
+    }
+
+    public void setDeptId(Long deptId) {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId() {
+        return deptId;
+    }
+
+    public void setDistrictCode(String districtCode) {
+        this.districtCode = districtCode;
+    }
+
+    public String getDistrictCode() {
+        return districtCode;
+    }
+
+    public void setPayType(Long payType) {
+        this.payType = payType;
+    }
+
+    public Long getPayType() {
+        return payType;
+    }
+
+    public void setAmount(BigDecimal amount) {
+        this.amount = amount;
+    }
+
+    public BigDecimal getAmount() {
+        return amount;
+    }
+
+    public void setYear(String year) {
+        this.year = year;
+    }
+
+    public String getYear() {
+        return year;
+    }
+
+    public void setQuarter(Long quarter) {
+        this.quarter = quarter;
+    }
+
+    public Long getQuarter() {
+        return quarter;
+    }
+
+    public void setPayPersonType(Integer payPersonType) {
+        this.payPersonType = payPersonType;
+    }
+
+    public Integer getPayPersonType() {
+        return payPersonType;
+    }
+
+    public void setPayCompanyName(String payCompanyName) {
+        this.payCompanyName = payCompanyName;
+    }
+
+    public String getPayCompanyName() {
+        return payCompanyName;
+    }
+
+    public void setPayCompanyCard(String payCompanyCard) {
+        this.payCompanyCard = payCompanyCard;
+    }
+
+    public String getPayCompanyCard() {
+        return payCompanyCard;
+    }
+
+    public void setDelFlag(Integer delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Integer getDelFlag() {
+        return delFlag;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("batchName", getBatchName())
+                .append("deptId", getDeptId())
+                .append("districtCode", getDistrictCode())
+                .append("payType", getPayType())
+                .append("amount", getAmount())
+                .append("year", getYear())
+                .append("quarter", getQuarter())
+                .append("payPersonType", getPayPersonType())
+                .append("payCompanyName", getPayCompanyName())
+                .append("payCompanyCard", getPayCompanyCard())
+                .append("updateBy", getUpdateBy())
+                .append("updateTime", getUpdateTime())
+                .append("createBy", getCreateBy())
+                .append("createTime", getCreateTime())
+                .append("delFlag", getDelFlag())
+                .toString();
+    }
+}
\ No newline at end of file
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/entity/NonCoalPayCategory.java b/exam-system/src/main/java/com/gkhy/exam/pay/entity/NonCoalPayCategory.java
new file mode 100644
index 0000000..27f3fbf
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/entity/NonCoalPayCategory.java
@@ -0,0 +1,105 @@
+package com.gkhy.exam.pay.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+
+/**
+ * 非煤缴费种类关联对象 non_coal_pay_category
+ *
+ * @author hh
+ * @date 2025-01-16
+ */
+@TableName("non_coal_pay_category")
+public class NonCoalPayCategory extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * $column.columnComment
+     */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private Long nonCoalPayId;
+
+    /**
+     * 类别id
+     */
+    @Excel(name = "类别id")
+    private Long categoryId;
+
+    /**
+     * 类别1理论2实操
+     */
+    @Excel(name = "类别1理论2实操")
+    private Long categoryType;
+
+    /**
+     * 删除标志(0代表存在2代表删除)
+     */
+    private Integer delFlag;
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setNonCoalPayId(Long nonCoalPayId) {
+        this.nonCoalPayId = nonCoalPayId;
+    }
+
+    public Long getNonCoalPayId() {
+        return nonCoalPayId;
+    }
+
+    public void setCategoryId(Long categoryId) {
+        this.categoryId = categoryId;
+    }
+
+    public Long getCategoryId() {
+        return categoryId;
+    }
+
+    public void setCategoryType(Long categoryType) {
+        this.categoryType = categoryType;
+    }
+
+    public Long getCategoryType() {
+        return categoryType;
+    }
+
+    public void setDelFlag(Integer delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Integer getDelFlag() {
+        return delFlag;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("nonCoalPayId", getNonCoalPayId())
+                .append("categoryId", getCategoryId())
+                .append("categoryType", getCategoryType())
+                .append("updateBy", getUpdateBy())
+                .append("updateTime", getUpdateTime())
+                .append("createBy", getCreateBy())
+                .append("createTime", getCreateTime())
+                .append("delFlag", getDelFlag())
+                .toString();
+    }
+}
\ No newline at end of file
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/entity/NonCoalPayStudent.java b/exam-system/src/main/java/com/gkhy/exam/pay/entity/NonCoalPayStudent.java
new file mode 100644
index 0000000..9fd5b0a
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/entity/NonCoalPayStudent.java
@@ -0,0 +1,165 @@
+package com.gkhy.exam.pay.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+
+/**
+ * 【请填写功能名称】对象 non_coal_pay_student
+ *
+ * @author hh
+ * @date 2025-01-16
+ */
+@TableName("non_coal_pay_student")
+public class NonCoalPayStudent extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 缴费id
+     */
+    @Excel(name = "缴费id")
+    private Long nonCoalPayId;
+
+    /**
+     * 姓名
+     */
+    @Excel(name = "姓名")
+    private String name;
+
+    /**
+     * 身份证号
+     */
+    @Excel(name = "身份证号")
+    private String idCard;
+
+    /**
+     * 电话
+     */
+    @Excel(name = "电话")
+    private String phone;
+
+    /**
+     * 0男 1女 2未知
+     */
+    @Excel(name = "0男 1女 2未知")
+    private Long sex;
+
+    /**
+     * 财政缴款码
+     */
+    @Excel(name = "财政缴款码")
+    private String payCode;
+
+    /**
+     * 是否缴款0否1是
+     */
+    @Excel(name = "是否缴款0否1是")
+    private Long payStatus;
+
+    /**
+     * 删除标志(0代表存在2代表删除)
+     */
+    private Integer delFlag;
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setNonCoalPayId(Long nonCoalPayId) {
+        this.nonCoalPayId = nonCoalPayId;
+    }
+
+    public Long getNonCoalPayId() {
+        return nonCoalPayId;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setIdCard(String idCard) {
+        this.idCard = idCard;
+    }
+
+    public String getIdCard() {
+        return idCard;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setSex(Long sex) {
+        this.sex = sex;
+    }
+
+    public Long getSex() {
+        return sex;
+    }
+
+    public void setPayCode(String payCode) {
+        this.payCode = payCode;
+    }
+
+    public String getPayCode() {
+        return payCode;
+    }
+
+    public void setPayStatus(Long payStatus) {
+        this.payStatus = payStatus;
+    }
+
+    public Long getPayStatus() {
+        return payStatus;
+    }
+
+    public void setDelFlag(Integer delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Integer getDelFlag() {
+        return delFlag;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("nonCoalPayId", getNonCoalPayId())
+                .append("name", getName())
+                .append("idCard", getIdCard())
+                .append("phone", getPhone())
+                .append("sex", getSex())
+                .append("payCode", getPayCode())
+                .append("payStatus", getPayStatus())
+                .append("updateBy", getUpdateBy())
+                .append("updateTime", getUpdateTime())
+                .append("createBy", getCreateBy())
+                .append("createTime", getCreateTime())
+                .append("delFlag", getDelFlag())
+                .toString();
+    }
+}
\ No newline at end of file
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/mapper/NonCoalCategoryMapper.java b/exam-system/src/main/java/com/gkhy/exam/pay/mapper/NonCoalCategoryMapper.java
new file mode 100644
index 0000000..f11663c
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/mapper/NonCoalCategoryMapper.java
@@ -0,0 +1,70 @@
+package com.gkhy.exam.pay.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gkhy.exam.pay.entity.NonCoalCategory;
+
+import java.util.List;
+
+/**
+ * 非煤工种类别Mapper接口
+ *
+ * @author hh
+ * @date 2025-01-16
+ */
+public interface NonCoalCategoryMapper extends BaseMapper<NonCoalCategory> {
+    /**
+     * 查询非煤工种类别
+     *
+     * @param id 非煤工种类别主键
+     * @return 非煤工种类别
+     */
+    public NonCoalCategory selectNonCoalCategoryById(Long id);
+
+    /**
+     * 查询非煤工种类别列表
+     *
+     * @param nonCoalCategory 非煤工种类别
+     * @return 非煤工种类别集合
+     */
+    public List<NonCoalCategory> selectNonCoalCategoryList(NonCoalCategory nonCoalCategory);
+
+    /**
+     * 新增非煤工种类别
+     *
+     * @param nonCoalCategory 非煤工种类别
+     * @return 结果
+     */
+    public int insertNonCoalCategory(NonCoalCategory nonCoalCategory);
+
+    /**
+     * 修改非煤工种类别
+     *
+     * @param nonCoalCategory 非煤工种类别
+     * @return 结果
+     */
+    public int updateNonCoalCategory(NonCoalCategory nonCoalCategory);
+
+    /**
+     * 删除非煤工种类别
+     *
+     * @param id 非煤工种类别主键
+     * @return 结果
+     */
+    public int deleteNonCoalCategoryById(Long id);
+
+    /**
+     * 批量删除非煤工种类别
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteNonCoalCategoryByIds(Long[] ids);
+
+    /**
+     * 校验唯一
+     *
+     * @param nonCoalCategory
+     * @return
+     */
+    int checkUnite(NonCoalCategory nonCoalCategory);
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/mapper/NonCoalPayCategoryMapper.java b/exam-system/src/main/java/com/gkhy/exam/pay/mapper/NonCoalPayCategoryMapper.java
new file mode 100644
index 0000000..dba261a
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/mapper/NonCoalPayCategoryMapper.java
@@ -0,0 +1,64 @@
+package com.gkhy.exam.pay.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gkhy.exam.pay.entity.NonCoalPayCategory;
+
+import java.util.List;
+
+
+/**
+ * 非煤缴费种类关联Mapper接口
+ *
+ * @author hh
+ * @date 2025-01-16
+ */
+public interface NonCoalPayCategoryMapper extends BaseMapper<NonCoalPayCategory>
+{
+    /**
+     * 查询非煤缴费种类关联
+     *
+     * @param id 非煤缴费种类关联主键
+     * @return 非煤缴费种类关联
+     */
+    public NonCoalPayCategory selectNonCoalPayCategoryById(Long id);
+
+    /**
+     * 查询非煤缴费种类关联列表
+     *
+     * @param nonCoalPayCategory 非煤缴费种类关联
+     * @return 非煤缴费种类关联集合
+     */
+    public List<NonCoalPayCategory> selectNonCoalPayCategoryList(NonCoalPayCategory nonCoalPayCategory);
+
+    /**
+     * 新增非煤缴费种类关联
+     *
+     * @param nonCoalPayCategory 非煤缴费种类关联
+     * @return 结果
+     */
+    public int insertNonCoalPayCategory(NonCoalPayCategory nonCoalPayCategory);
+
+    /**
+     * 修改非煤缴费种类关联
+     *
+     * @param nonCoalPayCategory 非煤缴费种类关联
+     * @return 结果
+     */
+    public int updateNonCoalPayCategory(NonCoalPayCategory nonCoalPayCategory);
+
+    /**
+     * 删除非煤缴费种类关联
+     *
+     * @param id 非煤缴费种类关联主键
+     * @return 结果
+     */
+    public int deleteNonCoalPayCategoryById(Long id);
+
+    /**
+     * 批量删除非煤缴费种类关联
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteNonCoalPayCategoryByIds(Long[] ids);
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/mapper/NonCoalPayMapper.java b/exam-system/src/main/java/com/gkhy/exam/pay/mapper/NonCoalPayMapper.java
new file mode 100644
index 0000000..803cbd2
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/mapper/NonCoalPayMapper.java
@@ -0,0 +1,64 @@
+package com.gkhy.exam.pay.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gkhy.exam.pay.entity.NonCoalPay;
+
+import java.util.List;
+
+
+/**
+ * 【请填写功能名称】Mapper接口
+ *
+ * @author hh
+ * @date 2025-01-16
+ */
+public interface NonCoalPayMapper extends BaseMapper<NonCoalPay>
+{
+    /**
+     * 查询【请填写功能名称】
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 【请填写功能名称】
+     */
+    public NonCoalPay selectNonCoalPayById(Long id);
+
+    /**
+     * 查询【请填写功能名称】列表
+     *
+     * @param nonCoalPay 【请填写功能名称】
+     * @return 【请填写功能名称】集合
+     */
+    public List<NonCoalPay> selectNonCoalPayList(NonCoalPay nonCoalPay);
+
+    /**
+     * 新增【请填写功能名称】
+     *
+     * @param nonCoalPay 【请填写功能名称】
+     * @return 结果
+     */
+    public int insertNonCoalPay(NonCoalPay nonCoalPay);
+
+    /**
+     * 修改【请填写功能名称】
+     *
+     * @param nonCoalPay 【请填写功能名称】
+     * @return 结果
+     */
+    public int updateNonCoalPay(NonCoalPay nonCoalPay);
+
+    /**
+     * 删除【请填写功能名称】
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 结果
+     */
+    public int deleteNonCoalPayById(Long id);
+
+    /**
+     * 批量删除【请填写功能名称】
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteNonCoalPayByIds(Long[] ids);
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/mapper/NonCoalPayStudentMapper.java b/exam-system/src/main/java/com/gkhy/exam/pay/mapper/NonCoalPayStudentMapper.java
new file mode 100644
index 0000000..fae957e
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/mapper/NonCoalPayStudentMapper.java
@@ -0,0 +1,64 @@
+package com.gkhy.exam.pay.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gkhy.exam.pay.entity.NonCoalPayStudent;
+
+import java.util.List;
+
+
+/**
+ * 【请填写功能名称】Mapper接口
+ *
+ * @author hh
+ * @date 2025-01-16
+ */
+public interface NonCoalPayStudentMapper extends BaseMapper<NonCoalPayStudent>
+{
+    /**
+     * 查询【请填写功能名称】
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 【请填写功能名称】
+     */
+    public NonCoalPayStudent selectNonCoalPayStudentById(Long id);
+
+    /**
+     * 查询【请填写功能名称】列表
+     *
+     * @param nonCoalPayStudent 【请填写功能名称】
+     * @return 【请填写功能名称】集合
+     */
+    public List<NonCoalPayStudent> selectNonCoalPayStudentList(NonCoalPayStudent nonCoalPayStudent);
+
+    /**
+     * 新增【请填写功能名称】
+     *
+     * @param nonCoalPayStudent 【请填写功能名称】
+     * @return 结果
+     */
+    public int insertNonCoalPayStudent(NonCoalPayStudent nonCoalPayStudent);
+
+    /**
+     * 修改【请填写功能名称】
+     *
+     * @param nonCoalPayStudent 【请填写功能名称】
+     * @return 结果
+     */
+    public int updateNonCoalPayStudent(NonCoalPayStudent nonCoalPayStudent);
+
+    /**
+     * 删除【请填写功能名称】
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 结果
+     */
+    public int deleteNonCoalPayStudentById(Long id);
+
+    /**
+     * 批量删除【请填写功能名称】
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteNonCoalPayStudentByIds(Long[] ids);
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/service/NonCoalCategoryService.java b/exam-system/src/main/java/com/gkhy/exam/pay/service/NonCoalCategoryService.java
new file mode 100644
index 0000000..a8dd721
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/service/NonCoalCategoryService.java
@@ -0,0 +1,61 @@
+package com.gkhy.exam.pay.service;
+
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gkhy.exam.pay.entity.NonCoalCategory;
+
+/**
+ * 非煤工种类别Service接口
+ *
+ * @author hh
+ * @date 2025-01-16
+ */
+public interface NonCoalCategoryService extends IService<NonCoalCategory> {
+    /**
+     * 查询非煤工种类别
+     *
+     * @param id 非煤工种类别主键
+     * @return 非煤工种类别
+     */
+    public NonCoalCategory selectNonCoalCategoryById(Long id);
+
+    /**
+     * 查询非煤工种类别列表
+     *
+     * @param nonCoalCategory 非煤工种类别
+     * @return 非煤工种类别集合
+     */
+    public List<NonCoalCategory> selectNonCoalCategoryList(NonCoalCategory nonCoalCategory);
+
+    /**
+     * 新增非煤工种类别
+     *
+     * @param nonCoalCategory 非煤工种类别
+     * @return 结果
+     */
+    public int insertNonCoalCategory(NonCoalCategory nonCoalCategory);
+
+    /**
+     * 修改非煤工种类别
+     *
+     * @param nonCoalCategory 非煤工种类别
+     * @return 结果
+     */
+    public int updateNonCoalCategory(NonCoalCategory nonCoalCategory);
+
+    /**
+     * 批量删除非煤工种类别
+     *
+     * @param ids 需要删除的非煤工种类别主键集合
+     * @return 结果
+     */
+    public int deleteNonCoalCategoryByIds(Long[] ids);
+
+    /**
+     * 删除非煤工种类别信息
+     *
+     * @param id 非煤工种类别主键
+     * @return 结果
+     */
+    public int deleteNonCoalCategoryById(Long id);
+}
\ No newline at end of file
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/service/NonCoalPayService.java b/exam-system/src/main/java/com/gkhy/exam/pay/service/NonCoalPayService.java
new file mode 100644
index 0000000..8afd2fb
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/service/NonCoalPayService.java
@@ -0,0 +1,61 @@
+package com.gkhy.exam.pay.service;
+
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gkhy.exam.pay.entity.NonCoalPay;
+
+/**
+ * 【请填写功能名称】Service接口
+ *
+ * @author hh
+ * @date 2025-01-16
+ */
+public interface NonCoalPayService extends IService<NonCoalPay> {
+    /**
+     * 查询【请填写功能名称】
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 【请填写功能名称】
+     */
+    public NonCoalPay selectNonCoalPayById(Long id);
+
+    /**
+     * 查询【请填写功能名称】列表
+     *
+     * @param nonCoalPay 【请填写功能名称】
+     * @return 【请填写功能名称】集合
+     */
+    public List<NonCoalPay> selectNonCoalPayList(NonCoalPay nonCoalPay);
+
+    /**
+     * 新增【请填写功能名称】
+     *
+     * @param nonCoalPay 【请填写功能名称】
+     * @return 结果
+     */
+    public int insertNonCoalPay(NonCoalPay nonCoalPay);
+
+    /**
+     * 修改【请填写功能名称】
+     *
+     * @param nonCoalPay 【请填写功能名称】
+     * @return 结果
+     */
+    public int updateNonCoalPay(NonCoalPay nonCoalPay);
+
+    /**
+     * 批量删除【请填写功能名称】
+     *
+     * @param ids 需要删除的【请填写功能名称】主键集合
+     * @return 结果
+     */
+    public int deleteNonCoalPayByIds(Long[] ids);
+
+    /**
+     * 删除【请填写功能名称】信息
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 结果
+     */
+    public int deleteNonCoalPayById(Long id);
+}
\ No newline at end of file
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/NonCoalCategoryServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/NonCoalCategoryServiceImpl.java
new file mode 100644
index 0000000..f754538
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/NonCoalCategoryServiceImpl.java
@@ -0,0 +1,106 @@
+package com.gkhy.exam.pay.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gkhy.exam.pay.entity.NonCoalCategory;
+import com.gkhy.exam.pay.mapper.NonCoalCategoryMapper;
+import com.gkhy.exam.pay.service.NonCoalCategoryService;
+import com.ruoyi.common.utils.SecurityUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+
+/**
+ * 非煤工种类别Service业务层处理
+ *
+ * @author hh
+ * @date 2025-01-16
+ */
+@Service
+public class NonCoalCategoryServiceImpl extends ServiceImpl<NonCoalCategoryMapper, NonCoalCategory> implements NonCoalCategoryService {
+
+    @Resource
+    private NonCoalCategoryMapper nonCoalCategoryMapper;
+
+    /**
+     * 查询非煤工种类别
+     *
+     * @param id 非煤工种类别主键
+     * @return 非煤工种类别
+     */
+    @Override
+    public NonCoalCategory selectNonCoalCategoryById(Long id) {
+        return nonCoalCategoryMapper.selectNonCoalCategoryById(id);
+    }
+
+    /**
+     * 查询非煤工种类别列表
+     *
+     * @param nonCoalCategory 非煤工种类别
+     * @return 非煤工种类别
+     */
+    @Override
+    public List<NonCoalCategory> selectNonCoalCategoryList(NonCoalCategory nonCoalCategory) {
+        if (!SecurityUtils.isAdmin(SecurityUtils.getUserId())) {
+            nonCoalCategory.setDistrictCode(SecurityUtils.getDeptDistrictCode());
+        }
+        return nonCoalCategoryMapper.selectNonCoalCategoryList(nonCoalCategory);
+    }
+
+    /**
+     * 新增非煤工种类别
+     *
+     * @param nonCoalCategory 非煤工种类别
+     * @return 结果
+     */
+    @Override
+    public int insertNonCoalCategory(NonCoalCategory nonCoalCategory) {
+        checkSubjectName(nonCoalCategory);
+        nonCoalCategory.setCreateBy(SecurityUtils.getUsername());
+        return nonCoalCategoryMapper.insertNonCoalCategory(nonCoalCategory);
+    }
+
+    /**
+     * 修改非煤工种类别
+     *
+     * @param nonCoalCategory 非煤工种类别
+     * @return 结果
+     */
+    @Override
+    public int updateNonCoalCategory(NonCoalCategory nonCoalCategory) {
+        checkSubjectName(nonCoalCategory);
+        nonCoalCategory.setUpdateBy(SecurityUtils.getUsername());
+        return nonCoalCategoryMapper.updateNonCoalCategory(nonCoalCategory);
+    }
+
+    private void checkSubjectName(NonCoalCategory nonCoalCategory) {
+
+        int i = nonCoalCategoryMapper.checkUnite(nonCoalCategory);
+        if (i > 0) {
+            throw new RuntimeException("该工种类别已存在");
+        }
+    }
+
+    /**
+     * 批量删除非煤工种类别
+     *
+     * @param ids 需要删除的非煤工种类别主键
+     * @return 结果
+     */
+    @Override
+    public int deleteNonCoalCategoryByIds(Long[] ids) {
+        return nonCoalCategoryMapper.deleteNonCoalCategoryByIds(ids);
+    }
+
+    /**
+     * 删除非煤工种类别信息
+     *
+     * @param id 非煤工种类别主键
+     * @return 结果
+     */
+    @Override
+    public int deleteNonCoalCategoryById(Long id) {
+        return nonCoalCategoryMapper.deleteNonCoalCategoryById(id);
+    }
+}
\ No newline at end of file
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/NonCoalPayServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/NonCoalPayServiceImpl.java
new file mode 100644
index 0000000..f090935
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/NonCoalPayServiceImpl.java
@@ -0,0 +1,92 @@
+package com.gkhy.exam.pay.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gkhy.exam.pay.entity.NonCoalPay;
+import com.gkhy.exam.pay.mapper.NonCoalPayMapper;
+import com.gkhy.exam.pay.service.NonCoalPayService;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+
+/**
+ * 【请填写功能名称】Service业务层处理
+ *
+ * @author hh
+ * @date 2025-01-16
+ */
+@Service
+public class NonCoalPayServiceImpl extends ServiceImpl<NonCoalPayMapper, NonCoalPay> implements NonCoalPayService {
+    @Resource
+    private NonCoalPayMapper nonCoalPayMapper;
+
+    /**
+     * 查询【请填写功能名称】
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 【请填写功能名称】
+     */
+    @Override
+    public NonCoalPay selectNonCoalPayById(Long id) {
+        return nonCoalPayMapper.selectNonCoalPayById(id);
+    }
+
+    /**
+     * 查询【请填写功能名称】列表
+     *
+     * @param nonCoalPay 【请填写功能名称】
+     * @return 【请填写功能名称】
+     */
+    @Override
+    public List<NonCoalPay> selectNonCoalPayList(NonCoalPay nonCoalPay) {
+        return nonCoalPayMapper.selectNonCoalPayList(nonCoalPay);
+    }
+
+    /**
+     * 新增【请填写功能名称】
+     *
+     * @param nonCoalPay 【请填写功能名称】
+     * @return 结果
+     */
+    @Override
+    public int insertNonCoalPay(NonCoalPay nonCoalPay) {
+        nonCoalPay.setCreateTime(DateUtils.getNowDate());
+        return nonCoalPayMapper.insertNonCoalPay(nonCoalPay);
+    }
+
+    /**
+     * 修改【请填写功能名称】
+     *
+     * @param nonCoalPay 【请填写功能名称】
+     * @return 结果
+     */
+    @Override
+    public int updateNonCoalPay(NonCoalPay nonCoalPay) {
+        nonCoalPay.setUpdateTime(DateUtils.getNowDate());
+        return nonCoalPayMapper.updateNonCoalPay(nonCoalPay);
+    }
+
+    /**
+     * 批量删除【请填写功能名称】
+     *
+     * @param ids 需要删除的【请填写功能名称】主键
+     * @return 结果
+     */
+    @Override
+    public int deleteNonCoalPayByIds(Long[] ids) {
+        return nonCoalPayMapper.deleteNonCoalPayByIds(ids);
+    }
+
+    /**
+     * 删除【请填写功能名称】信息
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 结果
+     */
+    @Override
+    public int deleteNonCoalPayById(Long id) {
+        return nonCoalPayMapper.deleteNonCoalPayById(id);
+    }
+}
\ No newline at end of file
diff --git a/exam-system/src/main/resources/mapper/pay/NonCoalCategoryMapper.xml b/exam-system/src/main/resources/mapper/pay/NonCoalCategoryMapper.xml
new file mode 100644
index 0000000..4d36750
--- /dev/null
+++ b/exam-system/src/main/resources/mapper/pay/NonCoalCategoryMapper.xml
@@ -0,0 +1,154 @@
+<?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.gkhy.exam.pay.mapper.NonCoalCategoryMapper">
+
+    <resultMap type="NonCoalCategory" id="NonCoalCategoryResult">
+        <result property="id" column="id"/>
+        <result property="districtCode" column="district_code"/>
+        <result property="categoryType" column="category_type"/>
+        <result property="subjectName" column="subject_name"/>
+        <result property="operateTypeId" column="operate_type_id"/>
+        <result property="amount" column="amount"/>
+        <result property="businessCode" column="business_code"/>
+        <result property="companyCode" column="company_code"/>
+        <result property="drawer" column="drawer"/>
+        <result property="reviewer" column="reviewer"/>
+        <result property="invoicingCompanyCode" column="invoicing_company_code"/>
+        <result property="describe" column="describe"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+    </resultMap>
+
+    <sql id="selectNonCoalCategoryVo">
+        select id,
+               district_code,
+               category_type,
+               subject_name,
+               operate_type_id,
+               amount,
+               bussiness_code,
+               company_code,
+               drawer,
+               reviewer,
+               invoicing_company_code, describe, update_by, update_time, create_by, create_time
+        from non_coal_category
+    </sql>
+
+    <select id="selectNonCoalCategoryList" parameterType="NonCoalCategory" resultMap="NonCoalCategoryResult">
+        <include refid="selectNonCoalCategoryVo"/>
+        <where>
+            <if test="districtCode != null  and districtCode != ''">and district_code = #{districtCode}</if>
+            <if test="categoryType != null ">and category_type = #{categoryType}</if>
+            <if test="subjectName != null  and subjectName != ''">and subject_name like concat('%', #{subjectName},
+                '%')
+            </if>
+            <if test="operateTypeId != null ">and operate_type_id = #{operateTypeId}</if>
+            <if test="amount != null ">and amount = #{amount}</if>
+            <if test="bussinessCode != null  and bussinessCode != ''">and bussiness_code = #{bussinessCode}</if>
+            <if test="companyCode != null  and companyCode != ''">and company_code = #{companyCode}</if>
+            <if test="drawer != null  and drawer != ''">and drawer = #{drawer}</if>
+            <if test="reviewer != null  and reviewer != ''">and reviewer = #{reviewer}</if>
+            <if test="invoicingCompanyCode != null  and invoicingCompanyCode != ''">and invoicing_company_code =
+                #{invoicingCompanyCode}
+            </if>
+            <if test="describe != null  and describe != ''">and describe = #{describe}</if>
+        </where>
+    </select>
+
+    <select id="selectNonCoalCategoryById" parameterType="Long" resultMap="NonCoalCategoryResult">
+        <include refid="selectNonCoalCategoryVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertNonCoalCategory" parameterType="NonCoalCategory" useGeneratedKeys="true" keyProperty="id">
+        insert into non_coal_category
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="districtCode != null and districtCode != ''">district_code,</if>
+            <if test="categoryType != null">category_type,</if>
+            <if test="subjectName != null and subjectName != ''">subject_name,</if>
+            <if test="operateTypeId != null">operate_type_id,</if>
+            <if test="amount != null">amount,</if>
+            <if test="bussinessCode != null and bussinessCode != ''">bussiness_code,</if>
+            <if test="companyCode != null and companyCode != ''">company_code,</if>
+            <if test="drawer != null and drawer != ''">drawer,</if>
+            <if test="reviewer != null and reviewer != ''">reviewer,</if>
+            <if test="invoicingCompanyCode != null and invoicingCompanyCode != ''">invoicing_company_code,</if>
+            <if test="describe != null">describe,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="districtCode != null and districtCode != ''">#{districtCode},</if>
+            <if test="categoryType != null">#{categoryType},</if>
+            <if test="subjectName != null and subjectName != ''">#{subjectName},</if>
+            <if test="operateTypeId != null">#{operateTypeId},</if>
+            <if test="amount != null">#{amount},</if>
+            <if test="bussinessCode != null and bussinessCode != ''">#{bussinessCode},</if>
+            <if test="companyCode != null and companyCode != ''">#{companyCode},</if>
+            <if test="drawer != null and drawer != ''">#{drawer},</if>
+            <if test="reviewer != null and reviewer != ''">#{reviewer},</if>
+            <if test="invoicingCompanyCode != null and invoicingCompanyCode != ''">#{invoicingCompanyCode},</if>
+            <if test="describe != null">#{describe},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+        </trim>
+    </insert>
+
+    <update id="updateNonCoalCategory" parameterType="NonCoalCategory">
+        update non_coal_category
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="districtCode != null and districtCode != ''">district_code = #{districtCode},</if>
+            <if test="categoryType != null">category_type = #{categoryType},</if>
+            <if test="subjectName != null and subjectName != ''">subject_name = #{subjectName},</if>
+            <if test="operateTypeId != null">operate_type_id = #{operateTypeId},</if>
+            <if test="amount != null">amount = #{amount},</if>
+            <if test="bussinessCode != null and bussinessCode != ''">bussiness_code = #{bussinessCode},</if>
+            <if test="companyCode != null and companyCode != ''">company_code = #{companyCode},</if>
+            <if test="drawer != null and drawer != ''">drawer = #{drawer},</if>
+            <if test="reviewer != null and reviewer != ''">reviewer = #{reviewer},</if>
+            <if test="invoicingCompanyCode != null and invoicingCompanyCode != ''">invoicing_company_code =
+                #{invoicingCompanyCode},
+            </if>
+            <if test="describe != null">describe = #{describe},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <select id="checkUnite" parameterType="NonCoalCategory" resultType="int">
+        select count(id)
+        from non_coal_category
+        where del_flag = 0
+        and district_code = #{districtCode}
+        and category_type = #{categoryType}
+        and subject_name = #{subjectName}
+        <if test="id != null ">and id != #{id}</if>
+    </select>
+
+    <update id="deleteNonCoalCategoryById" parameterType="Long">
+        update non_coal_category
+        set del_flag = 2
+        where id = #{id}
+    </update>
+
+    <update id="deleteNonCoalCategoryByIds" parameterType="String">
+        update non_coal_category set del_flag = 2 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+</mapper>
\ No newline at end of file
diff --git a/exam-system/src/main/resources/mapper/pay/NonCoalPayCategoryMapper.xml b/exam-system/src/main/resources/mapper/pay/NonCoalPayCategoryMapper.xml
new file mode 100644
index 0000000..0f5eb72
--- /dev/null
+++ b/exam-system/src/main/resources/mapper/pay/NonCoalPayCategoryMapper.xml
@@ -0,0 +1,88 @@
+<?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.gkhy.exam.pay.mapper.NonCoalPayCategoryMapper">
+    
+    <resultMap type="NonCoalPayCategory" id="NonCoalPayCategoryResult">
+        <result property="id"    column="id"    />
+        <result property="nonCoalPayId"    column="non_coal_pay_id"    />
+        <result property="categoryId"    column="category_id"    />
+        <result property="categoryType"    column="category_type"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="delFlag"    column="del_flag"    />
+    </resultMap>
+
+    <sql id="selectNonCoalPayCategoryVo">
+        select id, non_coal_pay_id, category_id, category_type, update_by, update_time, create_by, create_time, del_flag from non_coal_pay_category
+    </sql>
+
+    <select id="selectNonCoalPayCategoryList" parameterType="NonCoalPayCategory" resultMap="NonCoalPayCategoryResult">
+        <include refid="selectNonCoalPayCategoryVo"/>
+        <where>  
+            <if test="nonCoalPayId != null "> and non_coal_pay_id = #{nonCoalPayId}</if>
+            <if test="categoryId != null "> and category_id = #{categoryId}</if>
+            <if test="categoryType != null "> and category_type = #{categoryType}</if>
+        </where>
+    </select>
+    
+    <select id="selectNonCoalPayCategoryById" parameterType="Long" resultMap="NonCoalPayCategoryResult">
+        <include refid="selectNonCoalPayCategoryVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertNonCoalPayCategory" parameterType="NonCoalPayCategory">
+        insert into non_coal_pay_category
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="nonCoalPayId != null">non_coal_pay_id,</if>
+            <if test="categoryId != null">category_id,</if>
+            <if test="categoryType != null">category_type,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="nonCoalPayId != null">#{nonCoalPayId},</if>
+            <if test="categoryId != null">#{categoryId},</if>
+            <if test="categoryType != null">#{categoryType},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+         </trim>
+    </insert>
+
+    <update id="updateNonCoalPayCategory" parameterType="NonCoalPayCategory">
+        update non_coal_pay_category
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="nonCoalPayId != null">non_coal_pay_id = #{nonCoalPayId},</if>
+            <if test="categoryId != null">category_id = #{categoryId},</if>
+            <if test="categoryType != null">category_type = #{categoryType},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteNonCoalPayCategoryById" parameterType="Long">
+        delete from non_coal_pay_category where id = #{id}
+    </delete>
+
+    <delete id="deleteNonCoalPayCategoryByIds" parameterType="String">
+        delete from non_coal_pay_category where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>
\ No newline at end of file
diff --git a/exam-system/src/main/resources/mapper/pay/NonCoalPayMapper.xml b/exam-system/src/main/resources/mapper/pay/NonCoalPayMapper.xml
new file mode 100644
index 0000000..3016cea
--- /dev/null
+++ b/exam-system/src/main/resources/mapper/pay/NonCoalPayMapper.xml
@@ -0,0 +1,121 @@
+<?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.gkhy.exam.pay.mapper.NonCoalPayMapper">
+    
+    <resultMap type="NonCoalPay" id="NonCoalPayResult">
+        <result property="id"    column="id"    />
+        <result property="batchName"    column="batch_name"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="districtCode"    column="district_code"    />
+        <result property="payType"    column="pay_type"    />
+        <result property="amount"    column="amount"    />
+        <result property="year"    column="year"    />
+        <result property="quarter"    column="quarter"    />
+        <result property="payPersonType"    column="pay_person_type"    />
+        <result property="payCompanyName"    column="pay_company_name"    />
+        <result property="payCompanyCard"    column="pay_company_card"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="delFlag"    column="del_flag"    />
+    </resultMap>
+
+    <sql id="selectNonCoalPayVo">
+        select id, batch_name, dept_id, district_code, pay_type, amount, year, quarter, pay_person_type, pay_company_name, pay_company_card, update_by, update_time, create_by, create_time, del_flag from non_coal_pay
+    </sql>
+
+    <select id="selectNonCoalPayList" parameterType="NonCoalPay" resultMap="NonCoalPayResult">
+        <include refid="selectNonCoalPayVo"/>
+        <where>  
+            <if test="batchName != null  and batchName != ''"> and batch_name like concat('%', #{batchName}, '%')</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="districtCode != null  and districtCode != ''"> and district_code = #{districtCode}</if>
+            <if test="payType != null "> and pay_type = #{payType}</if>
+            <if test="amount != null "> and amount = #{amount}</if>
+            <if test="year != null  and year != ''"> and year = #{year}</if>
+            <if test="quarter != null "> and quarter = #{quarter}</if>
+            <if test="payPersonType != null "> and pay_person_type = #{payPersonType}</if>
+            <if test="payCompanyName != null  and payCompanyName != ''"> and pay_company_name like concat('%', #{payCompanyName}, '%')</if>
+            <if test="payCompanyCard != null  and payCompanyCard != ''"> and pay_company_card = #{payCompanyCard}</if>
+        </where>
+    </select>
+    
+    <select id="selectNonCoalPayById" parameterType="Long" resultMap="NonCoalPayResult">
+        <include refid="selectNonCoalPayVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertNonCoalPay" parameterType="NonCoalPay" useGeneratedKeys="true" keyProperty="id">
+        insert into non_coal_pay
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="batchName != null and batchName != ''">batch_name,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="districtCode != null and districtCode != ''">district_code,</if>
+            <if test="payType != null">pay_type,</if>
+            <if test="amount != null">amount,</if>
+            <if test="year != null and year != ''">year,</if>
+            <if test="quarter != null">quarter,</if>
+            <if test="payPersonType != null">pay_person_type,</if>
+            <if test="payCompanyName != null">pay_company_name,</if>
+            <if test="payCompanyCard != null">pay_company_card,</if>
+            <if test="updateBy != null and updateBy != ''">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="batchName != null and batchName != ''">#{batchName},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="districtCode != null and districtCode != ''">#{districtCode},</if>
+            <if test="payType != null">#{payType},</if>
+            <if test="amount != null">#{amount},</if>
+            <if test="year != null and year != ''">#{year},</if>
+            <if test="quarter != null">#{quarter},</if>
+            <if test="payPersonType != null">#{payPersonType},</if>
+            <if test="payCompanyName != null">#{payCompanyName},</if>
+            <if test="payCompanyCard != null">#{payCompanyCard},</if>
+            <if test="updateBy != null and updateBy != ''">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+         </trim>
+    </insert>
+
+    <update id="updateNonCoalPay" parameterType="NonCoalPay">
+        update non_coal_pay
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="batchName != null and batchName != ''">batch_name = #{batchName},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="districtCode != null and districtCode != ''">district_code = #{districtCode},</if>
+            <if test="payType != null">pay_type = #{payType},</if>
+            <if test="amount != null">amount = #{amount},</if>
+            <if test="year != null and year != ''">year = #{year},</if>
+            <if test="quarter != null">quarter = #{quarter},</if>
+            <if test="payPersonType != null">pay_person_type = #{payPersonType},</if>
+            <if test="payCompanyName != null">pay_company_name = #{payCompanyName},</if>
+            <if test="payCompanyCard != null">pay_company_card = #{payCompanyCard},</if>
+            <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteNonCoalPayById" parameterType="Long">
+        delete from non_coal_pay where id = #{id}
+    </delete>
+
+    <delete id="deleteNonCoalPayByIds" parameterType="String">
+        delete from non_coal_pay where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>
\ No newline at end of file
diff --git a/exam-system/src/main/resources/mapper/pay/NonCoalPayStudentMapper.xml b/exam-system/src/main/resources/mapper/pay/NonCoalPayStudentMapper.xml
new file mode 100644
index 0000000..6bccdb1
--- /dev/null
+++ b/exam-system/src/main/resources/mapper/pay/NonCoalPayStudentMapper.xml
@@ -0,0 +1,108 @@
+<?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.gkhy.exam.pay.mapper.NonCoalPayStudentMapper">
+    
+    <resultMap type="NonCoalPayStudent" id="NonCoalPayStudentResult">
+        <result property="id"    column="id"    />
+        <result property="nonCoalPayId"    column="non_coal_pay_id"    />
+        <result property="name"    column="name"    />
+        <result property="idCard"    column="id_card"    />
+        <result property="phone"    column="phone"    />
+        <result property="sex"    column="sex"    />
+        <result property="payCode"    column="pay_code"    />
+        <result property="payStatus"    column="pay_status"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="delFlag"    column="del_flag"    />
+    </resultMap>
+
+    <sql id="selectNonCoalPayStudentVo">
+        select id, non_coal_pay_id, name, id_card, phone, sex, pay_code, pay_status, update_by, update_time, create_by, create_time, del_flag from non_coal_pay_student
+    </sql>
+
+    <select id="selectNonCoalPayStudentList" parameterType="NonCoalPayStudent" resultMap="NonCoalPayStudentResult">
+        <include refid="selectNonCoalPayStudentVo"/>
+        <where>  
+            <if test="nonCoalPayId != null "> and non_coal_pay_id = #{nonCoalPayId}</if>
+            <if test="name != null  and name != ''"> and name like concat('%', #{name}, '%')</if>
+            <if test="idCard != null  and idCard != ''"> and id_card = #{idCard}</if>
+            <if test="phone != null  and phone != ''"> and phone = #{phone}</if>
+            <if test="sex != null "> and sex = #{sex}</if>
+            <if test="payCode != null  and payCode != ''"> and pay_code = #{payCode}</if>
+            <if test="payStatus != null "> and pay_status = #{payStatus}</if>
+        </where>
+    </select>
+    
+    <select id="selectNonCoalPayStudentById" parameterType="Long" resultMap="NonCoalPayStudentResult">
+        <include refid="selectNonCoalPayStudentVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertNonCoalPayStudent" parameterType="NonCoalPayStudent">
+        insert into non_coal_pay_student
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="nonCoalPayId != null">non_coal_pay_id,</if>
+            <if test="name != null and name != ''">name,</if>
+            <if test="idCard != null and idCard != ''">id_card,</if>
+            <if test="phone != null and phone != ''">phone,</if>
+            <if test="sex != null">sex,</if>
+            <if test="payCode != null">pay_code,</if>
+            <if test="payStatus != null">pay_status,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="nonCoalPayId != null">#{nonCoalPayId},</if>
+            <if test="name != null and name != ''">#{name},</if>
+            <if test="idCard != null and idCard != ''">#{idCard},</if>
+            <if test="phone != null and phone != ''">#{phone},</if>
+            <if test="sex != null">#{sex},</if>
+            <if test="payCode != null">#{payCode},</if>
+            <if test="payStatus != null">#{payStatus},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+         </trim>
+    </insert>
+
+    <update id="updateNonCoalPayStudent" parameterType="NonCoalPayStudent">
+        update non_coal_pay_student
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="nonCoalPayId != null">non_coal_pay_id = #{nonCoalPayId},</if>
+            <if test="name != null and name != ''">name = #{name},</if>
+            <if test="idCard != null and idCard != ''">id_card = #{idCard},</if>
+            <if test="phone != null and phone != ''">phone = #{phone},</if>
+            <if test="sex != null">sex = #{sex},</if>
+            <if test="payCode != null">pay_code = #{payCode},</if>
+            <if test="payStatus != null">pay_status = #{payStatus},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteNonCoalPayStudentById" parameterType="Long">
+        delete from non_coal_pay_student where id = #{id}
+    </delete>
+
+    <delete id="deleteNonCoalPayStudentByIds" parameterType="String">
+        delete from non_coal_pay_student where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml
index 625053a..3098c60 100644
--- a/ruoyi-admin/src/main/resources/application-dev.yml
+++ b/ruoyi-admin/src/main/resources/application-dev.yml
@@ -87,7 +87,7 @@
         # 数据库索引
         database: 5
         # 密码
-        password: wioowr23923sd3*&
+#        password: wioowr23923sd3*&
         # 连接超时时间
         timeout: 10s
         lettuce:
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java
index fb18c5c..bc694ca 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java
@@ -51,6 +51,9 @@
 
     /** 父部门名称 */
     private String parentName;
+
+    /** 区域编码 */
+    private String districtCode;
     
     /** 子部门 */
     private List<SysDept> children = new ArrayList<SysDept>();
@@ -200,4 +203,12 @@
             .append("updateTime", getUpdateTime())
             .toString();
     }
+    @NotBlank(message = "区域不能为空")
+    public String getDistrictCode() {
+        return districtCode;
+    }
+
+    public void setDistrictCode(String districtCode) {
+        this.districtCode = districtCode;
+    }
 }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java
index a6f3d53..48bcc09 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/SecurityUtils.java
@@ -1,30 +1,25 @@
 package com.ruoyi.common.utils;
 
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import com.ruoyi.common.constant.HttpStatus;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.exception.ServiceException;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 
 /**
  * 安全服务工具类
- * 
+ *
  * @author ruoyi
  */
-public class SecurityUtils
-{
+public class SecurityUtils {
     /**
      * 用户ID
      **/
-    public static Long getUserId()
-    {
-        try
-        {
+    public static Long getUserId() {
+        try {
             return getLoginUser().getUserId();
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             throw new ServiceException("获取用户ID异常", HttpStatus.UNAUTHORIZED);
         }
     }
@@ -32,29 +27,32 @@
     /**
      * 获取部门ID
      **/
-    public static Long getDeptId()
-    {
-        try
-        {
+    public static Long getDeptId() {
+        try {
             return getLoginUser().getDeptId();
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             throw new ServiceException("获取部门ID异常", HttpStatus.UNAUTHORIZED);
         }
     }
-    
+
+    /**
+     * 获取部门ID
+     **/
+    public static String getDeptDistrictCode() {
+        try {
+            return getLoginUser().getUser().getDept().getDistrictCode();
+        } catch (Exception e) {
+            throw new ServiceException("获取部门区域异常", HttpStatus.UNAUTHORIZED);
+        }
+    }
+
     /**
      * 获取用户账户
      **/
-    public static String getUsername()
-    {
-        try
-        {
+    public static String getUsername() {
+        try {
             return getLoginUser().getUsername();
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             throw new ServiceException("获取用户账户异常", HttpStatus.UNAUTHORIZED);
         }
     }
@@ -62,14 +60,10 @@
     /**
      * 获取用户
      **/
-    public static LoginUser getLoginUser()
-    {
-        try
-        {
+    public static LoginUser getLoginUser() {
+        try {
             return (LoginUser) getAuthentication().getPrincipal();
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             throw new ServiceException("获取用户信息异常", HttpStatus.UNAUTHORIZED);
         }
     }
@@ -77,8 +71,7 @@
     /**
      * 获取Authentication
      */
-    public static Authentication getAuthentication()
-    {
+    public static Authentication getAuthentication() {
         return SecurityContextHolder.getContext().getAuthentication();
     }
 
@@ -88,8 +81,7 @@
      * @param password 密码
      * @return 加密字符串
      */
-    public static String encryptPassword(String password)
-    {
+    public static String encryptPassword(String password) {
         BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
         return passwordEncoder.encode(password);
     }
@@ -97,24 +89,22 @@
     /**
      * 判断密码是否相同
      *
-     * @param rawPassword 真实密码
+     * @param rawPassword     真实密码
      * @param encodedPassword 加密后字符
      * @return 结果
      */
-    public static boolean matchesPassword(String rawPassword, String encodedPassword)
-    {
+    public static boolean matchesPassword(String rawPassword, String encodedPassword) {
         BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
         return passwordEncoder.matches(rawPassword, encodedPassword);
     }
 
     /**
      * 是否为管理员
-     * 
+     *
      * @param userId 用户ID
      * @return 结果
      */
-    public static boolean isAdmin(Long userId)
-    {
+    public static boolean isAdmin(Long userId) {
         return userId != null && 1L == userId;
     }
 }
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
index cf439f6..0680400 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -9,6 +9,7 @@
 		<result property="parentId"   column="parent_id"   />
 		<result property="ancestors"  column="ancestors"   />
 		<result property="deptName"   column="dept_name"   />
+		<result property="districtCode"   column="district_code"   />
 		<result property="orderNum"   column="order_num"   />
 		<result property="leader"     column="leader"      />
 		<result property="phone"      column="phone"       />
@@ -23,7 +24,7 @@
 	</resultMap>
 	
 	<sql id="selectDeptVo">
-        select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time 
+        select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time,d.district_code
         from sys_dept d
     </sql>
     
@@ -59,7 +60,7 @@
 	</select>
     
     <select id="selectDeptById" parameterType="Long" resultMap="SysDeptResult">
-		select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status,
+		select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, ,d.district_code,d.status,
 			(select dept_name from sys_dept where dept_id = d.parent_id) parent_name
 		from sys_dept d
 		where d.dept_id = #{deptId}
@@ -92,6 +93,7 @@
  			<if test="deptId != null and deptId != 0">dept_id,</if>
  			<if test="parentId != null and parentId != 0">parent_id,</if>
  			<if test="deptName != null and deptName != ''">dept_name,</if>
+			<if test="districtCode != null and districtCode != ''">district_code,</if>
  			<if test="ancestors != null and ancestors != ''">ancestors,</if>
  			<if test="orderNum != null">order_num,</if>
  			<if test="leader != null and leader != ''">leader,</if>
@@ -104,6 +106,7 @@
  			<if test="deptId != null and deptId != 0">#{deptId},</if>
  			<if test="parentId != null and parentId != 0">#{parentId},</if>
  			<if test="deptName != null and deptName != ''">#{deptName},</if>
+			<if test="districtCode != null and districtCode != ''">#{districtCode},</if>
  			<if test="ancestors != null and ancestors != ''">#{ancestors},</if>
  			<if test="orderNum != null">#{orderNum},</if>
  			<if test="leader != null and leader != ''">#{leader},</if>
@@ -120,6 +123,7 @@
  		<set>
  			<if test="parentId != null and parentId != 0">parent_id = #{parentId},</if>
  			<if test="deptName != null and deptName != ''">dept_name = #{deptName},</if>
+			<if test="districtCode != null and districtCode != ''">district_code = #{districtCode},</if>
  			<if test="ancestors != null and ancestors != ''">ancestors = #{ancestors},</if>
  			<if test="orderNum != null">order_num = #{orderNum},</if>
  			<if test="leader != null">leader = #{leader},</if>
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index 9fde387..dea3839 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -40,6 +40,7 @@
         <result property="orderNum"  column="order_num"   />
         <result property="leader"    column="leader"      />
         <result property="status"    column="dept_status" />
+		<result property="districtCode"   column="district_code"   />
     </resultMap>
 	
     <resultMap id="RoleResult" type="SysRole">
@@ -66,7 +67,7 @@
 	
 	<sql id="selectUserVo">
         select u.user_id, u.dept_id, u.district_id,u.unit,u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, u.id_card,
-        d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
+        d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,d.district_code,
         r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status,
         di.name as district_name,
 		ti.institution_id, ti.institution_name

--
Gitblit v1.9.2