From 5be0be6c58130b6c8a638baaac04481f756adf15 Mon Sep 17 00:00:00 2001
From: “djh” <“3298565835@qq.com”>
Date: Thu, 23 Jan 2025 08:29:57 +0800
Subject: [PATCH] 煤矿缴费
---
exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayServiceImpl.java | 208 ++++
exam-system/src/main/java/com/gkhy/exam/pay/utils/HttpResultVo.java | 17
exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalPayCategory.java | 85 +
exam-system/src/main/java/com/gkhy/exam/pay/service/CoalCategoryService.java | 26
exam-system/src/main/java/com/gkhy/exam/pay/service/CoalPayCategoryService.java | 7
exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalPayStudent.java | 253 +++++
exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalPay.java | 236 +++++
exam-system/src/main/resources/mapper/pay/CoalCategoryMapper.xml | 141 +++
exam-system/src/main/java/com/gkhy/exam/pay/entity/PayReqData.java | 50 +
exam-system/src/main/java/com/gkhy/exam/pay/service/CoalPayStudentService.java | 30
exam-system/src/main/java/com/gkhy/exam/pay/controller/CoalPayController.java | 117 ++
exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalCategory.java | 121 ++
exam-system/src/main/java/com/gkhy/exam/pay/mapper/CoalPayCategoryMapper.java | 12
exam-system/src/main/java/com/gkhy/exam/pay/service/CoalPayService.java | 30
exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalTicket.java | 21
exam-system/src/main/java/com/gkhy/exam/pay/dto/req/CoalPayDto.java | 72 +
exam-system/src/main/java/com/gkhy/exam/pay/controller/CoalPayStudentController.java | 76 +
exam-system/src/main/java/com/gkhy/exam/pay/mapper/CoalPayStudentMapper.java | 25
exam-system/src/main/java/com/gkhy/exam/pay/utils/PayUtils.java | 215 ++++
exam-system/src/main/java/com/gkhy/exam/pay/controller/CoalCategoryController.java | 101 ++
exam-system/src/main/java/com/gkhy/exam/pay/utils/ResultVo.java | 18
exam-system/src/main/java/com/gkhy/exam/pay/dto/req/CoalPayTypeReq.java | 15
exam-system/src/main/resources/mapper/pay/CoalPayCategoryMapper.xml | 37
exam-system/src/main/java/com/gkhy/exam/pay/dto/rep/CoalPayRepDto.java | 82 +
exam-system/src/main/java/com/gkhy/exam/pay/dto/req/CoalPayReq.java | 15
exam-system/src/main/java/com/gkhy/exam/pay/dto/rep/CoalPayStudentRep.java | 71 +
exam-system/src/main/resources/mapper/pay/CoalPayMapper.xml | 126 ++
exam-system/src/main/resources/mapper/pay/CoalPayStudentMapper.xml | 104 ++
exam-system/src/test/java/TextPay.java | 58 +
exam-system/src/main/java/com/gkhy/exam/pay/mapper/CoalCategoryMapper.java | 31
exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayStudentServiceImpl.java | 144 +++
exam-system/src/main/java/com/gkhy/exam/pay/mapper/CoalPayMapper.java | 21
exam-system/src/main/java/com/gkhy/exam/pay/dto/req/CoalPayStudentReq.java | 11
exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalCategoryServiceImpl.java | 106 ++
exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayCategoryServiceImpl.java | 11
35 files changed, 2,693 insertions(+), 0 deletions(-)
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/controller/CoalCategoryController.java b/exam-system/src/main/java/com/gkhy/exam/pay/controller/CoalCategoryController.java
new file mode 100644
index 0000000..87c7c2e
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/controller/CoalCategoryController.java
@@ -0,0 +1,101 @@
+package com.gkhy.exam.pay.controller;
+
+import com.gkhy.exam.pay.entity.CoalCategory;
+import com.gkhy.exam.pay.entity.CoalTicket;
+import com.gkhy.exam.pay.entity.NonCoalCategory;
+import com.gkhy.exam.pay.service.CoalCategoryService;
+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;
+
+@RestController
+@Api(tags = "煤矿工种类别管理")
+@RequestMapping("/pay/coalCategory")
+public class CoalCategoryController extends BaseController {
+
+ @Autowired
+ private CoalCategoryService coalCategoryService;
+
+ /**
+ * 查询煤矿工种类别列表
+ */
+ @PostMapping("/list")
+ @ApiOperation(value = "查询煤矿工种类别列表")
+ public TableDataInfo list(@RequestBody CoalCategory coalCategory) {
+ startPage();
+ List<CoalCategory> list = coalCategoryService.selectCoalCategoryList(coalCategory);
+ return getDataTable(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(coalCategoryService.selectCoalCategoryById(id));
+ }
+
+ /**
+ * 新增煤矿工种类别
+ */
+
+ @PostMapping("/insert")
+ @ApiOperation(value = "新增煤矿工种类别")
+ public AjaxResult add(@Validated @RequestBody CoalCategory coalCategory) {
+ return toAjax(coalCategoryService.insertCoalCategory(coalCategory));
+ }
+
+ /**
+ * 修改煤矿工种类别
+ */
+
+ @PostMapping("/update")
+ @ApiOperation(value = "修改煤矿工种类别")
+ public AjaxResult edit(@RequestBody CoalCategory coalCategory) {
+ return toAjax(coalCategoryService.updateCoalCategory(coalCategory));
+ }
+
+ /**
+ * 删除煤矿工种类别
+ */
+ @PostMapping("/delete")
+ @ApiOperation(value = "删除煤矿工种类别")
+ public AjaxResult remove(@RequestBody Long[] ids) {
+ return toAjax(coalCategoryService.deleteCoalCategoryByIds(ids));
+ }
+
+
+ /**
+ * 开票信息保存
+ */
+ @PostMapping("/saveTicket")
+ public AjaxResult save(@Validated @RequestBody CoalTicket coalTicket){
+ return toAjax(coalCategoryService.saveCoalTicket(coalTicket));
+ }
+
+ /**
+ * 开票信息修改
+ */
+ @PostMapping("/updateTicket")
+ public AjaxResult updateTicket(@RequestBody CoalTicket coalTicket){
+ return toAjax(coalCategoryService.updateCoalTicket(coalTicket));
+ }
+
+ /**
+ * 开票信息查询
+ */
+ @PostMapping("/ticketList")
+ public AjaxResult ticketList(){
+ return success(coalCategoryService.ticketList());
+ }
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/controller/CoalPayController.java b/exam-system/src/main/java/com/gkhy/exam/pay/controller/CoalPayController.java
new file mode 100644
index 0000000..9b84a40
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/controller/CoalPayController.java
@@ -0,0 +1,117 @@
+package com.gkhy.exam.pay.controller;
+
+import com.gkhy.exam.pay.dto.rep.CoalPayRepDto;
+import com.gkhy.exam.pay.dto.rep.CoalPayStudentRep;
+import com.gkhy.exam.pay.dto.req.CoalPayDto;
+import com.gkhy.exam.pay.dto.req.CoalPayReq;
+import com.gkhy.exam.pay.dto.req.CoalPayStudentReq;
+import com.gkhy.exam.pay.dto.req.CoalPayTypeReq;
+import com.gkhy.exam.pay.entity.CoalPayStudent;
+import com.gkhy.exam.pay.service.CoalPayService;
+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;
+
+@RestController
+@Api(tags = "煤矿缴费批次管理")
+@RequestMapping("/pay/coalPay")
+public class CoalPayController extends BaseController {
+
+ @Autowired
+ private CoalPayService coalPayService;
+
+ /**
+ * 查询煤矿缴费管理列表
+ */
+ @PostMapping("/list")
+ @ApiOperation(value = "查询煤矿缴费管理列表")
+ public TableDataInfo list(@RequestBody CoalPayReq coalPayReq) {
+ startPage();
+ List<CoalPayRepDto> list = coalPayService.selectCoalPayList(coalPayReq);
+ return getDataTable(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(coalPayService.selectCoalPayById(id));
+ }
+
+ /**
+ * 新增煤矿缴费管理
+ */
+ @PostMapping("/insert")
+ @ApiOperation(value = "新增煤矿缴费管理")
+ public AjaxResult add(@Validated @RequestBody CoalPayDto coalPayDto) {
+ return toAjax(coalPayService.insertCoalPay(coalPayDto));
+ }
+
+ /**
+ * 修改煤矿缴费管理
+ */
+ @PostMapping("/update")
+ @ApiOperation(value = "修改煤矿缴费管理")
+ public AjaxResult edit(@RequestBody CoalPayDto coalPayDto) {
+ return toAjax(coalPayService.updateCoalPay(coalPayDto));
+ }
+
+ /**
+ * 修改煤矿缴费类型
+ */
+ @PostMapping("/updateType")
+ @ApiOperation(value = "修改煤矿缴费类型")
+ public AjaxResult updateType(@RequestBody CoalPayTypeReq coalPayTypeReq) {
+ return toAjax(coalPayService.updateCoalPayType(coalPayTypeReq));
+ }
+
+// /**
+// * 修改煤矿缴费
+// */
+// @PostMapping("/updatePayCompany")
+// public AjaxResult updatePay(@RequestBody ){
+// return toAjax(coalPayService.updatePay());
+// }
+ /**
+ * 删除煤矿缴费管理
+ */
+ @PostMapping("/delete")
+ @ApiOperation(value = "删除煤矿缴费管理")
+ public AjaxResult remove(@RequestBody Long[] ids) {
+ return coalPayService.deleteCoalPayByIds(ids);
+ }
+
+ /**
+ * 个人缴费接口
+ */
+ @PostMapping("/findStudent")
+ @ApiOperation(value ="H5个人缴费查询")
+ public AjaxResult findStudent(@RequestBody CoalPayStudentReq coalPayStudent){
+ List<CoalPayStudentRep> coalPayStudentReps = coalPayService.selectCoalPay(coalPayStudent);
+ return success(coalPayStudentReps);
+ }
+
+
+
+// @PostMapping("/personPay")
+// @ApiOperation(value = "个人缴费接口")
+// public void payFees(){
+//
+// }
+
+
+
+
+
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/controller/CoalPayStudentController.java b/exam-system/src/main/java/com/gkhy/exam/pay/controller/CoalPayStudentController.java
new file mode 100644
index 0000000..2e72368
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/controller/CoalPayStudentController.java
@@ -0,0 +1,76 @@
+package com.gkhy.exam.pay.controller;
+
+import com.gkhy.exam.pay.entity.CoalPayStudent;
+import com.gkhy.exam.pay.service.CoalPayStudentService;
+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.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.List;
+
+@RestController
+@Api(tags = "煤矿缴费批次对应学员管理")
+@RequestMapping("/pay/coalPayStudent")
+public class CoalPayStudentController extends BaseController {
+
+ @Autowired
+ private CoalPayStudentService coalPayStudentService;
+
+ /**
+ * 缴费批次对应学生
+ */
+ @GetMapping("/studentList/{coalPayId}")
+ @ApiOperation(value = "缴费信息对应学员信息")
+ public TableDataInfo list(@PathVariable Long coalPayId) {
+ startPage();
+ List<CoalPayStudent> list = coalPayStudentService.selectCoalPayStudentList(coalPayId);
+ return getDataTable(list);
+ }
+
+ /**
+ * 修改相关学生信息
+ */
+ @PostMapping("/update")
+ @ApiOperation(value = "修改相关学员信息")
+ public AjaxResult updateStudent(@RequestBody CoalPayStudent coalPayStudent){
+ return coalPayStudentService.updateByCoalPayStudent(coalPayStudent);
+ }
+
+ /**
+ * 新增相关学生
+ */
+ @PostMapping("/insert")
+ @ApiOperation(value = "新增相关学员")
+ public AjaxResult insertStudent(@Validated @RequestBody CoalPayStudent coalPayStudent){
+ return toAjax(coalPayStudentService.insertStudent(coalPayStudent));
+ }
+
+ /**
+ * 删除相关学生
+ */
+ @PostMapping("/delete")
+ @ApiOperation(value = "删除对应学员")
+ public AjaxResult deleteStudent(@RequestBody Long[] ids){
+ return toAjax(coalPayStudentService.deleteStudent(ids));
+ }
+
+ /**
+ * 批量导入学生
+ */
+ @PostMapping("/import")
+ public AjaxResult uploadStudent(@RequestParam("file") MultipartFile file, @RequestParam("coalPayId") Long coalPayId) {
+ try {
+ return coalPayStudentService.uploadStudent(file, coalPayId);
+ } catch (IOException e) {
+ // 处理异常,返回友好的错误消息
+ return AjaxResult.error("学员信息导入失败: " + e.getMessage());
+ }
+ }
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/dto/rep/CoalPayRepDto.java b/exam-system/src/main/java/com/gkhy/exam/pay/dto/rep/CoalPayRepDto.java
new file mode 100644
index 0000000..25efa99
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/dto/rep/CoalPayRepDto.java
@@ -0,0 +1,82 @@
+package com.gkhy.exam.pay.dto.rep;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.gkhy.exam.pay.entity.CoalCategory;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+@ApiModel(value = "煤矿缴费管理对象详情", description = "煤矿缴费管理对象详情")
+@Data
+public class CoalPayRepDto implements Serializable {
+ private Long id;
+
+ /**
+ * 批次名称
+ */
+ private String batchName;
+
+ /**
+ * 考试点
+ */
+ private Long deptId;
+ private String deptName;
+
+ /**
+ * 缴费类型1初训理论2初训实操3初训理论与实操4复训理论
+ */
+ private Long payType;
+
+ /**
+ * 金额
+ */
+ private BigDecimal amount;
+
+ /**
+ * 年份
+ */
+ private String year;
+
+ /**
+ * 季度1一季度2二季度3三季度4四季度
+ */
+ private Long quarter;
+
+ /**
+ * 交款人类型1个人2团体
+ */
+ private Integer payPersonType;
+
+ /**
+ * 缴款单位名称
+ */
+ private String payCompanyName;
+
+ /**
+ * 缴款单位证件号
+ */
+ private String payCompanyCard;
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+ /**
+ * 总学员数量
+ */
+ private Integer totalNum;
+ /**
+ * 未交费数量
+ */
+ private Integer havePayNum;
+
+ private List<CoalCategory> coalCategoryList;
+
+
+
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/dto/rep/CoalPayStudentRep.java b/exam-system/src/main/java/com/gkhy/exam/pay/dto/rep/CoalPayStudentRep.java
new file mode 100644
index 0000000..72cb9b3
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/dto/rep/CoalPayStudentRep.java
@@ -0,0 +1,71 @@
+package com.gkhy.exam.pay.dto.rep;
+
+import com.gkhy.exam.pay.entity.CoalPay;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class CoalPayStudentRep {
+
+ private Long id;
+
+ /**
+ * 缴费id
+ */
+ private Long coalPayId;
+
+ /**
+ * 姓名
+ */
+ @ApiModelProperty("姓名")
+ private String name;
+
+ /**
+ * 身份证号
+ */
+ @ApiModelProperty("身份证号")
+ private String idCard;
+
+ /**
+ * 电话
+ */
+ @ApiModelProperty("电话")
+ private String phone;
+
+ /**
+ * 0男 1女 2未知
+ */
+ @ApiModelProperty("性别")
+ private Long sex;
+
+ /**
+ * 财政缴款码
+ */
+ @ApiModelProperty("财政缴款码")
+ private String payCode;
+
+ /**
+ * 是否缴款0否1是
+ */
+ @ApiModelProperty("是否缴款")
+ private Long payStatus;
+
+ /**
+ * 缴费类型1个人 2团体
+ */
+ private Integer payType;
+
+ private CoalPayRepDto coalPays;
+
+
+
+
+
+
+
+
+
+
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/dto/req/CoalPayDto.java b/exam-system/src/main/java/com/gkhy/exam/pay/dto/req/CoalPayDto.java
new file mode 100644
index 0000000..fe2ec96
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/dto/req/CoalPayDto.java
@@ -0,0 +1,72 @@
+package com.gkhy.exam.pay.dto.req;
+
+import com.gkhy.exam.pay.entity.CoalPayCategory;
+import com.ruoyi.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+@ApiModel(value = "煤矿缴费管理对象dto", description = "煤矿缴费管理对象dto")
+@Data
+public class CoalPayDto implements Serializable {
+
+ private Long id;
+
+ /**
+ * 批次名称
+ */
+ @NotBlank(message = "批次名称不能为空")
+ @ApiModelProperty("批次名称")
+ private String batchName;
+
+ /**
+ * 考试点
+ */
+ @NotNull(message = "考试点不能为空")
+ @ApiModelProperty("考试点")
+ private Long deptId;
+
+ /**
+ * 缴费类型1初训理论2初训实操3初训理论与实操4复训理论
+ */
+ @NotNull(message = "缴费类型不能为空")
+ @ApiModelProperty("缴费类型")
+ private Long payType;
+
+ /**
+ * 金额
+ */
+ @NotNull(message = "金额不能为空")
+ @ApiModelProperty("金额")
+ private BigDecimal amount;
+
+ /**
+ * 年份
+ */
+ @NotBlank(message = "年份不能为空")
+ @ApiModelProperty("年份")
+ private String year;
+
+ /**
+ * 季度1一季度2二季度3三季度4四季度
+ */
+ @NotNull(message = "季度不能为空")
+ @ApiModelProperty("季度")
+ private Long quarter;
+
+// /**
+// * 交款人类型1个人2团体
+// */
+// @NotNull(message = "交款人类型不能为空")
+// @ApiModelProperty("交款人类型")
+// private Integer payPersonType;
+
+ private List<CoalPayCategory> coalPayCategoryies;
+
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/dto/req/CoalPayReq.java b/exam-system/src/main/java/com/gkhy/exam/pay/dto/req/CoalPayReq.java
new file mode 100644
index 0000000..af9ee81
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/dto/req/CoalPayReq.java
@@ -0,0 +1,15 @@
+package com.gkhy.exam.pay.dto.req;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class CoalPayReq {
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date minDate;
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date maxDate;
+ private Long deptId;
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/dto/req/CoalPayStudentReq.java b/exam-system/src/main/java/com/gkhy/exam/pay/dto/req/CoalPayStudentReq.java
new file mode 100644
index 0000000..b5052f0
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/dto/req/CoalPayStudentReq.java
@@ -0,0 +1,11 @@
+package com.gkhy.exam.pay.dto.req;
+
+import lombok.Data;
+
+@Data
+public class CoalPayStudentReq {
+
+ private String idCard;
+ private String phone;
+
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/dto/req/CoalPayTypeReq.java b/exam-system/src/main/java/com/gkhy/exam/pay/dto/req/CoalPayTypeReq.java
new file mode 100644
index 0000000..a2df5a5
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/dto/req/CoalPayTypeReq.java
@@ -0,0 +1,15 @@
+package com.gkhy.exam.pay.dto.req;
+
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class CoalPayTypeReq {
+ private Long coalPayId;
+ private Integer payPersonType;
+ private String payCompanyName;
+ private String payCompanyCard;
+
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalCategory.java b/exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalCategory.java
new file mode 100644
index 0000000..465f2fc
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalCategory.java
@@ -0,0 +1,121 @@
+package com.gkhy.exam.pay.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+
+@TableName("coal_category")
+@ApiModel(value = "煤矿工种类别对象", description = "煤矿工种类别对象")
+public class CoalCategory extends BaseEntity {
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 类别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 BigDecimal amount;
+
+ /**
+ * 业务编码
+ */
+ @NotNull(message = "业务编码不可为空")
+ private String businessCode;
+
+ /**
+ * 描述
+ */
+ @Excel(name = "描述")
+ private String describe;
+
+ /**
+ * 删除标志(0代表存在2代表删除)
+ */
+ @ApiModelProperty(value = "删除标志", hidden = true)
+ private Integer delFlag;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getCategoryType() {
+ return categoryType;
+ }
+
+ public void setCategoryType(Long categoryType) {
+ this.categoryType = categoryType;
+ }
+
+ public String getSubjectName() {
+ return subjectName;
+ }
+
+ public void setSubjectName(String subjectName) {
+ this.subjectName = subjectName;
+ }
+
+ public BigDecimal getAmount() {
+ return amount;
+ }
+
+ public void setAmount(BigDecimal amount) {
+ this.amount = amount;
+ }
+
+ public String getDescribe() {
+ return describe;
+ }
+
+ public void setDescribe(String describe) {
+ this.describe = describe;
+ }
+
+ public String getBusinessCode() {
+ return businessCode;
+ }
+
+ public void setBusinessCode(String businessCode) {
+ this.businessCode = businessCode;
+ }
+
+ public Integer getDelFlag() {
+ return delFlag;
+ }
+
+ public void setDelFlag(Integer delFlag) {
+ this.delFlag = delFlag;
+ }
+}
\ No newline at end of file
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalPay.java b/exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalPay.java
new file mode 100644
index 0000000..650cceb
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalPay.java
@@ -0,0 +1,236 @@
+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.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@TableName("coal_pay")
+@ApiModel(value = "煤矿缴费批次对象", description = "煤矿缴费批次对象")
+public class CoalPay implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 批次名称
+ */
+ @Excel(name = "批次名称")
+ @NotBlank(message = "批次名称不能为空")
+ @ApiModelProperty("批次名称")
+ private String batchName;
+
+ /**
+ * 考试点
+ */
+ @Excel(name = "考试点")
+ @NotNull(message = "考试点不能为空")
+ @ApiModelProperty("考试点")
+ private Long deptId;
+
+ /**
+ * 缴费类型1初训理论2初训实操3初训理论与实操4复训理论
+ */
+ @Excel(name = "缴费类型1初训理论2初训实操3初训理论与实操4复训理论")
+ @NotNull(message = "缴费类型不能为空")
+ @ApiModelProperty("缴费类型")
+ private Long payType;
+
+ /**
+ * 金额
+ */
+ @Excel(name = "金额")
+ @NotNull(message = "金额不能为空")
+ @ApiModelProperty("金额")
+ private BigDecimal amount;
+
+ /**
+ * 年份
+ */
+ @Excel(name = "年份")
+ @NotBlank(message = "年份不能为空")
+ @ApiModelProperty("年份")
+ private String year;
+
+ /**
+ * 季度1一季度2二季度3三季度4四季度
+ */
+ @Excel(name = "季度1一季度2二季度3三季度4四季度")
+ @NotNull(message = "季度不能为空")
+ @ApiModelProperty("季度")
+ private Long quarter;
+
+ /**
+ * 交款人类型1个人2团体
+ */
+ @Excel(name = "交款人类型1个人2团体")
+ @NotNull(message = "交款人类型不能为空")
+ @ApiModelProperty("交款人类型")
+ private Integer payPersonType;
+
+ /**
+ * 缴款单位名称
+ */
+ @Excel(name = "缴款单位名称")
+ @ApiModelProperty("缴款单位证件号")
+ private String payCompanyName;
+
+ /**
+ * 缴款单位证件号
+ */
+ @Excel(name = "缴款单位证件号")
+ @ApiModelProperty("缴款单位证件号")
+ private String payCompanyCard;
+
+
+ /** 创建者 */
+ private String createBy;
+
+ /** 创建时间 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+ /** 更新者 */
+ private String updateBy;
+
+ /** 更新时间 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date updateTime;
+
+ /**
+ * 删除标志(0代表存在2代表删除)
+ */
+ @ApiModelProperty(value = "删除标志", hidden = true)
+ private Integer delFlag;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getBatchName() {
+ return batchName;
+ }
+
+ public void setBatchName(String batchName) {
+ this.batchName = batchName;
+ }
+
+ public Long getDeptId() {
+ return deptId;
+ }
+
+ public void setDeptId(Long deptId) {
+ this.deptId = deptId;
+ }
+
+ public Long getPayType() {
+ return payType;
+ }
+
+ public void setPayType(Long payType) {
+ this.payType = payType;
+ }
+
+ public BigDecimal getAmount() {
+ return amount;
+ }
+
+ public void setAmount(BigDecimal amount) {
+ this.amount = amount;
+ }
+
+ public String getYear() {
+ return year;
+ }
+
+ public void setYear(String year) {
+ this.year = year;
+ }
+
+ public Long getQuarter() {
+ return quarter;
+ }
+
+ public void setQuarter(Long quarter) {
+ this.quarter = quarter;
+ }
+
+ public Integer getPayPersonType() {
+ return payPersonType;
+ }
+
+ public void setPayPersonType(Integer payPersonType) {
+ this.payPersonType = payPersonType;
+ }
+
+ public String getPayCompanyName() {
+ return payCompanyName;
+ }
+
+ public void setPayCompanyName(String payCompanyName) {
+ this.payCompanyName = payCompanyName;
+ }
+
+ public String getPayCompanyCard() {
+ return payCompanyCard;
+ }
+
+ public void setPayCompanyCard(String payCompanyCard) {
+ this.payCompanyCard = payCompanyCard;
+ }
+
+ public String getCreateBy() {
+ return createBy;
+ }
+
+ public void setCreateBy(String createBy) {
+ this.createBy = createBy;
+ }
+
+ public Date getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(Date createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getUpdateBy() {
+ return updateBy;
+ }
+
+ public void setUpdateBy(String updateBy) {
+ this.updateBy = updateBy;
+ }
+
+ public Date getUpdateTime() {
+ return updateTime;
+ }
+
+ public void setUpdateTime(Date updateTime) {
+ this.updateTime = updateTime;
+ }
+
+ public Integer getDelFlag() {
+ return delFlag;
+ }
+
+ public void setDelFlag(Integer delFlag) {
+ this.delFlag = delFlag;
+ }
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalPayCategory.java b/exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalPayCategory.java
new file mode 100644
index 0000000..6a6046c
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalPayCategory.java
@@ -0,0 +1,85 @@
+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 javax.validation.constraints.NotNull;
+
+@TableName("coal_pay_category")
+@ApiModel(value = "煤矿缴费批次关联工种",description = "煤矿缴费批次关联工种")
+public class CoalPayCategory extends BaseEntity {
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+// @NotNull(message = "参数不能为空")
+ @ApiModelProperty("非煤管理id")
+ private Long coalPayId;
+
+ /**
+ * 类别id
+ */
+ @Excel(name = "类别id")
+ @NotNull(message = "类别不能为空")
+ @ApiModelProperty("类别id")
+ private Long coalCategoryId;
+
+ /**
+ * 类别1理论2实操
+ */
+ @Excel(name = "类型1理论2实操")
+ @NotNull(message = "类别类型不能为空")
+ @ApiModelProperty("类别类型id")
+ private Long categoryType;
+
+ /**
+ * 删除标志(0代表存在2代表删除)
+ */
+ private Integer delFlag;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getCoalPayId() {
+ return coalPayId;
+ }
+
+ public void setCoalPayId(Long coalPayId) {
+ this.coalPayId = coalPayId;
+ }
+
+ public Long getCoalCategoryId() {
+ return coalCategoryId;
+ }
+
+ public void setCoalCategoryId(Long coalCategoryId) {
+ this.coalCategoryId = coalCategoryId;
+ }
+
+ public Long getCategoryType() {
+ return categoryType;
+ }
+
+ public void setCategoryType(Long categoryType) {
+ this.categoryType = categoryType;
+ }
+
+ public Integer getDelFlag() {
+ return delFlag;
+ }
+
+ public void setDelFlag(Integer delFlag) {
+ this.delFlag = delFlag;
+ }
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalPayStudent.java b/exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalPayStudent.java
new file mode 100644
index 0000000..af7fb22
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalPayStudent.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.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
+@TableName("coal_pay_student")
+@ApiModel(value = "煤矿缴费批次关联学生表", description = "煤矿缴费批次关联学生表")
+public class CoalPayStudent implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 缴费id
+ */
+ @Excel(name = "缴费id")
+ @NotNull(message = "参数不能为空")
+ @ApiModelProperty("缴费管理id")
+ private Long coalPayId;
+
+ /**
+ * 姓名
+ */
+ @Excel(name = "姓名")
+ @NotBlank(message = "姓名不能为空")
+ @ApiModelProperty("姓名")
+ private String name;
+
+ /**
+ * 身份证号
+ */
+ @Excel(name = "身份证号")
+ @NotBlank(message = "身份证号不能为空")
+ @ApiModelProperty("身份证号")
+ private String idCard;
+
+ /**
+ * 电话
+ */
+ @Excel(name = "电话")
+ @NotBlank(message = "电话不能为空")
+ @ApiModelProperty("电话")
+ private String phone;
+
+ /**
+ * 0男 1女 2未知
+ */
+ @Excel(name = "0男 1女 2未知")
+ @ApiModelProperty("性别")
+ private Long sex;
+
+ /**
+ * 财政缴款码
+ */
+ @Excel(name = "财政缴款码")
+ @ApiModelProperty("财政缴款码")
+ private String payCode;
+
+ /**
+ * 是否缴款0否1是
+ */
+ @Excel(name = "是否缴款0否1是")
+ @ApiModelProperty("是否缴款")
+ private Long payStatus;
+
+ /**
+ * 缴费类型1个人 2团体
+ */
+ private Integer payType;
+
+ /**
+ * 订单编号
+ */
+ private String orderId;
+
+ /**
+ * 票据
+ */
+ private String fileData;
+
+ /**
+ * 缴费状态
+ */
+ private Integer govPayStatus;
+
+
+ /** 创建者 */
+ private String createBy;
+
+ /** 创建时间 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+ /** 更新者 */
+ private String updateBy;
+
+ /** 更新时间 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date updateTime;
+
+ /**
+ * 删除标志(0代表存在2代表删除)
+ */
+ private Integer delFlag;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getCoalPayId() {
+ return coalPayId;
+ }
+
+ public void setCoalPayId(Long coalPayId) {
+ this.coalPayId = coalPayId;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getIdCard() {
+ return idCard;
+ }
+
+ public void setIdCard(String idCard) {
+ this.idCard = idCard;
+ }
+
+ public String getPhone() {
+ return phone;
+ }
+
+ public void setPhone(String phone) {
+ this.phone = phone;
+ }
+
+ public Long getSex() {
+ return sex;
+ }
+
+ public void setSex(Long sex) {
+ this.sex = sex;
+ }
+
+ public String getPayCode() {
+ return payCode;
+ }
+
+ public void setPayCode(String payCode) {
+ this.payCode = payCode;
+ }
+
+ public Long getPayStatus() {
+ return payStatus;
+ }
+
+ public void setPayStatus(Long payStatus) {
+ this.payStatus = payStatus;
+ }
+
+ public String getCreateBy() {
+ return createBy;
+ }
+
+ public void setCreateBy(String createBy) {
+ this.createBy = createBy;
+ }
+
+ public Date getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(Date createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getUpdateBy() {
+ return updateBy;
+ }
+
+ public void setUpdateBy(String updateBy) {
+ this.updateBy = updateBy;
+ }
+
+ public Date getUpdateTime() {
+ return updateTime;
+ }
+
+ public void setUpdateTime(Date updateTime) {
+ this.updateTime = updateTime;
+ }
+
+ public Integer getDelFlag() {
+ return delFlag;
+ }
+
+ public void setDelFlag(Integer delFlag) {
+ this.delFlag = delFlag;
+ }
+
+ public Integer getPayType() {
+ return payType;
+ }
+
+ public void setPayType(Integer payType) {
+ this.payType = payType;
+ }
+
+ public String getOrderId() {
+ return orderId;
+ }
+
+ public void setOrderId(String orderId) {
+ this.orderId = orderId;
+ }
+
+ public String getFileData() {
+ return fileData;
+ }
+
+ public void setFileData(String fileData) {
+ this.fileData = fileData;
+ }
+
+ public Integer getGovPayStatus() {
+ return govPayStatus;
+ }
+
+ public void setGovPayStatus(Integer govPayStatus) {
+ this.govPayStatus = govPayStatus;
+ }
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalTicket.java b/exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalTicket.java
new file mode 100644
index 0000000..1f9195b
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/entity/CoalTicket.java
@@ -0,0 +1,21 @@
+package com.gkhy.exam.pay.entity;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+public class CoalTicket {
+
+ private Long id;
+ @NotNull(message = "开票单位名称不可为空")
+ private String ticketCompanyName;
+ @NotNull(message = "开票单位社会信用代码不可为空")
+ private String ticketCompanyCode;
+ @NotNull(message = "开票人不可为空")
+ private String drawer;
+ @NotNull(message = "复核人不可为空")
+ private String check;
+ @NotNull(message = "单位编码不可为空")
+ private String companyCode;
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/entity/PayReqData.java b/exam-system/src/main/java/com/gkhy/exam/pay/entity/PayReqData.java
new file mode 100644
index 0000000..8447251
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/entity/PayReqData.java
@@ -0,0 +1,50 @@
+package com.gkhy.exam.pay.entity;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class PayReqData {
+ //订单编号
+ private String orderNo;
+ //订单总金额
+ private BigDecimal money;
+ //子订单数目
+ private Integer amount;
+ //缴费人姓名
+ private String payerName;
+ //缴费人证件号
+ private String certNo;
+ //交款人类型
+ private Integer payerType;
+ //开票单位社会信用代码
+ private String invoiceSocialCode;
+ //开票人
+ private String handlingPerson;
+ //复核人
+ private String checker;
+ //单位编码
+ private String enterCode;
+ //电子邮件
+ private String email;
+ //订单描述
+ private String desc;
+ //备注
+ private String remark1;
+ private String remark2;
+ private String remark3;
+ //订单明细
+ private List<Feedata> feeDatas;
+
+
+
+ @Data
+ public static class Feedata{
+ private String busCode;
+ private Integer amount;
+ private BigDecimal price;
+ }
+
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/mapper/CoalCategoryMapper.java b/exam-system/src/main/java/com/gkhy/exam/pay/mapper/CoalCategoryMapper.java
new file mode 100644
index 0000000..23c8473
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/mapper/CoalCategoryMapper.java
@@ -0,0 +1,31 @@
+package com.gkhy.exam.pay.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gkhy.exam.pay.entity.CoalCategory;
+import com.gkhy.exam.pay.entity.CoalTicket;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+
+public interface CoalCategoryMapper extends BaseMapper<CoalCategory> {
+ List<CoalCategory> selectCoalCategoryList(CoalCategory coalCategory);
+
+ int selectByCoalCategory(CoalCategory coalCategory);
+
+ List<CoalCategory> selectByCoalPayId(Long id);
+
+ int updateBatchByIds(Long[] ids);
+
+ int insertCoalCategory(CoalCategory coalCategory);
+
+ int updateCategoryById(CoalCategory coalCategory);
+
+ int saveCoalTicket(CoalTicket coalTicket);
+
+ int updateCoalTicket(CoalTicket coalTicket);
+
+ CoalTicket selectCoalTicket();
+
+
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/mapper/CoalPayCategoryMapper.java b/exam-system/src/main/java/com/gkhy/exam/pay/mapper/CoalPayCategoryMapper.java
new file mode 100644
index 0000000..d9e1080
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/mapper/CoalPayCategoryMapper.java
@@ -0,0 +1,12 @@
+package com.gkhy.exam.pay.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gkhy.exam.pay.entity.CoalCategory;
+import com.gkhy.exam.pay.entity.CoalPayCategory;
+
+import java.util.List;
+
+public interface CoalPayCategoryMapper extends BaseMapper<CoalPayCategory> {
+
+ int deleteByCoalPayId(Long id);
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/mapper/CoalPayMapper.java b/exam-system/src/main/java/com/gkhy/exam/pay/mapper/CoalPayMapper.java
new file mode 100644
index 0000000..c317d7b
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/mapper/CoalPayMapper.java
@@ -0,0 +1,21 @@
+package com.gkhy.exam.pay.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gkhy.exam.pay.dto.req.CoalPayDto;
+import com.gkhy.exam.pay.dto.req.CoalPayReq;
+import com.gkhy.exam.pay.dto.req.CoalPayTypeReq;
+import com.gkhy.exam.pay.entity.CoalPay;
+
+import java.util.List;
+
+public interface CoalPayMapper extends BaseMapper<CoalPay> {
+ List<CoalPay> selectCoalPayList(CoalPayReq coalPay);
+
+ int insertBath(CoalPay coalPay);
+
+ int updateByIds(Long[] ids);
+
+ int updateByPayId(CoalPayTypeReq coalPayDto);
+
+ int updateCoalPayById(CoalPay coalPay);
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/mapper/CoalPayStudentMapper.java b/exam-system/src/main/java/com/gkhy/exam/pay/mapper/CoalPayStudentMapper.java
new file mode 100644
index 0000000..599c382
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/mapper/CoalPayStudentMapper.java
@@ -0,0 +1,25 @@
+package com.gkhy.exam.pay.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gkhy.exam.pay.dto.req.CoalPayStudentReq;
+import com.gkhy.exam.pay.entity.CoalPayStudent;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public interface CoalPayStudentMapper extends BaseMapper<CoalPayStudent> {
+ List<CoalPayStudent> selectByCoalPayId(Long coalPayId);
+
+ int updateByIds(Long[] ids);
+
+ List<CoalPayStudent> selectByCoalPayIdAndPayStatus(@Param("id") Long id, @Param("status") int status);
+
+ List<CoalPayStudent> selectByIds(Long[] ids);
+
+ List<CoalPayStudent> selectByIdcard(CoalPayStudentReq coalPayStudent);
+
+ int updateCoalPayStudentById(CoalPayStudent coalPayStudent);
+
+ int insertCoalPayStudent(CoalPayStudent coalPayStudent);
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/service/CoalCategoryService.java b/exam-system/src/main/java/com/gkhy/exam/pay/service/CoalCategoryService.java
new file mode 100644
index 0000000..8aedbaa
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/service/CoalCategoryService.java
@@ -0,0 +1,26 @@
+package com.gkhy.exam.pay.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gkhy.exam.pay.entity.CoalCategory;
+import com.gkhy.exam.pay.entity.CoalTicket;
+
+import java.util.List;
+
+public interface CoalCategoryService extends IService<CoalCategory> {
+ CoalCategory selectCoalCategoryById(Long id);
+
+ List<CoalCategory> selectCoalCategoryList(CoalCategory coalCategory);
+
+ int insertCoalCategory(CoalCategory coalCategory);
+
+ int updateCoalCategory(CoalCategory coalCategory);
+
+ int deleteCoalCategoryByIds(Long[] ids);
+
+ int saveCoalTicket(CoalTicket coalTicket);
+
+ int updateCoalTicket(CoalTicket coalTicket);
+
+ CoalTicket ticketList();
+
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/service/CoalPayCategoryService.java b/exam-system/src/main/java/com/gkhy/exam/pay/service/CoalPayCategoryService.java
new file mode 100644
index 0000000..50dca81
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/service/CoalPayCategoryService.java
@@ -0,0 +1,7 @@
+package com.gkhy.exam.pay.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gkhy.exam.pay.entity.CoalPayCategory;
+
+public interface CoalPayCategoryService extends IService<CoalPayCategory> {
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/service/CoalPayService.java b/exam-system/src/main/java/com/gkhy/exam/pay/service/CoalPayService.java
new file mode 100644
index 0000000..2ff3cb6
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/service/CoalPayService.java
@@ -0,0 +1,30 @@
+package com.gkhy.exam.pay.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gkhy.exam.pay.dto.rep.CoalPayRepDto;
+import com.gkhy.exam.pay.dto.rep.CoalPayStudentRep;
+import com.gkhy.exam.pay.dto.req.CoalPayDto;
+import com.gkhy.exam.pay.dto.req.CoalPayReq;
+import com.gkhy.exam.pay.dto.req.CoalPayStudentReq;
+import com.gkhy.exam.pay.dto.req.CoalPayTypeReq;
+import com.gkhy.exam.pay.entity.CoalPay;
+import com.gkhy.exam.pay.entity.CoalPayStudent;
+import com.ruoyi.common.core.domain.AjaxResult;
+
+import java.util.List;
+
+public interface CoalPayService extends IService<CoalPay> {
+ List<CoalPayRepDto> selectCoalPayList(CoalPayReq coalPay);
+
+ CoalPayRepDto selectCoalPayById(Long id);
+
+ int insertCoalPay(CoalPayDto coalPayDto);
+
+ int updateCoalPay(CoalPayDto coalPayDto);
+
+ AjaxResult deleteCoalPayByIds(Long[] ids);
+
+ List<CoalPayStudentRep> selectCoalPay(CoalPayStudentReq coalPayStudent);
+
+ int updateCoalPayType(CoalPayTypeReq coalPayDto);
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/service/CoalPayStudentService.java b/exam-system/src/main/java/com/gkhy/exam/pay/service/CoalPayStudentService.java
new file mode 100644
index 0000000..7058e67
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/service/CoalPayStudentService.java
@@ -0,0 +1,30 @@
+package com.gkhy.exam.pay.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gkhy.exam.pay.dto.req.CoalPayStudentReq;
+import com.gkhy.exam.pay.entity.CoalPayStudent;
+import com.ruoyi.common.core.domain.AjaxResult;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.List;
+
+public interface CoalPayStudentService extends IService<CoalPayStudent> {
+
+ List<CoalPayStudent> selectCoalPayStudentList(Long coalPayId);
+
+ AjaxResult updateByCoalPayStudent(CoalPayStudent coalPayStudent);
+
+ int insertStudent(CoalPayStudent coalPayStudent);
+
+ int deleteStudent(Long[] ids);
+
+ AjaxResult uploadStudent(MultipartFile file,Long coalPayId) throws IOException;
+
+ List<CoalPayStudent> selectByCoalPayId(Long id);
+
+ List<CoalPayStudent> selectByCoalPayIdAndPayStatus(Long id, int status);
+
+ List<CoalPayStudent> selectbyIdcard(CoalPayStudentReq coalPayStudent);
+
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalCategoryServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalCategoryServiceImpl.java
new file mode 100644
index 0000000..5c730be
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalCategoryServiceImpl.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.CoalCategory;
+import com.gkhy.exam.pay.entity.CoalTicket;
+import com.gkhy.exam.pay.mapper.CoalCategoryMapper;
+import com.gkhy.exam.pay.service.CoalCategoryService;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.exception.BusinessException;
+import com.ruoyi.common.utils.SecurityUtils;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+import static com.ruoyi.common.core.domain.AjaxResult.success;
+
+@Service
+public class CoalCategoryServiceImpl extends ServiceImpl<CoalCategoryMapper, CoalCategory> implements CoalCategoryService {
+
+ @Resource
+ private CoalCategoryMapper coalCategoryMapper;
+
+
+ @Override
+ public CoalCategory selectCoalCategoryById(Long id) {
+ return coalCategoryMapper.selectById(id);
+ }
+
+ /**
+ * 煤矿工种类别列表
+ * @param coalCategory
+ * @return
+ */
+ @Override
+ public List<CoalCategory> selectCoalCategoryList(CoalCategory coalCategory) {
+ return coalCategoryMapper.selectCoalCategoryList(coalCategory);
+ }
+
+ /**
+ * 新增煤矿工种类别
+ * @param coalCategory
+ * @return
+ */
+ @Override
+ public int insertCoalCategory(CoalCategory coalCategory) {
+ checkCoalCategory(coalCategory);
+ coalCategory.setCreateBy(SecurityUtils.getUsername());
+ coalCategory.setCreateTime(new Date());
+ return coalCategoryMapper.insertCoalCategory(coalCategory);
+ }
+
+ private void checkCoalCategory(CoalCategory coalCategory) {
+ int i = coalCategoryMapper.selectByCoalCategory(coalCategory);
+ if (i>0){
+ throw new RuntimeException("该工种已存在,请勿重复添加");
+ }
+ }
+
+ /**
+ * 修改煤矿工种类别
+ * @param coalCategory
+ * @return
+ */
+ @Override
+ public int updateCoalCategory(CoalCategory coalCategory) {
+ checkCoalCategory(coalCategory);
+ coalCategory.setUpdateBy(SecurityUtils.getUsername());
+ coalCategory.setUpdateTime(new Date());
+ return coalCategoryMapper.updateCategoryById(coalCategory);
+
+ }
+
+ /**
+ * 删除煤矿工种类别
+ * @param ids
+ * @return
+ */
+ @Override
+ public int deleteCoalCategoryByIds(Long[] ids) {
+ return coalCategoryMapper.updateBatchByIds(ids);
+ }
+
+ @Override
+ public int saveCoalTicket(CoalTicket coalTicket) {
+ return coalCategoryMapper.saveCoalTicket(coalTicket);
+ }
+
+ @Override
+ public int updateCoalTicket(CoalTicket coalTicket) {
+ return coalCategoryMapper.updateCoalTicket(coalTicket);
+ }
+
+ @Override
+ public CoalTicket ticketList() {
+ return coalCategoryMapper.selectCoalTicket();
+ }
+
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayCategoryServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayCategoryServiceImpl.java
new file mode 100644
index 0000000..cf223c2
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayCategoryServiceImpl.java
@@ -0,0 +1,11 @@
+package com.gkhy.exam.pay.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gkhy.exam.pay.entity.CoalPayCategory;
+import com.gkhy.exam.pay.mapper.CoalPayCategoryMapper;
+import com.gkhy.exam.pay.service.CoalPayCategoryService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class CoalPayCategoryServiceImpl extends ServiceImpl<CoalPayCategoryMapper, CoalPayCategory> implements CoalPayCategoryService {
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayServiceImpl.java
new file mode 100644
index 0000000..1f1cd8b
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayServiceImpl.java
@@ -0,0 +1,208 @@
+package com.gkhy.exam.pay.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gkhy.exam.pay.dto.rep.CoalPayRepDto;
+import com.gkhy.exam.pay.dto.rep.CoalPayStudentRep;
+import com.gkhy.exam.pay.dto.req.CoalPayDto;
+import com.gkhy.exam.pay.dto.req.CoalPayReq;
+import com.gkhy.exam.pay.dto.req.CoalPayStudentReq;
+import com.gkhy.exam.pay.dto.req.CoalPayTypeReq;
+import com.gkhy.exam.pay.entity.CoalCategory;
+import com.gkhy.exam.pay.entity.CoalPay;
+import com.gkhy.exam.pay.entity.CoalPayCategory;
+import com.gkhy.exam.pay.entity.CoalPayStudent;
+import com.gkhy.exam.pay.mapper.CoalCategoryMapper;
+import com.gkhy.exam.pay.mapper.CoalPayCategoryMapper;
+import com.gkhy.exam.pay.mapper.CoalPayMapper;
+import com.gkhy.exam.pay.service.CoalPayService;
+import com.gkhy.exam.pay.service.CoalPayStudentService;
+import com.ruoyi.common.constant.ResultConstants;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.exception.BusinessException;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.system.mapper.SysDeptMapper;
+import javafx.print.Collation;
+import org.aspectj.weaver.loadtime.Aj;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+public class CoalPayServiceImpl extends ServiceImpl<CoalPayMapper, CoalPay> implements CoalPayService {
+
+ @Resource
+ private CoalPayMapper coalPayMapper;
+ @Resource
+ private CoalPayCategoryMapper coalPayCategoryMapper;
+ @Resource
+ private SysDeptMapper sysDeptMapper;
+
+ @Resource
+ private CoalCategoryMapper coalCategoryMapper;
+ @Autowired
+ private CoalPayStudentService coalPayStudentService;
+
+
+ /**
+ * 缴费管理列表
+ * @param coalPay
+ * @return
+ */
+ @Override
+ public List<CoalPayRepDto> selectCoalPayList(CoalPayReq coalPay) {
+ List<CoalPayRepDto> coalPayRepDtos = new ArrayList<>();
+ List<CoalPay> coalPays = coalPayMapper.selectCoalPayList(coalPay);
+ for (CoalPay pay : coalPays) {
+ CoalPayRepDto coalPayRepDto = new CoalPayRepDto();
+ BeanUtils.copyProperties(pay,coalPayRepDto);
+ //部门数据
+ SysDept sysDept = sysDeptMapper.selectDeptById(pay.getDeptId());
+ coalPayRepDto.setDeptName(sysDept.getDeptName());
+ //工种数据
+ List<CoalCategory> coalCategories = coalCategoryMapper.selectByCoalPayId(pay.getId());
+ coalPayRepDto.setCoalCategoryList(coalCategories);
+ //学员数据
+ List<CoalPayStudent> coalPayStudents = coalPayStudentService.selectByCoalPayId(pay.getId());
+ List<CoalPayStudent> havePay = coalPayStudents.stream()
+ .filter(stu -> stu.getPayStatus() != null && stu.getPayStatus().equals(1))
+ .collect(Collectors.toList());
+ coalPayRepDto.setTotalNum(coalPayStudents.size());
+ coalPayRepDto.setHavePayNum(havePay.size());
+ coalPayRepDtos.add(coalPayRepDto);
+ }
+ return coalPayRepDtos;
+ }
+
+ @Override
+ public CoalPayRepDto selectCoalPayById(Long id) {
+
+ CoalPayRepDto coalPayRepDto = new CoalPayRepDto();
+
+ //基本数据
+ CoalPay coalPay = coalPayMapper.selectById(id);
+ BeanUtils.copyProperties(coalPay,coalPayRepDto);
+ //考点名称
+ SysDept sysDept = sysDeptMapper.selectDeptById(coalPay.getDeptId());
+ coalPayRepDto.setDeptName(sysDept.getDeptName());
+ //工种类别
+ List<CoalCategory> coalCategories = coalCategoryMapper.selectByCoalPayId(coalPay.getId());
+ coalPayRepDto.setCoalCategoryList(coalCategories);
+
+ //学员数据
+ List<CoalPayStudent> coalPayStudents = coalPayStudentService.selectByCoalPayId(id);
+ List<CoalPayStudent> havePay = coalPayStudents.stream()
+ .filter(stu -> stu.getPayStatus() != null && stu.getPayStatus().equals(0))
+ .collect(Collectors.toList());
+ coalPayRepDto.setTotalNum(coalPayStudents.size());
+ coalPayRepDto.setHavePayNum(havePay.size());
+
+ return coalPayRepDto;
+ }
+
+ @Override
+ public int insertCoalPay(CoalPayDto coalPayDto) {
+ CoalPay coalPay = new CoalPay();
+ BeanUtils.copyProperties(coalPayDto,coalPay);
+ coalPay.setCreateBy(SecurityUtils.getUsername());
+ coalPay.setCreateTime(new Date());
+ int insert = coalPayMapper.insertBath(coalPay);
+ if (CollectionUtils.isEmpty(coalPayDto.getCoalPayCategoryies())){
+ throw new BusinessException(this.getClass(),ResultConstants.BUSINESS_ERROR,"工种类别不能为空");
+ }
+ List<CoalPayCategory> coalPayCategories = coalPayDto.getCoalPayCategoryies();
+ for (CoalPayCategory coalPayCategory : coalPayCategories) {
+ coalPayCategory.setCoalPayId(coalPay.getId());
+ coalPayCategoryMapper.insert(coalPayCategory);
+ }
+ return insert;
+ }
+
+ /**
+ * 修改缴费信息
+ * @param coalPayDto
+ * @return
+ */
+ @Override
+ public int updateCoalPay(CoalPayDto coalPayDto) {
+ CoalPay coalPay = new CoalPay();
+ BeanUtils.copyProperties(coalPayDto,coalPay);
+ coalPay.setUpdateBy(SecurityUtils.getUsername());
+ coalPay.setUpdateTime(new Date());
+ int i = coalPayMapper.updateCoalPayById(coalPay);
+ int update = coalPayCategoryMapper.deleteByCoalPayId(coalPayDto.getId());
+ if (update>0){
+ List<CoalPayCategory> coalPayCategories = coalPayDto.getCoalPayCategoryies();
+ for (CoalPayCategory coalPayCategory : coalPayCategories) {
+ coalPayCategory.setCoalPayId(coalPay.getId());
+ coalPayCategoryMapper.insert(coalPayCategory);
+ }
+ }
+ return i;
+ }
+
+ @Override
+ public AjaxResult deleteCoalPayByIds(Long[] ids) {
+ for (Long id : ids) {
+ List<CoalPayStudent> coalPayStudents = coalPayStudentService.selectByCoalPayIdAndPayStatus(id,1);
+ if (!CollectionUtils.isEmpty(coalPayStudents)){
+ throw new BusinessException(this.getClass(), ResultConstants.BUSINESS_ERROR,"已有学员完成缴费,请勿删除");
+ }
+ }
+ int i = coalPayMapper.updateByIds(ids);
+ if (i>0){
+ return AjaxResult.success();
+ }
+ return AjaxResult.error();
+ }
+
+ //个人查询缴费
+ @Override
+ public List<CoalPayStudentRep> selectCoalPay(CoalPayStudentReq coalPayStudent) {
+ //查询个人需要缴费
+ List<CoalPayStudent> coalPayStudents = coalPayStudentService.selectbyIdcard(coalPayStudent);
+ List<CoalPayStudentRep> coalPayStudentReps = new ArrayList<>();
+ for (CoalPayStudent payStudent : coalPayStudents) {
+ //封装学生基础信息
+ CoalPayStudentRep coalPayStudentRep = new CoalPayStudentRep();
+ coalPayStudentRep.setName(payStudent.getName());
+ coalPayStudentRep.setIdCard(payStudent.getIdCard());
+ coalPayStudentRep.setPhone(payStudent.getPhone());
+ coalPayStudentRep.setSex(payStudent.getSex());
+ coalPayStudentRep.setPayStatus(payStudent.getPayStatus());
+
+ //查询对应批次以及批次包含工种类别
+ CoalPay coalPay = coalPayMapper.selectById(payStudent.getCoalPayId());
+ CoalPayRepDto coalPayRepDto = new CoalPayRepDto();
+ BeanUtils.copyProperties(coalPay,coalPayRepDto);
+ //考点名称
+ SysDept sysDept = sysDeptMapper.selectDeptById(coalPay.getDeptId());
+ coalPayRepDto.setDeptName(sysDept.getDeptName());
+ //查询批次对应工种类别
+ List<CoalCategory> coalCategories = coalCategoryMapper.selectByCoalPayId(payStudent.getCoalPayId());
+ coalPayRepDto.setCoalCategoryList(coalCategories);
+ coalPayStudentRep.setCoalPays(coalPayRepDto);
+ coalPayStudentReps.add(coalPayStudentRep);
+ }
+ return coalPayStudentReps;
+ }
+
+ @Override
+ public int updateCoalPayType(CoalPayTypeReq coalPayTypeReq) {
+ CoalPay byId = coalPayMapper.selectById(coalPayTypeReq.getCoalPayId());
+ if (coalPayTypeReq.getPayPersonType() != null && byId.getPayPersonType() == 2){
+ throw new BusinessException(this.getClass(),ResultConstants.BUSINESS_ERROR,"已为团体缴费,不可更改");
+ }
+ return coalPayMapper.updateByPayId(coalPayTypeReq);
+ }
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayStudentServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayStudentServiceImpl.java
new file mode 100644
index 0000000..52d6633
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/service/impl/CoalPayStudentServiceImpl.java
@@ -0,0 +1,144 @@
+package com.gkhy.exam.pay.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gkhy.exam.pay.dto.req.CoalPayStudentReq;
+import com.gkhy.exam.pay.entity.CoalPayStudent;
+import com.gkhy.exam.pay.mapper.CoalPayStudentMapper;
+import com.gkhy.exam.pay.service.CoalPayStudentService;
+import com.ruoyi.common.constant.ResultConstants;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.exception.BusinessException;
+import com.ruoyi.common.utils.SecurityUtils;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.usermodel.WorkbookFactory;
+import org.aspectj.weaver.loadtime.Aj;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+public class CoalPayStudentServiceImpl extends ServiceImpl<CoalPayStudentMapper, CoalPayStudent> implements CoalPayStudentService {
+
+ @Resource
+ private CoalPayStudentMapper coalPayStudentMapper;
+
+
+ @Override
+ public List<CoalPayStudent> selectCoalPayStudentList(Long coalPayId) {
+ return coalPayStudentMapper.selectByCoalPayId(coalPayId);
+ }
+
+ @Override
+ public AjaxResult updateByCoalPayStudent(CoalPayStudent coalPayStudent) {
+ CoalPayStudent payStudent = coalPayStudentMapper.selectById(coalPayStudent.getId());
+ if(payStudent==null){
+ throw new BusinessException(this.getClass(),ResultConstants.BUSINESS_ERROR,"学生不存在");
+ }
+ if (payStudent.getPayStatus()==1){
+ throw new BusinessException(this.getClass(),ResultConstants.BUSINESS_ERROR,"学生已完成缴费,不可修改");
+ }
+ coalPayStudent.setUpdateBy(SecurityUtils.getUsername());
+ coalPayStudent.setUpdateTime(new Date());
+ int i = coalPayStudentMapper.updateCoalPayStudentById(coalPayStudent);
+ if (i>0){
+ return AjaxResult.success();
+ }
+ return AjaxResult.error();
+ }
+
+ @Override
+ public int insertStudent(CoalPayStudent coalPayStudent) {
+ coalPayStudent.setCreateBy(SecurityUtils.getUsername());
+ coalPayStudent.setCreateTime(new Date());
+ return coalPayStudentMapper.insertCoalPayStudent(coalPayStudent);
+ }
+
+ @Override
+ public int deleteStudent(Long[] ids) {
+ List<CoalPayStudent> coalPayStudents = coalPayStudentMapper.selectByIds(ids);
+ List<CoalPayStudent> collect = coalPayStudents.stream().filter(cps -> cps.getPayStatus().equals(1)).collect(Collectors.toList());
+ if (!CollectionUtils.isEmpty(collect)){
+ throw new BusinessException(this.getClass(),ResultConstants.BUSINESS_ERROR,"学生已完成缴费,请勿删除");
+ }
+ return coalPayStudentMapper.updateByIds(ids);
+ }
+
+ /**
+ * 导入学生
+ * @param file
+ * @param coalPayId
+ * @return
+ * @throws IOException
+ */
+ @Override
+ public AjaxResult uploadStudent(MultipartFile file,Long coalPayId) throws IOException {
+ Workbook workbook = WorkbookFactory.create(file.getInputStream());
+
+ List<CoalPayStudent> coalPayStudents = new ArrayList<>();
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ try {
+ Sheet sheetAt = workbook.getSheetAt(0);
+ for (int i = 0; i < sheetAt.getLastRowNum(); i++) {
+ Row row = sheetAt.getRow(i + 1);
+ CoalPayStudent coalPayStudent = new CoalPayStudent();
+ coalPayStudent.setCoalPayId(coalPayId);
+ if (row!=null){
+ coalPayStudent.setName(row.getCell(0).getStringCellValue());
+ coalPayStudent.setIdCard(row.getCell(1).getStringCellValue());
+ coalPayStudent.setPhone(row.getCell(2).getStringCellValue());
+ String stringCellValue = row.getCell(3).getStringCellValue();
+ if (stringCellValue.equals("男")){
+ coalPayStudent.setSex(0L);
+ }else if (stringCellValue.equals("女")){
+ coalPayStudent.setSex(1L);
+ }
+ coalPayStudent.setPayStatus(0L);
+ coalPayStudent.setCreateBy(loginUser.getUsername());
+ coalPayStudent.setCreateTime(new Date());
+ coalPayStudents.add(coalPayStudent);
+ }
+ }
+ // 根据身份证号去重
+ List<CoalPayStudent> distinctStudents = coalPayStudents.stream()
+ .collect(Collectors.toMap(
+ CoalPayStudent::getIdCard, // 使用身份证号作为键
+ student -> student, // 使用学生对象作为值
+ (existing, replacement) -> existing // 如果键重复,选择保留第一个
+ ))
+ .values()
+ .stream()
+ .collect(Collectors.toList());
+ for (CoalPayStudent coalPayStudent : distinctStudents) {
+ coalPayStudentMapper.insert(coalPayStudent);
+ }
+ return AjaxResult.success();
+ }finally {
+ workbook.close();
+ }
+ }
+
+ @Override
+ public List<CoalPayStudent> selectByCoalPayId(Long id) {
+ return coalPayStudentMapper.selectByCoalPayId(id);
+ }
+
+ @Override
+ public List<CoalPayStudent> selectByCoalPayIdAndPayStatus(Long id, int status) {
+ return coalPayStudentMapper.selectByCoalPayIdAndPayStatus(id,status);
+ }
+
+ @Override
+ public List<CoalPayStudent> selectbyIdcard(CoalPayStudentReq coalPayStudent) {
+ return coalPayStudentMapper.selectByIdcard(coalPayStudent);
+ }
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/utils/HttpResultVo.java b/exam-system/src/main/java/com/gkhy/exam/pay/utils/HttpResultVo.java
new file mode 100644
index 0000000..11b1cc0
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/utils/HttpResultVo.java
@@ -0,0 +1,17 @@
+package com.gkhy.exam.pay.utils;
+
+import lombok.Data;
+import org.apache.http.Header;
+
+@Data
+public class HttpResultVo {
+
+
+ private Integer statusCode;
+ private String contentType;
+ private boolean textType;
+ private String stringContent;
+ private byte[] byteArrayContent;
+ private Header[] headers;
+
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/utils/PayUtils.java b/exam-system/src/main/java/com/gkhy/exam/pay/utils/PayUtils.java
new file mode 100644
index 0000000..b994838
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/utils/PayUtils.java
@@ -0,0 +1,215 @@
+package com.gkhy.exam.pay.utils;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.gkhy.exam.pay.entity.PayReqData;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.NameValuePair;
+import org.apache.http.StatusLine;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.HttpResponseException;
+import org.apache.http.client.ResponseHandler;
+import org.apache.http.client.config.AuthSchemes;
+import org.apache.http.client.config.CookieSpecs;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.config.Registry;
+import org.apache.http.config.RegistryBuilder;
+import org.apache.http.conn.socket.ConnectionSocketFactory;
+import org.apache.http.conn.socket.PlainConnectionSocketFactory;
+import org.apache.http.conn.ssl.NoopHostnameVerifier;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.entity.ContentType;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.util.EntityUtils;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.X509Certificate;
+import java.util.*;
+
+/**
+ * 缴费相关接口
+ */
+public class PayUtils {
+
+ public static ResultVo sendApiPost(PayReqData payReqData) throws IOException {
+
+ //正式
+ String proUrl="http://finpt.xjcz.gov.cn/fs-service/fs-pay/invoice.do";
+ String appid="ED76A5F1703540BE977D34780B371FEB";
+ //测试
+ String testUrl= "http://finpt.xjcz.gov.cn/fs-service-test/fs-pay/invoice.do";
+
+ Map<String, String> param = new HashMap<>();
+
+ HttpPost httpPost = new HttpPost(testUrl);
+
+ //请求参数转为json格式base64编码
+ String reqData = Base64.getEncoder().encodeToString(JSONObject.toJSONString(payReqData).getBytes());
+ String mac = appid+"||"+reqData;
+ mac = DigestUtils.md5Hex(mac.getBytes());
+ param.put("appid",appid);
+ param.put("reqdata",reqData);
+ param.put("mac",mac);
+
+ httpPost.setEntity(assemblyFormEntity(param,"utf-8"));
+ HttpClient httpClient = getHttpClient(testUrl);
+ HttpResultVo execute = httpClient.execute(httpPost, getResponseHandler());
+ String stringContent = execute.getStringContent();
+ ResultVo resultVo = JSONObject.parseObject(stringContent, ResultVo.class);
+ return resultVo;
+ }
+
+ private static UrlEncodedFormEntity assemblyFormEntity(Map<String, String> parameters, String charset) {
+ List<NameValuePair> formParameters = assemblyParameter(parameters);
+ UrlEncodedFormEntity formEntity = null;
+ try {
+ if (charset != null) {
+ formEntity = new UrlEncodedFormEntity(formParameters, charset);
+ } else {
+ formEntity = new UrlEncodedFormEntity(formParameters);
+ }
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
+ return formEntity;
+ }
+
+ private static List<NameValuePair> assemblyParameter(Map<String, String> parameters) {
+ List<NameValuePair> allParameter = new ArrayList<>();
+ if (parameters != null && !parameters.isEmpty()) {
+ for (String name : parameters.keySet()) {
+ NameValuePair parameter = new BasicNameValuePair(name, parameters.get(name));
+ allParameter.add(parameter);
+ }
+ }
+ return allParameter;
+ }
+
+ public static HttpClient getHttpClient(String url) {
+ // 判断https访问
+ if (url.startsWith("https")) {
+ return sslClient();
+ }
+ return HttpClients.createDefault();
+
+ }
+
+ private static HttpClient sslClient() {
+ try {
+ // 在调用SSL之前需要重写验证方法,取消检测SSL
+ X509TrustManager trustManager = new X509TrustManager() {
+ @Override
+ public X509Certificate[] getAcceptedIssuers() {
+ return null;
+ }
+
+ @Override
+ public void checkClientTrusted(X509Certificate[] xcs, String str) {}
+
+ @Override
+ public void checkServerTrusted(X509Certificate[] xcs, String str) {}
+ };
+ SSLContext ctx = SSLContext.getInstance(SSLConnectionSocketFactory.TLS);
+ ctx.init(null, new TrustManager[] {trustManager}, null);
+ SSLConnectionSocketFactory socketFactory =
+ new SSLConnectionSocketFactory(ctx, NoopHostnameVerifier.INSTANCE);
+ // 创建Registry
+ RequestConfig requestConfig =
+ RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARD_STRICT).setExpectContinueEnabled(Boolean.TRUE)
+ .setTargetPreferredAuthSchemes(Arrays.asList(AuthSchemes.NTLM, AuthSchemes.DIGEST))
+ .setProxyPreferredAuthSchemes(Arrays.asList(AuthSchemes.BASIC)).build();
+ Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()
+ .register("http", PlainConnectionSocketFactory.INSTANCE).register("https", socketFactory).build();
+ // 创建ConnectionManager,添加Connection配置信息
+ PoolingHttpClientConnectionManager connectionManager =
+ new PoolingHttpClientConnectionManager(socketFactoryRegistry);
+ CloseableHttpClient closeableHttpClient = HttpClients.custom().setConnectionManager(connectionManager)
+ .setDefaultRequestConfig(requestConfig).build();
+ return closeableHttpClient;
+ } catch (KeyManagementException ex) {
+ throw new RuntimeException(ex);
+ } catch (NoSuchAlgorithmException ex) {
+ throw new RuntimeException(ex);
+ }
+
+ }
+
+ private static ResponseHandler<HttpResultVo> getResponseHandler() {
+ ResponseHandler<HttpResultVo> responseHandler = new ResponseHandler<HttpResultVo>() {
+ @Override
+ public HttpResultVo handleResponse(HttpResponse httpResponse) throws ClientProtocolException, IOException {
+ if (httpResponse == null) {
+ throw new ClientProtocolException("HttpResponse is null");
+ }
+
+ StatusLine statusLine = httpResponse.getStatusLine();
+ HttpEntity httpEntity = httpResponse.getEntity();
+ if (statusLine == null) {
+ throw new ClientProtocolException("HttpResponse contains no StatusLine");
+ }
+ if (statusLine.getStatusCode() != 200) {
+ throw new HttpResponseException(statusLine.getStatusCode(), statusLine.getReasonPhrase());
+ }
+ if (httpEntity == null) {
+ throw new ClientProtocolException("HttpResponse contains no HttpEntity");
+ }
+
+ HttpResultVo httpResult = new HttpResultVo();
+ httpResult.setStatusCode(statusLine.getStatusCode());
+ ContentType contentType = ContentType.getOrDefault(httpEntity);
+ httpResult.setContentType(contentType.toString());
+ boolean isTextType = isTextType(contentType);
+ httpResult.setTextType(isTextType);
+ if (isTextType) {
+ httpResult.setStringContent(EntityUtils.toString(httpEntity));
+ } else {
+ httpResult.setByteArrayContent(EntityUtils.toByteArray(httpEntity));
+ }
+
+ httpResult.setHeaders(httpResponse.getAllHeaders());
+
+ return httpResult;
+ }
+ };
+ return responseHandler;
+ }
+
+ private static boolean isTextType(ContentType contentType) {
+ if (contentType == null) {
+ throw new RuntimeException("ContentType is null");
+ }
+ if (contentType.getMimeType().startsWith("text")) {
+ return true;
+ } else if (contentType.getMimeType().startsWith("image")) {
+ return false;
+ } else if (contentType.getMimeType().startsWith("application")) {
+ if (contentType.getMimeType().contains("json") || contentType.getMimeType().contains("xml")) {
+ return true;
+ } else {
+ return false;
+ }
+ } else if (contentType.getMimeType().startsWith("multipart")) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+
+
+
+
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/pay/utils/ResultVo.java b/exam-system/src/main/java/com/gkhy/exam/pay/utils/ResultVo.java
new file mode 100644
index 0000000..ec8bad8
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/pay/utils/ResultVo.java
@@ -0,0 +1,18 @@
+package com.gkhy.exam.pay.utils;
+
+import lombok.Data;
+
+@Data
+public class ResultVo {
+ private String respcode;
+ private String respmsg;
+ private Respdata respdata;
+
+ @Data
+ public class Respdata{
+ private String orderNo;
+ private String billNo;
+ private String orderId;
+ private String fileData;
+ }
+}
diff --git a/exam-system/src/main/resources/mapper/pay/CoalCategoryMapper.xml b/exam-system/src/main/resources/mapper/pay/CoalCategoryMapper.xml
new file mode 100644
index 0000000..217268b
--- /dev/null
+++ b/exam-system/src/main/resources/mapper/pay/CoalCategoryMapper.xml
@@ -0,0 +1,141 @@
+<?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.CoalCategoryMapper">
+
+ <resultMap type="CoalCategory" id="CoalCategoryResult">
+ <result property="id" column="id"/>
+ <result property="categoryType" column="category_type"/>
+ <result property="subjectName" column="subject_name"/>
+ <result property="amount" column="amount"/>
+ <result property="businessCode" column="business_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="selectCoalCategoryVo">
+ select id,
+ category_type,
+ subject_name,
+ amount,
+ business_code,
+ `describe`, update_by, update_time, create_by, create_time
+ from coal_category
+ </sql>
+ <insert id="insertCoalCategory">
+ insert into coal_category
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="categoryType != null">category_type,</if>
+ <if test="subjectName != null and subjectName != ''">subject_name,</if>
+ <if test="amount != null">amount,</if>
+ <if test="businessCode!=null">business_code,</if>
+ <if test="describe != null">`describe`,</if>
+ <if test="createBy != null">create_by,</if>
+ <if test="createTime != null">create_time,</if>
+ <if test="updateBy != null">update_by,</if>
+ <if test="updateTime != null">update_time,</if>
+ <if test="delFlag != null">del_flag,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="categoryType != null">#{categoryType},</if>
+ <if test="subjectName != null and subjectName != ''">#{subjectName},</if>
+ <if test="amount != null">#{amount},</if>
+ <if test="businessCode!=null">#{businessCode},</if>
+ <if test="describe != null">#{describe},</if>
+ <if test="createBy != null">#{createBy},</if>
+ <if test="createTime != null">#{createTime},</if>
+ <if test="updateBy != null">#{updateBy},</if>
+ <if test="updateTime != null">#{updateTime},</if>
+ <if test="delFlag != null">#{delFlag},</if>
+ </trim>
+ </insert>
+ <insert id="saveCoalTicket">
+ INSERT INTO `swspkmas`.`coal_ticket`
+ ( `ticket_company_name`, `ticket_company_code`, `drawer`, `check`, `company_code` )
+ VALUES
+ ( #{ticketCompanyName}, #{ticketCompanyCode}, #{drawer}, #{check}, #{companyCode} )
+ </insert>
+
+ <update id="updateBatchByIds">
+ update coal_category set del_flag = 2 where id in
+ <foreach item="id" collection="array" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </update>
+ <update id="updateCategoryById">
+ update coal_category
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="categoryType != null">category_type = #{categoryType},</if>
+ <if test="subjectName != null and subjectName != ''">subject_name = #{subjectName},</if>
+ <if test="amount != null">amount = #{amount},</if>
+ <if test="businessCode!=null">business_code = #{businessCode},</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>
+ <update id="updateCoalTicket">
+ update coal_ticket
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="ticketCompanyName != null">ticket_company_name = #{ticketCompanyName},</if>
+ <if test="ticketCompanyCode != null and ticketCompanyCode != ''">ticket_company_code = #{ticketCompanyCode},</if>
+ <if test="drawer != null">drawer = #{drawer},</if>
+ <if test="check!=null">`check` = #{check},</if>
+ <if test="companyCode != null">company_code = #{companyCode},</if>
+ </trim>
+ </update>
+
+ <select id="selectCoalCategoryList" parameterType="CoalCategory" resultMap="CoalCategoryResult">
+ <include refid="selectCoalCategoryVo"/>
+ <where>
+ <if test="categoryType != null ">and category_type = #{categoryType}</if>
+ <if test="subjectName != null and subjectName != ''">and subject_name like concat('%', #{subjectName},
+ '%')
+ </if>
+ <if test="amount != null ">and amount = #{amount}</if>
+ and del_flag = 0
+ order by create_time desc
+ </where>
+ </select>
+
+ <select id="selectByCoalCategory" resultType="java.lang.Integer">
+ select count(id)
+ from coal_category
+ <where>
+ del_flag = 0
+ and category_type = #{categoryType}
+ and subject_name = #{subjectName}
+ <if test="id!=null and id!=''">
+ and id != #{id}
+ </if>
+ </where>
+
+ </select>
+
+ <select id="selectByCoalPayId" resultMap="CoalCategoryResult">
+ SELECT
+ cc.id,
+ cc.category_type,
+ cc.subject_name,
+ cc.amount,
+ cc.business_code,
+ cc.`describe`
+ FROM
+ coal_category cc
+ LEFT JOIN coal_pay_category cpc ON cc.id = cpc.coal_category_id
+ WHERE
+ cpc.coal_pay_id = #{id} and cpc.del_flag = 0
+ </select>
+ <select id="selectCoalTicket" resultType="com.gkhy.exam.pay.entity.CoalTicket">
+ select id , ticket_company_name,ticket_company_code,drawer,`check`,company_code from coal_ticket
+ </select>
+
+</mapper>
\ No newline at end of file
diff --git a/exam-system/src/main/resources/mapper/pay/CoalPayCategoryMapper.xml b/exam-system/src/main/resources/mapper/pay/CoalPayCategoryMapper.xml
new file mode 100644
index 0000000..37e8777
--- /dev/null
+++ b/exam-system/src/main/resources/mapper/pay/CoalPayCategoryMapper.xml
@@ -0,0 +1,37 @@
+<?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.CoalPayCategoryMapper">
+
+ <resultMap type="CoalPayCategory" id="CoalPayCategoryResult">
+ <result property="id" column="id"/>
+ <result property="coalPayId" column="coal_pay_id"/>
+ <result property="coalCategoryId" column="coal_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="selectCoalPayCategoryVo">
+ select id,
+ coal_pay_id,
+ coal_category_id,
+ category_type,
+ update_by,
+ update_time,
+ create_by,
+ create_time,
+ del_flag
+ from coal_pay_category
+ </sql>
+ <delete id="deleteByCoalPayId">
+ update coal_pay_category
+ set del_flag = 2
+ where coal_pay_id = #{id}
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/exam-system/src/main/resources/mapper/pay/CoalPayMapper.xml b/exam-system/src/main/resources/mapper/pay/CoalPayMapper.xml
new file mode 100644
index 0000000..bf3fbd5
--- /dev/null
+++ b/exam-system/src/main/resources/mapper/pay/CoalPayMapper.xml
@@ -0,0 +1,126 @@
+<?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.CoalPayMapper">
+
+ <resultMap type="CoalPay" id="CoalPayResult">
+ <result property="id" column="id" />
+ <result property="batchName" column="batch_name" />
+ <result property="deptId" column="dept_id" />
+ <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="selectCoalPayVo">
+ select id,
+ batch_name,
+ dept_id,
+ 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 coal_pay
+ </sql>
+
+ <insert id="insertBath" parameterType="CoalPay" useGeneratedKeys="true" keyProperty="id">
+ insert into coal_pay
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="batchName != null and batchName != ''">batch_name,</if>
+ <if test="deptId != null">dept_id,</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="createBy != null">create_by,</if>
+ <if test="createTime != null">create_time,</if>
+ <if test="updateBy != null and updateBy != ''">update_by,</if>
+ <if test="updateTime != null">update_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="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="createBy != null">#{createBy},</if>
+ <if test="createTime != null">#{createTime},</if>
+ <if test="updateBy != null and updateBy != ''">#{updateBy},</if>
+ <if test="updateTime != null">#{updateTime},</if>
+ <if test="delFlag != null">#{delFlag},</if>
+ </trim>
+ </insert>
+
+ <update id="updateByIds">
+ update coal_pay set del_flag=2 where id in
+ <foreach item="id" collection="array" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </update>
+
+ <update id="updateByPayId">
+ update coal_pay
+ <trim prefix="SET" suffixOverrides=",">
+ <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>
+ </trim>
+ where id = #{coalPayId}
+ </update>
+ <update id="updateCoalPayById">
+ update 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="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>
+
+
+ <select id="selectCoalPayList" parameterType="CoalPay" resultMap="CoalPayResult">
+ <include refid="selectCoalPayVo"/>
+ <where>
+ <if test="deptId != null ">
+ and dept_id = #{deptId}
+ </if>
+ <if test="minDate !=null">
+ and create_time >= #{minDate}
+ </if>
+ <if test="maxDate != null">
+ and create_time <= #{maxDate}
+ </if>
+ and del_flag = 0
+ order by create_time desc
+ </where>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/exam-system/src/main/resources/mapper/pay/CoalPayStudentMapper.xml b/exam-system/src/main/resources/mapper/pay/CoalPayStudentMapper.xml
new file mode 100644
index 0000000..e7185fe
--- /dev/null
+++ b/exam-system/src/main/resources/mapper/pay/CoalPayStudentMapper.xml
@@ -0,0 +1,104 @@
+<?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.CoalPayStudentMapper">
+ <sql id="selectCoalPayStudentVo">
+ select id, coal_pay_id, name, id_card, phone, sex, pay_code, pay_status,pay_type,order_id,file_data,gov_pay_status, update_by, update_time, create_by, create_time, del_flag from coal_pay_student
+ </sql>
+ <insert id="insertCoalPayStudent">
+ insert into coal_pay_student
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="id != null">id,</if>
+ <if test="coalPayId != null">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="payType != null">pay_type,</if>
+ <if test="orderId!=null">order_id,</if>
+ <if test="fileData!=null">file_data,</if>
+ <if test="govPayStatus!=null">gov_pay_status,</if>
+ <if test="createBy != null">create_by,</if>
+ <if test="createTime != null">create_time,</if>
+ <if test="updateBy != null">update_by,</if>
+ <if test="updateTime != null">update_time,</if>
+ <if test="delFlag != null">del_flag,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="id != null">#{id},</if>
+ <if test="coalPayId != null">#{coalPayId},</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="payType != null">#{payType},</if>
+ <if test="orderId!=null">#{orderId},</if>
+ <if test="fileData!=null">#{fileData},</if>
+ <if test="govPayStatus!=null">#{govPayStatus},</if>
+ <if test="createBy != null">#{createBy},</if>
+ <if test="createTime != null">#{createTime},</if>
+ <if test="updateBy != null">#{updateBy},</if>
+ <if test="updateTime != null">#{updateTime},</if>
+ <if test="delFlag != null">#{delFlag},</if>
+ </trim>
+ </insert>
+
+ <update id="updateByIds">
+ update coal_pay_student set del_flag = 2 where id in
+ <foreach item="id" collection="array" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </update>
+ <update id="updateCoalPayStudentById">
+ update coal_pay_student
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="coalPayId != null">coal_pay_id = #{coalPayId},</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="payType != null">pay_type = #{payType},</if>
+ <if test="payCode != null">pay_code = #{payCode},</if>
+ <if test="payStatus != null">pay_status = #{payStatus},</if>
+ <if test="orderId!=null">order_id=#{orderId},</if>
+ <if test="fileData!=null">file_data=#{fileData},</if>
+ <if test="govPayStatus!=null">gov_pay_status=#{govPayStatus},</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="selectByCoalPayId" resultType="com.gkhy.exam.pay.entity.CoalPayStudent">
+ <include refid="selectCoalPayStudentVo"></include>
+ where coal_pay_id = #{coalPayId}
+ and del_flag =0
+ </select>
+
+ <select id="selectByCoalPayIdAndPayStatus" resultType="com.gkhy.exam.pay.entity.CoalPayStudent">
+ <include refid="selectCoalPayStudentVo"></include>
+ where coal_pay_id = #{id} and pay_status = #{status}
+ and del_flag =0
+ </select>
+
+ <select id="selectByIds" resultType="com.gkhy.exam.pay.entity.CoalPayStudent">
+ <include refid="selectCoalPayStudentVo"></include>
+ where id in
+ <foreach item="id" collection="array" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </select>
+
+ <select id="selectByIdcard" resultType="com.gkhy.exam.pay.entity.CoalPayStudent">
+ <include refid="selectCoalPayStudentVo"></include>
+ where id_card=#{idCard} and phone=#{phone} and del_flag = 0
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/exam-system/src/test/java/TextPay.java b/exam-system/src/test/java/TextPay.java
new file mode 100644
index 0000000..5e8fda3
--- /dev/null
+++ b/exam-system/src/test/java/TextPay.java
@@ -0,0 +1,58 @@
+import com.gkhy.exam.pay.entity.PayReqData;
+import com.gkhy.exam.pay.utils.PayUtils;
+import com.gkhy.exam.pay.utils.ResultVo;
+import com.ruoyi.common.utils.uuid.UUID;
+import lombok.extern.log4j.Log4j2;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+@SpringBootTest(classes = TextPay.class)
+@ActiveProfiles("dev")
+@Log4j2
+public class TextPay {
+
+
+ @Test
+ public void paytext() throws IOException {
+
+
+ PayReqData payReqData = new PayReqData();
+ PayReqData.Feedata feedatas = new PayReqData.Feedata();
+
+ payReqData.setDesc("安全技术考试考务费_煤矿安全作业-001504");
+ payReqData.setOrderNo("10000000001");
+ payReqData.setMoney(BigDecimal.valueOf(103));
+ payReqData.setAmount(1);
+ payReqData.setPayerName("测试");
+ payReqData.setCertNo("411381199801093991");
+ payReqData.setPayerType(1);
+ payReqData.setInvoiceSocialCode("11650000MB1957293J");
+ payReqData.setHandlingPerson("张三");
+ payReqData.setChecker("李四");
+ payReqData.setEnterCode("680534083");
+
+ List<PayReqData.Feedata> feedatas1 = new ArrayList<>();
+ feedatas.setAmount(1);
+ feedatas.setBusCode("DZ001504");
+ feedatas.setPrice(BigDecimal.valueOf(103));
+ feedatas1.add(feedatas);
+ payReqData.setFeeDatas(feedatas1);
+
+
+ ResultVo resultVo = PayUtils.sendApiPost(payReqData);
+ System.out.printf("请求结果:"+resultVo);
+
+ }
+
+
+
+
+
+}
--
Gitblit v1.9.2