教育训练处考试制证系统后端
已修改7个文件
已添加45个文件
已删除1个文件
2535 ■■■■■ 文件已修改
exam-system/pom.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/ExamSiteController.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/TestDemoController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/TrainingInstitutionController.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/ViolationRegistrationController.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/WorkRegistrationController.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/entity/ExamSite.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/entity/TrainingInstitution.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/entity/ViolationRegistration.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/entity/WorkRegistration.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/mapper/ExamSiteMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/mapper/TrainingInstitutionMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/mapper/ViolationRegistrationMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/mapper/WorkRegistrationMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/addForm/ExamSiteAddForm.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/addForm/TrainingInstitutionAddForm.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/addForm/ViolationRegistrationAddForm.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/addForm/WorkRegistrationAddForm.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/modForm/ExamSiteModForm.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/modForm/TrainingInstitutionModForm.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/modForm/ViolationRegistrationModForm.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/modForm/WorkRegistrationModForm.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/query/ExamSiteQuery.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/query/TrainingInstitutionQuery.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/query/ViolationRegistrationQuery.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/query/WorkRegistrationQuery.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/vo/ExamSiteVO.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/vo/TrainingInstitutionVO.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/vo/ViolationRegistrationVO.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/vo/WorkRegistrationVO.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/ExamSiteService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/TrainingInstitutionService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/ViolationRegistrationService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/WorkRegistrationService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/impl/ExamSiteServiceImpl.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/impl/TrainingInstitutionServiceImpl.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/impl/ViolationRegistrationServiceImpl.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/impl/WorkRegistrationServiceImpl.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/resources/mapper/noncoalmine/ExamSiteMapper.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/resources/mapper/noncoalmine/TrainingInstitutionMapper.xml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/resources/mapper/noncoalmine/ViolationRegistrationMapper.xml 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/src/main/resources/mapper/noncoalmine/WorkRegistrationMapper.xml 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application.yml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/pom.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/signature/Signature.java 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/signature/Signature11.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/signature/SignatureUtils.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/signature/SkipHttpsUtils.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/signature/TokenUtils.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-file/src/main/java/com/ruoyi/file/service/AttachmentInfoService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-file/src/main/java/com/ruoyi/file/service/impl/AttachmentInfoServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
exam-system/pom.xml
@@ -24,6 +24,7 @@
            <groupId>com.ruoyi</groupId>
            <artifactId>ruoyi-file</artifactId>
        </dependency>
    </dependencies>
</project>
exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/ExamSiteController.java
对比新文件
@@ -0,0 +1,86 @@
package com.gkhy.exam.noncoalmine.controller;
import com.gkhy.exam.noncoalmine.model.addForm.ExamSiteAddForm;
import com.gkhy.exam.noncoalmine.model.modForm.ExamSiteModForm;
import com.gkhy.exam.noncoalmine.model.query.ExamSiteQuery;
import com.gkhy.exam.noncoalmine.service.ExamSiteService;
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.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
 * (ExamSite)表控制层
 *
 * @author makejava
 * @since 2023-09-13 16:11:04
 */
@RestController
@RequestMapping("exam/site")
public class ExamSiteController extends BaseController {
    /**
     * 服务对象
     */
    @Autowired
    private ExamSiteService examSiteService;
    /**
     * 分页查询所有数据
     *
     * @param query 查询实体
     * @return 所有数据
     */
    @GetMapping("page/list")
    public TableDataInfo listByPage(ExamSiteQuery query) {
        startPage();
        return getDataTable(this.examSiteService.listByPage(query));
    }
    /**
     * 通过主键查询单条数据
     *
     * @param siteId 主键
     * @return 单条数据
     */
    @GetMapping("{get/siteId}")
    public AjaxResult selectOne(@PathVariable Long siteId) {
        return success(this.examSiteService.getById(siteId));
    }
    /**
     * 新增数据
     *
     * @param addForm 实体对象
     * @return 新增结果
     */
    @PostMapping("add")
    public AjaxResult add(@Validated @RequestBody ExamSiteAddForm addForm) {
        return toAjax(this.examSiteService.add(addForm));
    }
    /**
     * 修改数据
     *
     * @param modForm 实体对象
     * @return 修改结果
     */
    @PutMapping("mod")
    public AjaxResult mod(@Validated @RequestBody ExamSiteModForm modForm) {
        return toAjax(this.examSiteService.mod(modForm));
    }
    /**
     * 删除数据
     *
     * @param siteIds 主键结合
     * @return 删除结果
     */
    @DeleteMapping("/del/batch/{siteIds}")
    public AjaxResult delete(@PathVariable("siteIds") List<Long> siteIds) {
        return toAjax(this.examSiteService.removeByIds(siteIds));
    }
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/TestDemoController.java
文件已删除
exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/TrainingInstitutionController.java
对比新文件
@@ -0,0 +1,94 @@
package com.gkhy.exam.noncoalmine.controller;
import com.gkhy.exam.noncoalmine.model.addForm.TrainingInstitutionAddForm;
import com.gkhy.exam.noncoalmine.model.modForm.TrainingInstitutionModForm;
import com.gkhy.exam.noncoalmine.model.query.TrainingInstitutionQuery;
import com.gkhy.exam.noncoalmine.service.TrainingInstitutionService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import org.aspectj.weaver.loadtime.Aj;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
 * (TrainingInstitution)表控制层
 *
 * @author makejava
 * @since 2023-09-13 16:12:31
 */
@RestController
@RequestMapping("training/institution")
public class TrainingInstitutionController extends BaseController {
    /**
     * 服务对象
     */
    @Autowired
    private TrainingInstitutionService trainingInstitutionService;
    /**
     * 分页查询所有数据
     *
     * @param query 查询实体
     * @return 所有数据
     */
    @GetMapping("page/list")
    public TableDataInfo listByPage(TrainingInstitutionQuery query) {
        startPage();
        return getDataTable(this.trainingInstitutionService.listByPage( query));
    }
    /**
     * 通过主键查询单条数据
     *
     * @param institutionId 主键
     * @return 单条数据
     */
    @GetMapping("get/{institutionId}")
    public AjaxResult selectOne(@PathVariable Long institutionId) {
        return success(this.trainingInstitutionService.getById(institutionId));
    }
    /**
     * 新增数据
     *
     * @param addForm 实体对象
     * @return 新增结果
     */
    @PostMapping("add")
    public AjaxResult add(@Validated @RequestBody TrainingInstitutionAddForm addForm) {
        return toAjax(this.trainingInstitutionService.add(addForm));
    }
    /**
     * 修改数据
     *
     * @param modForm 实体对象
     * @return 修改结果
     */
    @PutMapping("mod")
    public AjaxResult mod(@Validated @RequestBody TrainingInstitutionModForm modForm) {
        return toAjax(this.trainingInstitutionService.mod(modForm));
    }
    /**
     * 删除数据
     *
     * @param institutionIds 主键结合
     * @return 删除结果
     */
    @DeleteMapping("/del/batch/{institutionIds}")
    public AjaxResult delete(@PathVariable("institutionIds") List<Long> institutionIds) {
        return toAjax(this.trainingInstitutionService.removeByIds(institutionIds));
    }
    /**
     * 选择列表
     */
    @GetMapping("select")
    public AjaxResult selectList(TrainingInstitutionQuery query){
        return success(this.trainingInstitutionService.listByPage(query));
    }
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/ViolationRegistrationController.java
对比新文件
@@ -0,0 +1,88 @@
package com.gkhy.exam.noncoalmine.controller;
import com.gkhy.exam.noncoalmine.model.addForm.ViolationRegistrationAddForm;
import com.gkhy.exam.noncoalmine.model.modForm.ViolationRegistrationModForm;
import com.gkhy.exam.noncoalmine.model.query.ViolationRegistrationQuery;
import com.gkhy.exam.noncoalmine.service.ViolationRegistrationService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
 * (ViolationRegistration)表控制层
 *
 * @author makejava
 * @since 2023-09-11 16:59:05
 */
@RestController
@RequestMapping("violation/registration")
public class ViolationRegistrationController extends BaseController {
    /**
     * 服务对象
     */
    @Resource
    private ViolationRegistrationService violationRegistrationService;
    /**
     * 分页查询所有数据
     *
     * @param query 查询实体
     * @return 所有数据
     */
    @GetMapping("page/list")
    public TableDataInfo listByPage(ViolationRegistrationQuery query) {
        startPage();
        return getDataTable(this.violationRegistrationService.listByPage(query));
    }
    /**
     * 通过主键查询单条数据
     *
     * @param violationId 主键
     * @return 单条数据
     */
    @GetMapping("get/{violationId}")
    public AjaxResult selectOne(@PathVariable Long violationId) {
        return success(this.violationRegistrationService.getById(violationId));
    }
    /**
     * 新增数据
     *
     * @param addForm 实体对象
     * @return 新增结果
     */
    @PostMapping("add")
    public AjaxResult add(@Validated @RequestBody ViolationRegistrationAddForm addForm) {
        return toAjax(this.violationRegistrationService.add(addForm));
    }
    /**
     * 修改数据
     *
     * @param modForm 实体对象
     * @return 修改结果
     */
    @PutMapping("mod")
    public AjaxResult mod(@Validated @RequestBody ViolationRegistrationModForm modForm) {
        return toAjax(this.violationRegistrationService.mod(modForm));
    }
    /**
     * 删除数据
     *
     * @param violationIds 主键结合
     * @return 删除结果
     */
    @DeleteMapping("/del/batch/{violationIds}")
    public AjaxResult delete(@PathVariable("violationIds") List<Long> violationIds) {
        return success(this.violationRegistrationService.removeByIds(violationIds));
    }
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/WorkRegistrationController.java
对比新文件
@@ -0,0 +1,87 @@
package com.gkhy.exam.noncoalmine.controller;
import com.gkhy.exam.noncoalmine.model.addForm.WorkRegistrationAddForm;
import com.gkhy.exam.noncoalmine.model.modForm.WorkRegistrationModForm;
import com.gkhy.exam.noncoalmine.model.query.WorkRegistrationQuery;
import com.gkhy.exam.noncoalmine.service.WorkRegistrationService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
 * (WorkRegistration)表控制层
 *
 * @author makejava
 * @since 2023-09-11 16:59:58
 */
@RestController
@RequestMapping("work/registration")
public class WorkRegistrationController extends BaseController {
    /**
     * 服务对象
     */
    @Resource
    private WorkRegistrationService workRegistrationService;
    /**
     * 分页查询所有数据
     *
     * @param query 查询实体
     * @return 所有数据
     */
    @GetMapping("/list/page")
    public TableDataInfo listByPage(WorkRegistrationQuery query) {
        startPage();
        return getDataTable(this.workRegistrationService.listByPage(query));
    }
    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @GetMapping("get/{id}")
    public AjaxResult selectOne(@PathVariable Long id) {
        return success(this.workRegistrationService.getById(id));
    }
    /**
     * 新增数据
     *
     * @param addForm 实体对象
     * @return 新增结果
     */
    @PostMapping("add")
    public AjaxResult add(@Validated @RequestBody WorkRegistrationAddForm addForm) {
        return toAjax(this.workRegistrationService.add(addForm));
    }
    /**
     * 修改数据
     * @param modForm
     * @return
     */
    @PostMapping("mod")
    public AjaxResult mod(@Validated @RequestBody WorkRegistrationModForm modForm) {
        return toAjax(this.workRegistrationService.mod(modForm));
    }
    /**
     * 删除数据
     *
     * @param workIds 主键结合
     * @return 删除结果
     */
    @DeleteMapping("del/batch/{workIds}")
    public AjaxResult delete(@PathVariable List<Long> workIds) {
        return success(this.workRegistrationService.removeByIds(workIds));
    }
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/entity/ExamSite.java
对比新文件
@@ -0,0 +1,60 @@
package com.gkhy.exam.noncoalmine.entity;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
/**
 * (ExamSite)表实体类
 *
 * @author makejava
 * @since 2023-09-13 16:11:10
 */
@Data
public class ExamSite {
    @TableId(type = IdType.AUTO)
    private Long siteId;
    //地点名称
    private String siteName;
    //地区id
    private Long districtId;
    //地址
    private String address;
    //负责人
    private String header;
    //负责人电话
    private String hphone;
    //联系人
    private String contact;
    //联系人电话
    private String cphone;
    //备注
    private String remark;
    //机构ID
    private Long institutionId;
    //删除标识(0未删除,1删除)
    private Byte delFlag;
    //是否为煤矿:0为非,1是
    private Byte isCm;
    @TableField(fill = FieldFill.INSERT)
    private String createBy;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateBy;
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/entity/TrainingInstitution.java
对比新文件
@@ -0,0 +1,58 @@
package com.gkhy.exam.noncoalmine.entity;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
/**
 * (TrainingInstitution)表实体类
 *
 * @author makejava
 * @since 2023-09-13 16:12:31
 */
@Data
public class TrainingInstitution {
    @TableId(type = IdType.AUTO)
    private String institutionId;
    //机构名称
    private String institutionName;
    //地区id
    private Long districtId;
    //地址
    private String address;
    //负责人
    private String header;
    //负责人电话
    private String hphone;
    //联系人
    private String contact;
    //联系人电话
    private String cphone;
    //是否为煤矿:0为非,1是
    private Byte isCm;
    //备注
    private String remark;
    //删除标识(0未删除,1删除)
    private Byte delFlag;
    @TableField(fill = FieldFill.INSERT)
    private String createBy;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateBy;
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/entity/ViolationRegistration.java
对比新文件
@@ -0,0 +1,61 @@
package com.gkhy.exam.noncoalmine.entity;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
/**
 * (ViolationRegistration)表实体类
 *
 * @author makejava
 * @since 2023-09-11 16:59:09
 */
@Data
public class ViolationRegistration {
    //违章主键
    @TableId(type = IdType.AUTO)
    private Long violationId;
    //姓名
    private String name;
    //身份证
    private String idCard;
    //电子证号
    private String electNum;
    //IC卡编号
    private String icNum;
    //违章时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date violationTime;
    //所属单位
    private String dept;
    //操作类型id
    private Long operateTypeId;
    //是否为煤矿:0为非,1是
    private Integer isCm;
    //违章附件
    private String violationPath;
    //描述
    private String remark;
    //删除标识(0未删除,1删除)
    private Byte delFlag;
    @TableField(fill = FieldFill.INSERT)
    private String createBy;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateBy;
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/entity/WorkRegistration.java
对比新文件
@@ -0,0 +1,61 @@
package com.gkhy.exam.noncoalmine.entity;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
/**
 * (WorkRegistration)表实体类
 *
 * @author makejava
 * @since 2023-09-11 16:59:58
 */
@Data
public class WorkRegistration implements Serializable {
    //主键
    @TableId(type = IdType.AUTO)
    private Long workId;
    //姓名
    private String name;
    //身份证
    private String idCard;
    //电子证号
    private String electNum;
    //IC卡编号
    private String icNum;
    //作业时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date workTime;
    //所属单位
    private String dept;
    //操作类型id
    private Long operateTypeId;
    //是否为煤矿:0为非,1是
    private Byte isCm;
    //描述
    private String remark;
    //删除标识(0未删除,1删除)
    private Byte delFlag;
    @TableField(fill = FieldFill.INSERT)
    private String createBy;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateBy;
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/mapper/ExamSiteMapper.java
对比新文件
@@ -0,0 +1,25 @@
package com.gkhy.exam.noncoalmine.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gkhy.exam.noncoalmine.entity.ExamSite;
import com.gkhy.exam.noncoalmine.model.query.ExamSiteQuery;
import com.gkhy.exam.noncoalmine.model.vo.ExamSiteVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
 * (ExamSite)表数据库访问层
 *
 * @author makejava
 * @since 2023-09-13 16:11:10
 */
@Repository
@Mapper
public interface ExamSiteMapper extends BaseMapper<ExamSite> {
    List<ExamSiteVO> listByPage(@Param("query") ExamSiteQuery query);
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/mapper/TrainingInstitutionMapper.java
对比新文件
@@ -0,0 +1,25 @@
package com.gkhy.exam.noncoalmine.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gkhy.exam.noncoalmine.entity.TrainingInstitution;
import com.gkhy.exam.noncoalmine.model.query.TrainingInstitutionQuery;
import com.gkhy.exam.noncoalmine.model.vo.TrainingInstitutionVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
 * (TrainingInstitution)表数据库访问层
 *
 * @author makejava
 * @since 2023-09-13 16:12:31
 */
@Repository
@Mapper
public interface TrainingInstitutionMapper extends BaseMapper<TrainingInstitution> {
    List<TrainingInstitutionVO> listByPage(@Param("query") TrainingInstitutionQuery query);
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/mapper/ViolationRegistrationMapper.java
对比新文件
@@ -0,0 +1,22 @@
package com.gkhy.exam.noncoalmine.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gkhy.exam.noncoalmine.entity.ViolationRegistration;
import com.gkhy.exam.noncoalmine.model.query.ViolationRegistrationQuery;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * (ViolationRegistration)表数据库访问层
 *
 * @author makejava
 * @since 2023-09-11 16:59:05
 */
@Mapper
public interface ViolationRegistrationMapper extends BaseMapper<ViolationRegistration> {
    List<ViolationRegistration> listByPage(@Param("query") ViolationRegistrationQuery query);
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/mapper/WorkRegistrationMapper.java
对比新文件
@@ -0,0 +1,22 @@
package com.gkhy.exam.noncoalmine.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gkhy.exam.noncoalmine.entity.WorkRegistration;
import com.gkhy.exam.noncoalmine.model.query.WorkRegistrationQuery;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * (WorkRegistration)表数据库访问层
 *
 * @author makejava
 * @since 2023-09-11 16:59:58
 */
@Mapper
public interface WorkRegistrationMapper extends BaseMapper<WorkRegistration> {
    List<WorkRegistration> listByPage(@Param("query") WorkRegistrationQuery query);
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/addForm/ExamSiteAddForm.java
对比新文件
@@ -0,0 +1,41 @@
package com.gkhy.exam.noncoalmine.model.addForm;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
 * @email 1603559716@qq.com
 * @author: zf
 * @date: 2023/9/14
 * @time: 16:48
 */
@Data
public class ExamSiteAddForm {
    //机构名称
    @NotEmpty(message = "请输入考点名称")
    private String siteName;
    //地区id
    @NotNull(message = "请选择地区")
    private Long districtId;
    //地址
    private String address;
    //负责人
    private String header;
    //负责人电话
    private String hphone;
    //联系人
    private String contact;
    //联系人电话
    private String cphone;
    //是否为煤矿:0为非,1是
    @NotNull(message = "请选择是否为煤矿")
    private Byte isCm;
    //备注
    private String remark;
    @NotNull(message = "请选择机构")
    private Long institutionId;
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/addForm/TrainingInstitutionAddForm.java
对比新文件
@@ -0,0 +1,41 @@
package com.gkhy.exam.noncoalmine.model.addForm;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
 * @email 1603559716@qq.com
 * @author: zf
 * @date: 2023/9/13
 * @time: 16:46
 */
@Data
public class TrainingInstitutionAddForm {
    //机构名称
    @NotEmpty(message = "请输入机构名称")
    private String institutionName;
    //地区id
    @NotNull(message = "请选择地区")
    private Long districtId;
    //地址
    private String address;
    //负责人
    private String header;
    //负责人电话
    private String hphone;
    //联系人
    private String contact;
    //联系人电话
    private String cphone;
    //是否为煤矿:0为非,1是
    @NotNull(message = "请选择是否为煤矿")
    private Byte isCm;
    //备注
    private String remark;
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/addForm/ViolationRegistrationAddForm.java
对比新文件
@@ -0,0 +1,45 @@
package com.gkhy.exam.noncoalmine.model.addForm;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
 * @email 1603559716@qq.com
 * @author: zf
 * @date: 2023/9/13
 * @time: 15:37
 */
@Data
public class ViolationRegistrationAddForm {
    //姓名
    @NotEmpty(message = "请填写姓名")
    private String name;
    //身份证
    @NotEmpty(message = "请填写身份证")
    private String idCard;
    //电子证号
    private String electNum;
    //IC卡编号
    private String icNum;
    //作业时间
    @NotNull(message = "请填写做业时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date violationTime;
    //违章附件
    private String violationPath;
    //所属单位
    @NotEmpty(message = "请填写所属单位")
    private String dept;
    //操作类型id
    @NotNull(message = "请选择操作类型")
    private Long operateTypeId;
    //是否为煤矿:0为非,1是
    @NotNull(message = "是否为煤矿不可为空")
    private Integer isCm;
    //描述
    private String remark;
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/addForm/WorkRegistrationAddForm.java
对比新文件
@@ -0,0 +1,47 @@
package com.gkhy.exam.noncoalmine.model.addForm;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
 * @email 1603559716@qq.com
 * @author: zf
 * @date: 2023/9/11
 * @time: 17:09
 */
@Data
public class WorkRegistrationAddForm {
    //姓名
    @NotEmpty(message = "请填写姓名")
    private String name;
    //身份证
    @NotEmpty(message = "请填写身份证")
    private String idCard;
    //电子证号
    private String electNum;
    //IC卡编号
    private String icNum;
    //作业时间
    @NotNull(message = "请填写做业时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date workTime;
    //所属单位
    @NotEmpty(message = "请填写所属单位")
    private String dept;
    //操作类型id
    @NotNull(message = "请选择操作类型")
    private Long operateTypeId;
    //是否为煤矿:0为非,1是
    @NotNull(message = "是否为煤矿不可为空")
    private Integer isCm;
    //描述
    private String remark;
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/modForm/ExamSiteModForm.java
对比新文件
@@ -0,0 +1,41 @@
package com.gkhy.exam.noncoalmine.model.modForm;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
 * @email 1603559716@qq.com
 * @author: zf
 * @date: 2023/9/14
 * @time: 16:47
 */
@Data
public class ExamSiteModForm {
    @NotNull(message = "考点主键不可为空")
    private String siteId;
    //考点名称
    @NotEmpty(message = "请输入考点名称")
    private String siteName;
    //地区id
    @NotNull(message = "请选择地区")
    private Long districtId;
    //地址
    private String address;
    //负责人
    private String header;
    //负责人电话
    private String hphone;
    //联系人
    private String contact;
    //联系人电话
    private String cphone;
    //是否为煤矿:0为非,1是
    @NotNull(message = "请选择是否为煤矿")
    private Byte isCm;
    //备注
    private String remark;
    @NotNull(message = "请选择机构")
    private Long institutionId;
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/modForm/TrainingInstitutionModForm.java
对比新文件
@@ -0,0 +1,39 @@
package com.gkhy.exam.noncoalmine.model.modForm;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
 * @email 1603559716@qq.com
 * @author: zf
 * @date: 2023/9/13
 * @time: 16:46
 */
@Data
public class TrainingInstitutionModForm {
    @NotNull(message = "机构主键不可为空")
    private String institutionId;
    //机构名称
    @NotEmpty(message = "请输入机构名称")
    private String institutionName;
    //地区id
    @NotNull(message = "请选择地区")
    private Long districtId;
    //地址
    private String address;
    //负责人
    private String header;
    //负责人电话
    private String hphone;
    //联系人
    private String contact;
    //联系人电话
    private String cphone;
    //是否为煤矿:0为非,1是
    @NotNull(message = "请选择是否为煤矿")
    private Byte isCm;
    //备注
    private String remark;
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/modForm/ViolationRegistrationModForm.java
对比新文件
@@ -0,0 +1,47 @@
package com.gkhy.exam.noncoalmine.model.modForm;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
 * @email 1603559716@qq.com
 * @author: zf
 * @date: 2023/9/13
 * @time: 15:37
 */
@Data
public class ViolationRegistrationModForm {
    @NotNull(message = "违章主键不可为空")
    private Long violationId;
    //姓名
    @NotEmpty(message = "请填写姓名")
    private String name;
    //身份证
    @NotEmpty(message = "请填写身份证")
    private String idCard;
    //电子证号
    private String electNum;
    //IC卡编号
    private String icNum;
    //作业时间
    @NotNull(message = "请填写做业时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date violationTime;
    //违章附件
    private String violationPath;
    //所属单位
    @NotEmpty(message = "请填写所属单位")
    private String dept;
    //操作类型id
    @NotNull(message = "请选择操作类型")
    private Long operateTypeId;
    //是否为煤矿:0为非,1是
    @NotNull(message = "是否为煤矿不可为空")
    private Integer isCm;
    //描述
    private String remark;
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/modForm/WorkRegistrationModForm.java
对比新文件
@@ -0,0 +1,47 @@
package com.gkhy.exam.noncoalmine.model.modForm;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
 * @email 1603559716@qq.com
 * @author: zf
 * @date: 2023/9/11
 * @time: 17:19
 */
@Data
public class WorkRegistrationModForm {
    @NotNull(message = "做业主键不可为空")
    private Long workId;
    //姓名
    @NotEmpty(message = "请填写姓名")
    private String name;
    //身份证
    @NotEmpty(message = "请填写身份证")
    private String idCard;
    //电子证号
    private String electNum;
    //IC卡编号
    private String icNum;
    //作业时间
    @NotNull(message = "请填写做业时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date violationTime;
    //所属单位
    @NotEmpty(message = "请填写所属单位")
    private String dept;
    //操作类型id
    @NotNull(message = "请选择操作类型")
    private Long operateTypeId;
    //是否为煤矿:0为非,1是
    @NotNull(message = "是否为煤矿不可为空")
    private Integer isCm;
    //描述
    private String remark;
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/query/ExamSiteQuery.java
对比新文件
@@ -0,0 +1,19 @@
package com.gkhy.exam.noncoalmine.model.query;
import lombok.Data;
/**
 * @email 1603559716@qq.com
 * @author: zf
 * @date: 2023/9/14
 * @time: 16:35
 */
@Data
public class ExamSiteQuery {
    //机构名称
    private String siteName;
    //是否为煤矿:0为非,1是
    private Byte isCm;
    //区划编码
    private String districtCode;
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/query/TrainingInstitutionQuery.java
对比新文件
@@ -0,0 +1,19 @@
package com.gkhy.exam.noncoalmine.model.query;
import lombok.Data;
/**
 * @email 1603559716@qq.com
 * @author: zf
 * @date: 2023/9/13
 * @time: 16:33
 */
@Data
public class TrainingInstitutionQuery {
    //机构名称
    private String institutionName;
    //是否为煤矿:0为非,1是
    private Byte isCm;
    //区划编码
    private String districtCode;
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/query/ViolationRegistrationQuery.java
对比新文件
@@ -0,0 +1,17 @@
package com.gkhy.exam.noncoalmine.model.query;
import lombok.Data;
/**
 * @email 1603559716@qq.com
 * @author: zf
 * @date: 2023/9/13
 * @time: 15:00
 */
@Data
public class ViolationRegistrationQuery {
    private String dept;
    private String name;
    private String idCard;
    private Long operateTypeId;
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/query/WorkRegistrationQuery.java
对比新文件
@@ -0,0 +1,17 @@
package com.gkhy.exam.noncoalmine.model.query;
import lombok.Data;
/**
 * @email 1603559716@qq.com
 * @author: zf
 * @date: 2023/9/12
 * @time: 16:48
 */
@Data
public class WorkRegistrationQuery {
    private String dept;
    private String name;
    private String idCard;
    private Long operateTypeId;
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/vo/ExamSiteVO.java
对比新文件
@@ -0,0 +1,50 @@
package com.gkhy.exam.noncoalmine.model.vo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
 * @email 1603559716@qq.com
 * @author: zf
 * @date: 2023/9/14
 * @time: 16:27
 */
@Data
public class ExamSiteVO {
    private Long siteId;
    //地点名称
    private String siteName;
    //地区id
    private Long districtId;
    //地址
    private String address;
    //负责人
    private String header;
    //负责人电话
    private String hphone;
    //联系人
    private String contact;
    //联系人电话
    private String cphone;
    //备注
    private String remark;
    //机构ID
    private Long institutionId;
    //删除标识(0未删除,1删除)
    private Byte delFlag;
    //是否为煤矿:0为非,1是
    private Byte isCm;
    private String createBy;
    private String updateBy;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    private String districtName;
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/vo/TrainingInstitutionVO.java
对比新文件
@@ -0,0 +1,48 @@
package com.gkhy.exam.noncoalmine.model.vo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
 * @email 1603559716@qq.com
 * @author: zf
 * @date: 2023/9/13
 * @time: 16:42
 */
@Data
public class TrainingInstitutionVO {
    private String institutionId;
    //机构名称
    private String institutionName;
    //地区id
    private Long districtId;
    //地址
    private String address;
    //负责人
    private String header;
    //负责人电话
    private String hphone;
    //联系人
    private String contact;
    //联系人电话
    private String cphone;
    //是否为煤矿:0为非,1是
    private Byte isCm;
    //备注
    private String remark;
    //删除标识(0未删除,1删除)
    private Byte delFlag;
    private String createBy;
    private String updateBy;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    private String districtName;
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/vo/ViolationRegistrationVO.java
对比新文件
@@ -0,0 +1,62 @@
package com.gkhy.exam.noncoalmine.model.vo;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * (ViolationRegistration)表实体类
 *
 * @author makejava
 * @since 2023-09-11 16:59:09
 */
@Data
public class ViolationRegistrationVO {
    //违章主键
    private Long violationId;
    //姓名
    private String name;
    //身份证
    private String idCard;
    //电子证号
    private String electNum;
    //IC卡编号
    private String icNum;
    //违章时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date violationTime;
    //所属单位
    private String dept;
    //操作类型id
    private Long operateTypeId;
    //是否为煤矿:0为非,1是
    private Integer isCm;
    //违章附件
    private String violationPath;
    //描述
    private String remark;
    //删除标识(0未删除,1删除)
    private Byte delFlag;
    private String createBy;
    private String updateBy;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    private String qualificationType;
    private String jobCategory;
    private String operationItems;
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/vo/WorkRegistrationVO.java
对比新文件
@@ -0,0 +1,53 @@
package com.gkhy.exam.noncoalmine.model.vo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * (WorkRegistration)表实体类
 *
 * @author makejava
 * @since 2023-09-11 16:59:58
 */
@Data
public class WorkRegistrationVO {
    //主键
    private Long workId;
    //姓名
    private String name;
    //身份证
    private String idCard;
    //电子证号
    private String electNum;
    //IC卡编号
    private String icNum;
    //作业时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date violationTime;
    //所属单位
    private String dept;
    //操作类型id
    private Long operateTypeId;
    //是否为煤矿:0为非,1是
    private Byte isCm;
    //描述
    private String remark;
    private String createBy;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    private String qualificationType;
    private String jobCategory;
    private String operationItems;
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/ExamSiteService.java
对比新文件
@@ -0,0 +1,26 @@
package com.gkhy.exam.noncoalmine.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gkhy.exam.noncoalmine.entity.ExamSite;
import com.gkhy.exam.noncoalmine.model.addForm.ExamSiteAddForm;
import com.gkhy.exam.noncoalmine.model.modForm.ExamSiteModForm;
import com.gkhy.exam.noncoalmine.model.query.ExamSiteQuery;
import com.gkhy.exam.noncoalmine.model.vo.ExamSiteVO;
import java.util.List;
/**
 * (ExamSite)表服务接口
 *
 * @author makejava
 * @since 2023-09-13 16:11:11
 */
public interface ExamSiteService extends IService<ExamSite> {
    List<ExamSiteVO> listByPage(ExamSiteQuery query);
    int add(ExamSiteAddForm addForm);
    int mod(ExamSiteModForm modForm);
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/TrainingInstitutionService.java
对比新文件
@@ -0,0 +1,26 @@
package com.gkhy.exam.noncoalmine.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gkhy.exam.noncoalmine.entity.TrainingInstitution;
import com.gkhy.exam.noncoalmine.model.addForm.TrainingInstitutionAddForm;
import com.gkhy.exam.noncoalmine.model.modForm.TrainingInstitutionModForm;
import com.gkhy.exam.noncoalmine.model.query.TrainingInstitutionQuery;
import com.gkhy.exam.noncoalmine.model.vo.TrainingInstitutionVO;
import java.util.List;
/**
 * (TrainingInstitution)表服务接口
 *
 * @author makejava
 * @since 2023-09-13 16:12:31
 */
public interface TrainingInstitutionService extends IService<TrainingInstitution> {
    List<TrainingInstitutionVO> listByPage(TrainingInstitutionQuery query);
    int mod(TrainingInstitutionModForm modForm);
    int add(TrainingInstitutionAddForm addForm);
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/ViolationRegistrationService.java
对比新文件
@@ -0,0 +1,26 @@
package com.gkhy.exam.noncoalmine.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gkhy.exam.noncoalmine.entity.ViolationRegistration;
import com.gkhy.exam.noncoalmine.model.addForm.ViolationRegistrationAddForm;
import com.gkhy.exam.noncoalmine.model.modForm.ViolationRegistrationModForm;
import com.gkhy.exam.noncoalmine.model.query.ViolationRegistrationQuery;
import com.gkhy.exam.noncoalmine.model.vo.ViolationRegistrationVO;
import java.util.List;
/**
 * (ViolationRegistration)表服务接口
 *
 * @author makejava
 * @since 2023-09-11 16:59:09
 */
public interface ViolationRegistrationService extends IService<ViolationRegistration> {
    List<ViolationRegistrationVO> listByPage(ViolationRegistrationQuery query);
    int add(ViolationRegistrationAddForm addForm);
    int mod(ViolationRegistrationModForm modForm);
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/WorkRegistrationService.java
对比新文件
@@ -0,0 +1,26 @@
package com.gkhy.exam.noncoalmine.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gkhy.exam.noncoalmine.entity.WorkRegistration;
import com.gkhy.exam.noncoalmine.model.addForm.WorkRegistrationAddForm;
import com.gkhy.exam.noncoalmine.model.modForm.WorkRegistrationModForm;
import com.gkhy.exam.noncoalmine.model.query.WorkRegistrationQuery;
import com.gkhy.exam.noncoalmine.model.vo.WorkRegistrationVO;
import java.util.List;
/**
 * (WorkRegistration)表服务接口
 *
 * @author makejava
 * @since 2023-09-11 16:59:58
 */
public interface WorkRegistrationService extends IService<WorkRegistration> {
    List<WorkRegistrationVO> listByPage(WorkRegistrationQuery query);
    int add(WorkRegistrationAddForm addForm);
    int mod(WorkRegistrationModForm modForm);
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/impl/ExamSiteServiceImpl.java
对比新文件
@@ -0,0 +1,82 @@
package com.gkhy.exam.noncoalmine.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gkhy.exam.noncoalmine.entity.ExamSite;
import com.gkhy.exam.noncoalmine.mapper.ExamSiteMapper;
import com.gkhy.exam.noncoalmine.model.addForm.ExamSiteAddForm;
import com.gkhy.exam.noncoalmine.model.modForm.ExamSiteModForm;
import com.gkhy.exam.noncoalmine.model.query.ExamSiteQuery;
import com.gkhy.exam.noncoalmine.model.vo.ExamSiteVO;
import com.gkhy.exam.noncoalmine.service.ExamSiteService;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.SysDistrict;
import com.ruoyi.system.service.SysDistrictService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/**
 * (ExamSite)表服务实现类
 *
 * @author makejava
 * @since 2023-09-13 16:11:11
 */
@Service("examSiteService")
public class ExamSiteServiceImpl extends ServiceImpl<ExamSiteMapper, ExamSite> implements ExamSiteService {
    @Autowired
    private SysDistrictService districtService;
    @Autowired
    private ExamSiteMapper examSiteMapper;
    @Override
    public List<ExamSiteVO> listByPage(ExamSiteQuery query) {
        SysUser user = SecurityUtils.getLoginUser().getUser();
        if(StringUtils.isEmpty(query.getDistrictCode())){
            //传入区划为空
            if(!user.isAdmin(user.getUserId())){
                //非超管
                List<SysDistrict> districtList = districtService
                        .selectAll()
                        .stream()
                        .filter(sysDistrict -> sysDistrict.getId().equals(user.getDistrictId()))
                        .collect(Collectors.toList());
                if(districtList.size() > 0){
                    SysDistrict sysDistrict = districtList.get(0);
                    query.setDistrictCode(sysDistrict.getCode());
                }
            }
        }
        List<ExamSiteVO> trainingInstitutionVOS = examSiteMapper.listByPage(query);
        return trainingInstitutionVOS;
    }
    /**
     * 新增
     * @param addForm
     * @return
     */
    @Override
    public int add(ExamSiteAddForm addForm) {
        ExamSite examSite = new ExamSite();
        BeanUtils.copyProperties(addForm,examSite);
        examSite.setDelFlag((byte)0);
        return baseMapper.insert(examSite);
    }
    /**
     * 修改
     * @param modForm
     * @return
     */
    @Override
    public int mod(ExamSiteModForm modForm) {
        ExamSite examSite = new ExamSite();
        BeanUtils.copyProperties(modForm,examSite);
        return baseMapper.updateById(examSite);
    }
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/impl/TrainingInstitutionServiceImpl.java
对比新文件
@@ -0,0 +1,74 @@
package com.gkhy.exam.noncoalmine.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gkhy.exam.noncoalmine.entity.TrainingInstitution;
import com.gkhy.exam.noncoalmine.mapper.TrainingInstitutionMapper;
import com.gkhy.exam.noncoalmine.model.addForm.TrainingInstitutionAddForm;
import com.gkhy.exam.noncoalmine.model.modForm.TrainingInstitutionModForm;
import com.gkhy.exam.noncoalmine.model.query.TrainingInstitutionQuery;
import com.gkhy.exam.noncoalmine.model.vo.TrainingInstitutionVO;
import com.gkhy.exam.noncoalmine.service.TrainingInstitutionService;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.SysDistrict;
import com.ruoyi.system.service.SysDistrictService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/**
 * (TrainingInstitution)表服务实现类
 *
 * @author makejava
 * @since 2023-09-13 16:12:31
 */
@Service("trainingInstitutionService")
public class TrainingInstitutionServiceImpl extends ServiceImpl<TrainingInstitutionMapper, TrainingInstitution> implements TrainingInstitutionService {
    @Autowired
    private TrainingInstitutionMapper trainingInstitutionMapper;
    @Autowired
    private SysDistrictService districtService;
    @Override
    public List<TrainingInstitutionVO> listByPage(TrainingInstitutionQuery query) {
        SysUser user = SecurityUtils.getLoginUser().getUser();
        if(StringUtils.isEmpty(query.getDistrictCode())){
            //传入区划为空
            if(!user.isAdmin(user.getUserId())){
                //非超管
                List<SysDistrict> districtList = districtService
                        .selectAll()
                        .stream()
                        .filter(sysDistrict -> sysDistrict.getId().equals(user.getDistrictId()))
                        .collect(Collectors.toList());
                if(districtList.size() > 0){
                    SysDistrict sysDistrict = districtList.get(0);
                    query.setDistrictCode(sysDistrict.getCode());
                }
            }
        }
        List<TrainingInstitutionVO> trainingInstitutionVOS = trainingInstitutionMapper.listByPage(query);
        return trainingInstitutionVOS;
    }
    @Override
    public int mod(TrainingInstitutionModForm modForm) {
        TrainingInstitution trainingInstitution = new TrainingInstitution();
        BeanUtils.copyProperties(modForm,trainingInstitution);
        return baseMapper.updateById(trainingInstitution);
    }
    @Override
    public int add(TrainingInstitutionAddForm addForm) {
        TrainingInstitution trainingInstitution = new TrainingInstitution();
        BeanUtils.copyProperties(addForm,trainingInstitution);
        trainingInstitution.setDelFlag((byte)0);
        return baseMapper.insert(trainingInstitution);
    }
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/impl/ViolationRegistrationServiceImpl.java
对比新文件
@@ -0,0 +1,130 @@
package com.gkhy.exam.noncoalmine.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gkhy.exam.noncoalmine.entity.ViolationRegistration;
import com.gkhy.exam.noncoalmine.entity.WorkRegistration;
import com.gkhy.exam.noncoalmine.mapper.ViolationRegistrationMapper;
import com.gkhy.exam.noncoalmine.model.addForm.ViolationRegistrationAddForm;
import com.gkhy.exam.noncoalmine.model.modForm.ViolationRegistrationModForm;
import com.gkhy.exam.noncoalmine.model.query.ViolationRegistrationQuery;
import com.gkhy.exam.noncoalmine.model.vo.ViolationRegistrationVO;
import com.gkhy.exam.noncoalmine.model.vo.WorkRegistrationVO;
import com.gkhy.exam.noncoalmine.service.ViolationRegistrationService;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.file.entity.AttachmentInfo;
import com.ruoyi.file.mapper.AttachmentInfoMapper;
import com.ruoyi.file.service.AttachmentInfoService;
import com.ruoyi.system.domain.bo.SysOperateTypeWholeNameBO;
import com.ruoyi.system.service.SysOperateTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
 * (ViolationRegistration)表服务实现类
 *
 * @author makejava
 * @since 2023-09-11 16:59:09
 */
@Service("violationRegistrationService")
public class ViolationRegistrationServiceImpl extends ServiceImpl<ViolationRegistrationMapper, ViolationRegistration> implements ViolationRegistrationService {
    @Autowired
    private SysOperateTypeService sysOperateTypeService;
    @Autowired
    private ViolationRegistrationMapper violationRegistrationMapper;
    @Autowired
    private AttachmentInfoService attachmentInfoService;
    /**
     * 分页
     * @param query
     * @return
     */
    @Override
    public List<ViolationRegistrationVO> listByPage(ViolationRegistrationQuery query) {
        List<ViolationRegistration> violationRegistrations = violationRegistrationMapper.listByPage(query);
        List<ViolationRegistrationVO> list = violationRegistrations.stream().map(registration -> {
            ViolationRegistrationVO violationRegistrationVO = new ViolationRegistrationVO();
            BeanUtils.copyProperties(registration, violationRegistrationVO);
            SysOperateTypeWholeNameBO operateTypeWholeName = sysOperateTypeService.getOperateTypeWholeNameById(registration.getOperateTypeId());
            violationRegistrationVO.setJobCategory(operateTypeWholeName.getJobCategory());
            violationRegistrationVO.setQualificationType(operateTypeWholeName.getQualificationType());
            violationRegistrationVO.setOperationItems(operateTypeWholeName.getOperationItems());
            //附件转换
            violationRegistrationVO.setViolationPath(getAttachmentUrl(registration.getViolationPath()));
            return violationRegistrationVO;
        }).collect(Collectors.toList());
        return list;
    }
    /**
     * 新增
     * @param addForm
     * @return
     */
    @Override
    public int add(ViolationRegistrationAddForm addForm) {
        ViolationRegistration violationRegistration = new ViolationRegistration();
        BeanUtils.copyProperties(addForm,violationRegistration);
        violationRegistration.setDelFlag((byte) 0);
        return baseMapper.insert(violationRegistration);
    }
    /**
     * 修改
     * @param modForm
     * @return
     */
    @Override
    public int mod(ViolationRegistrationModForm modForm) {
        ViolationRegistration violationRegistration = new ViolationRegistration();
        BeanUtils.copyProperties(modForm,violationRegistration);
        return baseMapper.updateById(violationRegistration);
    }
    /**
     * 根据身份证获取违章数据
     */
    public List<ViolationRegistrationVO> getByIdCard(String idCard,byte isCm){
        List<ViolationRegistration> violationRegistrations = baseMapper.selectList(new LambdaQueryWrapper<ViolationRegistration>()
                .eq(ViolationRegistration::getDelFlag, 0)
                .eq(ViolationRegistration::getIdCard, idCard)
                .eq(idCard != null,ViolationRegistration::getIsCm,isCm));
        List<ViolationRegistrationVO> list = violationRegistrations.stream().map(registration -> {
            ViolationRegistrationVO violationRegistrationVO = new ViolationRegistrationVO();
            BeanUtils.copyProperties(registration, violationRegistrationVO);
            SysOperateTypeWholeNameBO operateTypeWholeName = sysOperateTypeService.getOperateTypeWholeNameById(registration.getOperateTypeId());
            violationRegistrationVO.setJobCategory(operateTypeWholeName.getJobCategory());
            violationRegistrationVO.setQualificationType(operateTypeWholeName.getQualificationType());
            violationRegistrationVO.setOperationItems(operateTypeWholeName.getOperationItems());
            //附件转换
            violationRegistrationVO.setViolationPath(getAttachmentUrl(registration.getViolationPath()));
            return violationRegistrationVO;
        }).collect(Collectors.toList());
        return list;
    }
    /**
     * 附件转换
     * @param keys
     * @return
     */
    private String getAttachmentUrl(String keys){
        String[] arry = keys.split(",");
        StringBuffer paths = new StringBuffer();
        List<AttachmentInfo> attachmentList = attachmentInfoService.findByKeys(Arrays.asList(arry));
        if(!CollectionUtils.isEmpty(attachmentList)){
            for (AttachmentInfo attachmentInfo : attachmentList) {
                paths.append(attachmentInfo.getFileUrl()).append(",");
            }
            paths.deleteCharAt(paths.length() -1);
        }
        return paths.toString();
    }
}
exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/impl/WorkRegistrationServiceImpl.java
对比新文件
@@ -0,0 +1,92 @@
package com.gkhy.exam.noncoalmine.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gkhy.exam.noncoalmine.entity.WorkRegistration;
import com.gkhy.exam.noncoalmine.mapper.WorkRegistrationMapper;
import com.gkhy.exam.noncoalmine.model.addForm.WorkRegistrationAddForm;
import com.gkhy.exam.noncoalmine.model.modForm.WorkRegistrationModForm;
import com.gkhy.exam.noncoalmine.model.query.WorkRegistrationQuery;
import com.gkhy.exam.noncoalmine.model.vo.WorkRegistrationVO;
import com.gkhy.exam.noncoalmine.service.WorkRegistrationService;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.system.domain.bo.SysOperateTypeWholeNameBO;
import com.ruoyi.system.service.SysOperateTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/**
 * (WorkRegistration)表服务实现类
 *
 * @author makejava
 * @since 2023-09-11 16:59:58
 */
@Service("workRegistrationService")
public class WorkRegistrationServiceImpl extends ServiceImpl<WorkRegistrationMapper, WorkRegistration> implements WorkRegistrationService {
    @Autowired
    private WorkRegistrationMapper workRegistrationMapper;
    @Autowired
    private SysOperateTypeService sysOperateTypeService;
    @Override
    public List<WorkRegistrationVO> listByPage(WorkRegistrationQuery query) {
        List<WorkRegistration> workRegistrations = workRegistrationMapper.listByPage(query);
        List<WorkRegistrationVO> list = workRegistrations.stream().map(workRegistration -> {
            WorkRegistrationVO workRegistrationVO = new WorkRegistrationVO();
            BeanUtils.copyProperties(workRegistration, workRegistrationVO);
            SysOperateTypeWholeNameBO operateTypeWholeName = sysOperateTypeService.getOperateTypeWholeNameById(workRegistration.getOperateTypeId());
            workRegistrationVO.setJobCategory(operateTypeWholeName.getJobCategory());
            workRegistrationVO.setQualificationType(operateTypeWholeName.getQualificationType());
            workRegistrationVO.setOperationItems(operateTypeWholeName.getOperationItems());
            return workRegistrationVO;
        }).collect(Collectors.toList());
        return list;
    }
    /**
     * 新增
     * @param addForm
     * @return
     */
    @Override
    public int add(WorkRegistrationAddForm addForm) {
        WorkRegistration workRegistration = new WorkRegistration();
        BeanUtils.copyProperties(addForm,workRegistration);
        workRegistration.setDelFlag((byte) 0);
        return baseMapper.insert(workRegistration);
    }
    /**
     * 修改
     * @param modForm
     * @return
     */
    @Override
    public int mod(WorkRegistrationModForm modForm) {
        WorkRegistration workRegistration = new WorkRegistration();
        BeanUtils.copyProperties(modForm,workRegistration);
        return baseMapper.updateById(workRegistration);
    }
    /**
     * 根据身份证获取做业数据
     */
    public List<WorkRegistrationVO> getByIdCard(String idCard, byte isCm){
        List<WorkRegistration> workRegistrations = baseMapper.selectList(new LambdaQueryWrapper<WorkRegistration>()
                .eq(WorkRegistration::getDelFlag, 0)
                .eq(WorkRegistration::getIdCard, idCard)
                .eq(idCard != null,WorkRegistration::getIsCm,isCm));
        List<WorkRegistrationVO> list = workRegistrations.stream().map(workRegistration -> {
            WorkRegistrationVO workRegistrationVO = new WorkRegistrationVO();
            BeanUtils.copyProperties(workRegistration, workRegistrationVO);
            SysOperateTypeWholeNameBO operateTypeWholeName = sysOperateTypeService.getOperateTypeWholeNameById(workRegistration.getOperateTypeId());
            workRegistrationVO.setJobCategory(operateTypeWholeName.getJobCategory());
            workRegistrationVO.setQualificationType(operateTypeWholeName.getQualificationType());
            workRegistrationVO.setOperationItems(operateTypeWholeName.getOperationItems());
            return workRegistrationVO;
        }).collect(Collectors.toList());
        return list;
    }
}
exam-system/src/main/resources/mapper/noncoalmine/ExamSiteMapper.xml
对比新文件
@@ -0,0 +1,26 @@
<?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.noncoalmine.mapper.ExamSiteMapper">
    <select id="listByPage" resultType="com.gkhy.exam.noncoalmine.model.vo.ExamSiteVO">
        SELECT
        s.*,
        d.name as districtName
        FROM
        exam_site s
        LEFT JOIN sys_district d ON d.id = s.district_id
        WHERE
        s.del_flag = 0
        <if test="query.siteName != null and query.siteName = ''">
            and s.site_name like concat('%', #{query.siteName}, '%')
        </if>
        <if test="query.districtCode != null and query.districtCode = ''">
            AND d.`code` LIKE concat(#{query.districtCode}, '%')
        </if>
        <if test="query.isCm != null and query.isCm = ''">
            AND s.is_cm = #{query.isCm}
        </if>
        order by s.create_time desc
    </select>
</mapper>
exam-system/src/main/resources/mapper/noncoalmine/TrainingInstitutionMapper.xml
对比新文件
@@ -0,0 +1,27 @@
<?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.noncoalmine.mapper.TrainingInstitutionMapper">
    <select id="listByPage" resultType="com.gkhy.exam.noncoalmine.model.vo.TrainingInstitutionVO">
        SELECT
        t.*,
        d.name as districtName
        FROM
        training_institution t
        LEFT JOIN sys_district d ON d.id = t.district_id
        WHERE
        t.del_flag = 0
        <if test="query.institutionName != null and query.institutionName = ''">
            and t.institution_name like concat('%', #{query.institutionName}, '%')
        </if>
        <if test="query.districtCode != null and query.districtCode = ''">
            AND d.`code` LIKE concat(#{query.districtCode}, '%')
        </if>
        <if test="query.isCm != null and query.isCm = ''">
            AND t.is_cm = #{query.isCm}
        </if>
        order by t.create_time desc
    </select>
</mapper>
exam-system/src/main/resources/mapper/noncoalmine/ViolationRegistrationMapper.xml
对比新文件
@@ -0,0 +1,41 @@
<?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.noncoalmine.mapper.ViolationRegistrationMapper">
    <select id="listByPage" resultType="com.gkhy.exam.noncoalmine.entity.ViolationRegistration">
        select
        violation_id,
        name,
        id_card,
        elect_num,
        ic_num,
        violation_time,
        dept,
        operate_type_id,
        is_cm,
        violation_path,
        remark,
        del_flag,
        create_by,
        create_time,
        update_by,
        update_time
        from violation_registration
        where del_flag = 0
        <if test="query.dept != null and query.dept = ''">
            and dept like concat('%', #{query.dept}, '%')
        </if>
        <if test="query.name != null and query.name = ''">
            and name like concat('%', #{query.name}, '%')
        </if>
        <if test="query.idCard != null and query.idCard = ''">
            and id_card like concat('%', #{query.idCard}, '%')
        </if>
        <if test="query.operateTypeId != null and query.operateTypeId != 0">
            and (operate_type_id = #{query.operateTypeId} OR operate_type_id IN ( SELECT t.id FROM sys_operate_type t WHERE find_in_set(#{query.operateTypeId}, ancestors)))
        </if>
        order by create_time desc
    </select>
</mapper>
exam-system/src/main/resources/mapper/noncoalmine/WorkRegistrationMapper.xml
对比新文件
@@ -0,0 +1,41 @@
<?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.noncoalmine.mapper.WorkRegistrationMapper">
    <select id="listByPage" resultType="com.gkhy.exam.noncoalmine.entity.WorkRegistration">
        select
            work_id,
            name,
            id_card,
            elect_num,
            ic_num,
            work_time,
            dept,
            operate_type_id,
            is_cm,
            remark,
            del_flag,
            create_by,
            create_time,
            update_by,
            update_time
        from work_registration
        where del_flag = 0
        <if test="query.dept != null and query.dept = ''">
            and dept like concat('%', #{query.dept}, '%')
        </if>
        <if test="query.name != null and query.name = ''">
            and name like concat('%', #{query.name}, '%')
        </if>
        <if test="query.idCard != null and query.idCard = ''">
            and id_card like concat('%', #{query.idCard}, '%')
        </if>
        <if test="query.operateTypeId != null and query.operateTypeId != 0">
            and (operate_type_id = #{query.operateTypeId} OR operate_type_id IN ( SELECT t.id FROM sys_operate_type t WHERE find_in_set(#{query.operateTypeId}, ancestors)))
        </if>
        order by create_time desc
    </select>
</mapper>
pom.xml
@@ -196,7 +196,16 @@
                <artifactId>hutool-all</artifactId>
                <version>${hutool.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.5.14</version>
            </dependency>
            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>2.8.5</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
ruoyi-admin/src/main/resources/application.yml
@@ -68,6 +68,12 @@
    #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      logic-delete-value: 2
      logic-not-delete-value: 0
      logic-delete-field: del_flag
# PageHelper分页插件
pagehelper:
ruoyi-common/pom.xml
@@ -152,6 +152,15 @@
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
        </dependency>
    </dependencies>
</project>
ruoyi-common/src/main/java/com/ruoyi/common/signature/Signature.java
对比新文件
@@ -0,0 +1,166 @@
package com.ruoyi.common.signature;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URLEncoder;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.gson.Gson;
/**
 * @email 1603559716@qq.com
 * @author: zf
 * @date: 2023/9/7
 * @time: 11:06
 */
public class Signature {
    private static final Logger logger = LoggerFactory.getLogger(Signature.class);
    // 接口服务地址
    static String restSever = "https://inspurtestcx.saws.org.cn/sjjh/api/v1/exam/plan/enroll/download";
    // 应用标识
    static String appKey = "hj92qe";
    // 加密算法
    static String signMethod = "SHA-256";
    // 身份系统签发给应用对接的密钥
    static String appPwd = "dxep6j";
    public static void main(String[] args) {
        // 时间戳
        Long ts = Calendar.getInstance().getTime().getTime();
        // 随机数
        String once = RandomStringUtils.randomAlphanumeric(32);
        // 接口header 中的公共参数
        String commonParamUrl = String.format("appKey=%s" + "&" + "ts=%s" + "&" + "once=%s" + "&" + "signMethod=%s", appKey, ts, once, signMethod);
        // 创建HttpClient 对象
        CloseableHttpClient httpclient = (CloseableHttpClient) SkipHttpsUtils.wrapClient();
        /**
         * GET 查询接口演示代码
         */
        String startTime = "2023-05-25 00:00:00";
        String endTime = "2023-06-01 21:00:00";
        try {
            startTime = URLEncoder.encode(startTime, "UTF-8");
            endTime = URLEncoder.encode(endTime, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            throw new RuntimeException(e.getCause());
        }
        String getQueryParam = "startTime=" + startTime + "&endTime=" + endTime;
        System.out.println(getQueryParam);
        String getFullUrl = restSever + "?" + getQueryParam;
        HttpGet httpGet = new HttpGet(getFullUrl);
        // get 请求查询参数, 用在 URL 上的, 这里若是通过 ID 查询的, 接口中 ID 是作为路径存在的, 所以需要将 ID 组合成
        String getAllParamUrl = commonParamUrl + "&" + getQueryParam;
        // 对参数签名, 并放入请求 header 中的 signData 参数中
        try {
            // 签名数据
            String signData = TokenUtils.getSignature(appPwd, getAllParamUrl);
            // 添加 header 参数 appCode、timestamp、signatureNonce、signature
            httpGet.addHeader("appKey", appKey);
            httpGet.addHeader("ts", ts.toString());
            httpGet.addHeader("once", once);
            httpGet.addHeader("signMethod", signMethod);
            System.out.println("once:" + once);
            httpGet.addHeader("signData", signData);
            System.out.println("headers:" + httpGet.getAllHeaders());
            String urlStr = httpGet.getURI().toString();
            // 公共参数 URL
            System.out.println("commonParamter:" + urlStr);
            if (StringUtils.endsWith(urlStr, "/")) {
                urlStr = StringUtils.removeEnd(urlStr, "/");
            }
            httpGet.setURI(new URI(urlStr));
            RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(3000).setConnectionRequestTimeout(3000).setSocketTimeout(3000).build();
            httpGet.setConfig(requestConfig);
            System.out.println("urlStr in request:" + httpGet.getURI().toString());
            // 执行请求
            CloseableHttpResponse response = httpclient.execute(httpGet);
            // 取响应的结果
            int statusCode = response.getStatusLine().getStatusCode();
            // 打印响应结果
            if (statusCode == HttpStatus.SC_OK) {
                String resp = EntityUtils.toString(response.getEntity(), "utf-8");
                System.out.println("status:" + statusCode);
                System.out.println("result:" + resp);
            }
        } catch (URISyntaxException e) {
            logger.error("签名失败: ", e);
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        /**
         * PUT 修改接口的演示代码,POST 与 PUT 类似
         */
        String ID = "aa03a5c692cf480b87887e0ff8cfe566";
        // 这里若是通过 ID 查询的, 接口中 ID 是作为路径存在的, 所以需要将 ID 组合成
        String putQueryParam = "ID=" + ID;
        String putFullUrl = restSever + "/" + ID;
        // 访问用户接口
        HttpPut httpPut = new HttpPut(putFullUrl);
        // 模拟 POST/PUT 的 body 中数据, 需转为 JSON 进行签名。GET 则没有这部分内容。
        Map<String, Object> dataMap = new HashMap<String, Object>();
        dataMap.put("USER_NAME", "张三");
        String bodyParam = new Gson().toJson(dataMap);
        String postAllParamUrl = commonParamUrl + "&" + putQueryParam + "&bodyData=" + bodyParam;
        StringEntity bodyData = new StringEntity(bodyParam.toString(), "UTF-8");
        httpPut.setEntity(bodyData);
        // 对参数签名, 并放入请求 header 中的 signData 参数中
        try {
            // 签名数据
            String signData = TokenUtils.getSignature(appPwd, postAllParamUrl);
            // 添加 header 参数 appCode、timestamp、signatureNonce、signature
            httpPut.addHeader("appKey", appKey);
            httpPut.addHeader("ts", ts.toString());
            httpPut.addHeader("once", once);
            System.out.println("once:" + once);
            httpPut.addHeader("signData", signData);
            System.out.println("headers:" + httpPut.getAllHeaders());
            String urlStr = httpPut.getURI().toString();
            // 公共参数 URL
            System.out.println("commonParamter:" + urlStr);
            if (StringUtils.endsWith(urlStr, "/")) {
                urlStr = StringUtils.removeEnd(urlStr, "/");
            }
            httpPut.setURI(new URI(urlStr));
            RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(3000).setConnectionRequestTimeout(3000).setSocketTimeout(3000).build();
            httpPut.setConfig(requestConfig);
            System.out.println("urlStr in request:" + httpPut.getURI().toString());
            // 执行请求
            CloseableHttpResponse response = httpclient.execute(httpPut);
            // 取响应的结果
            int statusCode = response.getStatusLine().getStatusCode();
            // 打印响应结果
            if (statusCode == HttpStatus.SC_OK) {
                String resp = EntityUtils.toString(response.getEntity(), "utf-8");
                System.out.println("status:" + statusCode);
                System.out.println("result:" + resp);
            }
        } catch (URISyntaxException e) {
            logger.error("签名失败: ", e);
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
ruoyi-common/src/main/java/com/ruoyi/common/signature/Signature11.java
对比新文件
@@ -0,0 +1,121 @@
package com.ruoyi.common.signature;
import com.alibaba.fastjson2.JSON;
import com.google.gson.Gson;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URLEncoder;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
/**
 * @email 1603559716@qq.com
 * @author: zf
 * @date: 2023/9/7
 * @time: 11:06
 */
public class Signature11 {
    private static final Logger logger = LoggerFactory.getLogger(Signature11.class);
    // 接口服务地址 考生信息下载
    static String restSever = "https://inspurtestcx.saws.org.cn/sjjh/api/v1/exam/plan/enroll/download";
    // 应用标识
    static String appKey = "hj92qe";
    // 加密算法
    static String signMethod = "SHA-256";
    // 身份系统签发给应用对接的密钥
    static String appPwd = "dxep6j";
    public static void main(String[] args) {
        // 时间戳
        Long ts = Calendar.getInstance().getTime().getTime();
        // 随机数
        String once = RandomStringUtils.randomAlphanumeric(32);
        // 接口 header 中的公共参数
        String commonParamUrl = String.format("appKey=%s" + "&" + "ts=%s" + "&" + "once=%s" + "&"
                + "signMethod=%s", appKey, ts, once, signMethod);
        // 创建 HttpClient 对象
        CloseableHttpClient httpclient = (CloseableHttpClient) SkipHttpsUtils.wrapClient();
        /**
         * GET 查询接口演示代码
         */
        String startTime = "2018-05-25 00:00:00";
        String endTime = "2023-06-01 21:00:00";
        try {
            startTime = URLEncoder.encode(startTime, "UTF-8");
            endTime = URLEncoder.encode(endTime, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            throw new RuntimeException(e.getCause());
        }
        String getQueryParam = "startTime=" + startTime + "&endTime=" + endTime;
        System.out.println(getQueryParam);
        String getFullUrl = restSever + "?" + getQueryParam;
        HttpGet httpGet = new HttpGet(getFullUrl);
        // get 请求查询参数, 用在 URL 上的, 这里若是通过 ID 查询的, 接口中 ID 是作为路径存在的, 所以需要将 ID 组成
        String getAllParamUrl = commonParamUrl + "&" + getQueryParam;
        // 对参数签名, 并放入请求 header 中的 signData 参数中
        try {
            // 签名数据
            String signData = TokenUtils.getSignature(appPwd, getAllParamUrl);
            // 添加 header 参数 appCode、 timestamp、 signatureNonce、 signature
            httpGet.addHeader("appKey", appKey);
            httpGet.addHeader("ts", ts.toString());
            httpGet.addHeader("once", once);
            httpGet.addHeader("signMethod", signMethod);
            System.out.println("once:" + once);
            httpGet.addHeader("signData", signData);
            System.out.println("headers:" + httpGet.getAllHeaders());
            String urlStr = httpGet.getURI().toString();
            // 公共参数 URL
            System.out.println("commonParamter:" + urlStr);
            if (StringUtils.endsWith(urlStr, "/")) {
                urlStr = StringUtils.removeEnd(urlStr, "/");
            }
            httpGet.setURI(new URI(urlStr));
            RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(6000)
                    .setConnectionRequestTimeout(6000).setSocketTimeout(6000).build();
            httpGet.setConfig(requestConfig);
            System.out.println("urlStr in request:" + httpGet.getURI().toString());
            // 执行请求
            CloseableHttpResponse response = httpclient.execute(httpGet);
            // 取响应的结果
            int statusCode = response.getStatusLine().getStatusCode();
            // 打印响应结果
            if (statusCode == HttpStatus.SC_OK) {
                String resp = EntityUtils.toString(response.getEntity(), "utf-8");
                System.out.println("status:" + statusCode);
                Object object = JSON.parse(resp);
                System.out.println("result:" + resp);
            } else {
                System.out.println(statusCode);
            }
        } catch (URISyntaxException e) {
            logger.error("签名失败: ", e);
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
ruoyi-common/src/main/java/com/ruoyi/common/signature/SignatureUtils.java
对比新文件
@@ -0,0 +1,127 @@
package com.ruoyi.common.signature;
import com.alibaba.fastjson2.JSON;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URLEncoder;
import java.util.Calendar;
/**
 * @email 1603559716@qq.com
 * @author: zf
 * @date: 2023/9/8
 * @time: 14:52
 */
public class SignatureUtils {
    private static final Logger logger = LoggerFactory.getLogger(SignatureUtils.class);
    // 接口服务地址
    private static final String restSever = "https://inspurtestcx.saws.org.cn/sjjh";
    // 应用标识
    private static final String appKey = "hj92qe";
    // 加密算法
    private static final String signMethod = "SHA-256";
    // 身份系统签发给应用对接的密钥
    private static final String appPwd = "dxep6j";
    /**
     * 获取数据接口
     * @param getQueryParam
     * @return
     */
    public static Object getObject(String getQueryParam,String url){
        // 时间戳
        Long ts = Calendar.getInstance().getTime().getTime();
        // 随机数
        String once = RandomStringUtils.randomAlphanumeric(32);
        // 接口header 中的公共参数
        String commonParamUrl = String.format("appKey=%s" + "&" + "ts=%s" + "&" + "once=%s" + "&" + "signMethod=%s", appKey, ts, once, signMethod);
        String getFullUrl = restSever + url + "?" + getQueryParam;
        HttpGet httpGet = new HttpGet(getFullUrl);
        // get 请求查询参数, 用在 URL 上的, 这里若是通过 ID 查询的, 接口中 ID 是作为路径存在的, 所以需要将 ID 组成
        String getAllParamUrl = commonParamUrl + "&" + getQueryParam;
        // 创建 HttpClient 对象
        CloseableHttpClient httpclient = (CloseableHttpClient) SkipHttpsUtils.wrapClient();
        // 对参数签名, 并放入请求 header 中的 signData 参数中
        try {
            // 签名数据
            String signData = TokenUtils.getSignature(appPwd, getAllParamUrl);
            // 添加 header 参数 appCode、 timestamp、 signatureNonce、 signature
            httpGet.addHeader("appKey", appKey);
            httpGet.addHeader("ts", ts.toString());
            httpGet.addHeader("once", once);
            httpGet.addHeader("signMethod", signMethod);
            System.out.println("once:" + once);
            httpGet.addHeader("signData", signData);
            System.out.println("headers:" + httpGet.getAllHeaders());
            String urlStr = httpGet.getURI().toString();
            // 公共参数 URL
            System.out.println("commonParamter:" + urlStr);
            if (StringUtils.endsWith(urlStr, "/")) {
                urlStr = StringUtils.removeEnd(urlStr, "/");
            }
            httpGet.setURI(new URI(urlStr));
            RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(6000)
                    .setConnectionRequestTimeout(6000).setSocketTimeout(6000).build();
            httpGet.setConfig(requestConfig);
            System.out.println("urlStr in request:" + httpGet.getURI().toString());
            // 执行请求
            CloseableHttpResponse response = httpclient.execute(httpGet);
            // 取响应的结果
            int statusCode = response.getStatusLine().getStatusCode();
            // 打印响应结果
            if (statusCode == HttpStatus.SC_OK) {
                String resp = EntityUtils.toString(response.getEntity(), "utf-8");
                System.out.println("status:" + statusCode);
                Object object = JSON.parse(resp);
                System.out.println("result:" + resp);
                return object;
            } else {
                System.out.println(statusCode);
            }
        } catch (URISyntaxException e) {
            logger.error("签名失败: ", e);
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
    public static void main(String[] args) {
        /**
         * GET 查询接口演示代码
         */
        String startTime = "2018-05-25 00:00:00";
        String endTime = "2023-06-01 21:00:00";
        try {
            startTime = URLEncoder.encode(startTime, "UTF-8");
            endTime = URLEncoder.encode(endTime, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            throw new RuntimeException(e.getCause());
        }
        String getQueryParam = "startTime=" + startTime + "&endTime=" + endTime;
        System.out.println(getQueryParam);
         Object obj = getObject(getQueryParam,"/api/v1/exam/plan/enroll/download");
        System.out.println(obj);
    }
}
ruoyi-common/src/main/java/com/ruoyi/common/signature/SkipHttpsUtils.java
对比新文件
@@ -0,0 +1,46 @@
package com.ruoyi.common.signature;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.http.client.HttpClient;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
public class SkipHttpsUtils {
    //绕过证书
    public static HttpClient wrapClient() {
        try {
            SSLContext ctx = SSLContext.getInstance("TLS");
            X509TrustManager tm = new X509TrustManager() {
                @Override
                public X509Certificate[] getAcceptedIssuers() {
                    return null;
                }
                @Override
                public void checkClientTrusted(X509Certificate[] arg0,
                                               String arg1) throws CertificateException {
                }
                @Override
                public void checkServerTrusted(X509Certificate[] arg0,
                                               String arg1) throws CertificateException {
                }
            };
            ctx.init(null, new TrustManager[] { tm }, null);
            SSLConnectionSocketFactory ssf = new SSLConnectionSocketFactory(
                    ctx, NoopHostnameVerifier.INSTANCE);
            CloseableHttpClient httpclient = HttpClients.custom()
                    .setSSLSocketFactory(ssf).build();
            return httpclient;
        } catch (Exception e) {
            return HttpClients.createDefault();
        }
    }
}
ruoyi-common/src/main/java/com/ruoyi/common/signature/TokenUtils.java
对比新文件
@@ -0,0 +1,78 @@
package com.ruoyi.common.signature;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
/**
 * @email 1603559716@qq.com
 * @author: zf
 * @date: 2023/9/7
 * @time: 11:01
 */
public class TokenUtils {
    private static final Logger logger = LoggerFactory.getLogger(TokenUtils.class);
    private static String[] hexDigits = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a",
            "b", "c", "d", "e",
            "f" };
    public static String getSignature(String appPwd, String paramUrl) {
        if (StringUtils.isNotBlank(paramUrl)) {
            try {
                paramUrl = URLDecoder.decode(paramUrl, "UTF-8");
            } catch (UnsupportedEncodingException e) {
                logger.error("生成 signData 失败:", e);
                throw new RuntimeException("生成 signData 失败:", e);
            }
        }
        String[] paraArray = new String[] {};
        if (StringUtils.isNotBlank(paramUrl)) {
            String[] queryArray = paramUrl.split("&");
            paraArray = (String[]) ArrayUtils.addAll(queryArray, paraArray);
        }
        Arrays.sort(paraArray);
        StringBuffer buffer = new StringBuffer();
        buffer.append(appPwd);
        buffer.append(":");
        for (int i = 0; i < paraArray.length; i++) {
            buffer.append(paraArray[i]);
            buffer.append("&");
        }
        buffer.deleteCharAt(buffer.length() - 1);
        buffer.append(":");
        buffer.append(appPwd);
        MessageDigest md = null;
        try {
            md = MessageDigest.getInstance("SHA-256");
            md.update(buffer.toString().getBytes("UTF-8"));
        } catch (NoSuchAlgorithmException e) {
            logger.error("生成 signData 失败:", e);
            throw new RuntimeException("生成 signData 失败.", e);
        } catch (UnsupportedEncodingException e) {
            logger.error("生成 signData 失败:", e);
            throw new RuntimeException("生成 signData 失败.", e);
        }
        String encode = byteArrayToHexString(md.digest());
        return encode;
    }
    private static String byteArrayToHexString(byte[] byteArray) {
        StringBuffer sb = new StringBuffer();
        for (byte byt : byteArray) {
            sb.append(byteToHexString(byt));
        }
        return sb.toString();
    }
    private static String byteToHexString(byte byt) {
        int n = byt;
        if (n < 0)
            n = 256 + n;
        return hexDigits[n / 16] + hexDigits[n % 16];
    }
}
ruoyi-file/src/main/java/com/ruoyi/file/service/AttachmentInfoService.java
@@ -30,4 +30,6 @@
     void updateBusinessIdBatch(List<AttachmentInfo> attachmentList);
     void deleteByBusinessId(Long businessId);
     List<AttachmentInfo> findByKeys(List<String> keys);
}
ruoyi-file/src/main/java/com/ruoyi/file/service/impl/AttachmentInfoServiceImpl.java
@@ -84,5 +84,12 @@
    public void deleteByBusinessId(Long businessId) {
        attachmentInfoMapper.deleteByBusinessId(businessId);
    }
    @Override
    public List<AttachmentInfo> findByKeys(List<String> keys) {
        return attachmentInfoMapper.selectList(new LambdaQueryWrapper<AttachmentInfo>()
                .in(AttachmentInfo::getFileKey,keys)
                .eq(AttachmentInfo::getDelFlag,0));
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java
@@ -2,12 +2,14 @@
import java.util.List;
import com.ruoyi.common.core.domain.entity.SysRole;
import org.springframework.stereotype.Repository;
/**
 * 角色表 数据层
 * 
 * @author ruoyi
 */
@Repository
public interface SysRoleMapper
{
    /**