From 1936cef71ca4ef95d52c951b4af5948c7885b893 Mon Sep 17 00:00:00 2001
From: zf <1603559716@qq.com>
Date: 星期一, 19 二月 2024 15:17:26 +0800
Subject: [PATCH] 考试申报

---
 exam-system/src/main/java/com/gkhy/exam/noncoalmine/entity/TrainingInstitution.java                  |    9 
 exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/query/ExamApplyQuery.java                  |   29 +
 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml                                      |   45 ++
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/SysDistrictVo.java                     |   54 +++
 exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/ExamSiteService.java                     |    2 
 exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/TrainingInstitutionController.java    |   12 
 exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/modForm/TrainingInstitutionModForm.java    |    2 
 exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/addForm/ExamApplyAddForm.java              |   86 ++++
 exam-system/src/main/resources/mapper/noncoalmine/TrainingInstitutionMapper.xml                      |   35 +
 exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/query/TrainingInstitutionQuery.java        |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserInstitution.java                           |   10 
 exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/modForm/ExamApplyModForm.java              |   90 +++++
 exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/ExamApplyService.java                    |   21 +
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java                          |   52 ++
 exam-system/src/main/java/com/gkhy/exam/noncoalmine/entity/ExamApply.java                            |   81 ++++
 exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/vo/ExamApplyVO.java                        |   64 +++
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/TrainingInstitutionVo.java             |   33 +
 exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/impl/ExamSiteServiceImpl.java            |    7 
 exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/ExamApplyController.java              |  100 +++++
 exam-system/src/main/java/com/gkhy/exam/noncoalmine/mapper/TrainingInstitutionMapper.java            |    4 
 exam-system/src/main/java/com/gkhy/exam/noncoalmine/mapper/ExamApplyMapper.java                      |   25 +
 exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/impl/TrainingInstitutionServiceImpl.java |   31 +
 ruoyi-system/src/main/resources/mapper/system/SysUserInstitutionMapper.xml                           |   35 +
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java                     |   50 ++
 exam-system/src/main/resources/mapper/noncoalmine/ExamApplyMapper.xml                                |   32 +
 exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/impl/ExamApplyServiceImpl.java           |   53 ++
 exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/ExamSiteController.java               |   11 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserInstitutionMapper.java                     |   45 ++
 exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/TrainingInstitutionService.java          |    5 
 ruoyi-admin/src/main/resources/application-dev.yml                                                   |    6 
 30 files changed, 997 insertions(+), 34 deletions(-)

diff --git a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/ExamApplyController.java b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/ExamApplyController.java
new file mode 100644
index 0000000..adb8200
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/ExamApplyController.java
@@ -0,0 +1,100 @@
+package com.gkhy.exam.noncoalmine.controller;
+
+import com.gkhy.exam.noncoalmine.entity.ExamApply;
+import com.gkhy.exam.noncoalmine.model.addForm.ExamApplyAddForm;
+import com.gkhy.exam.noncoalmine.model.modForm.ExamApplyModForm;
+import com.gkhy.exam.noncoalmine.model.modForm.ExamSiteModForm;
+import com.gkhy.exam.noncoalmine.model.query.ExamApplyQuery;
+import com.gkhy.exam.noncoalmine.service.ExamApplyService;
+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.ApiImplicitParams;
+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;
+@Api(tags = "考试申报接口")
+@RequestMapping("exam/apply")
+@RestController
+public class ExamApplyController extends BaseController {
+	/**
+	 * 服务对象
+	 */
+	@Autowired
+	private ExamApplyService examApplyService;
+
+	/**
+	 * 分页查询所有数据
+	 *
+	 * @param query 查询实体
+	 * @return 所有数据
+	 */
+	@ApiOperation(value = "分页查询列表")
+	@ApiImplicitParams({
+			@ApiImplicitParam(name = "pageNum", dataTypeClass = String.class,value = "页码",required = true),
+			@ApiImplicitParam(name = "pageSize", dataTypeClass = String.class,value = "页数",required = true),
+			/*@ApiImplicitParam(name = "isCm", dataTypeClass = Byte.class,value = "是否是煤矿 1是,0非"),
+			@ApiImplicitParam(name = "districtId", dataTypeClass = Long.class,value = "区域id"),
+			@ApiImplicitParam(name = "examStartTime", dataTypeClass = Date.class,value = "考试开始时间 yyyy-MM-dd"),
+			@ApiImplicitParam(name = "examEndTime", dataTypeClass = Date.class,value = "考试开始时间 yyyy-MM-dd"),*/
+	})
+	@GetMapping("page/list")
+	public TableDataInfo listByPage(ExamApplyQuery query) {
+		startPage();
+		return getDataTable(this.examApplyService.listByPage(query));
+	}
+
+	/**
+	 * 通过主键查询单条数据
+	 *
+	 * @param applyId 主键
+	 * @return 单条数据
+	 */
+	@ApiOperation(value = "通过主键查询单条数据")
+	@GetMapping("get/{applyId}")
+	public AjaxResult selectOne(@PathVariable Long applyId) {
+		return success(this.examApplyService.getById(applyId));
+	}
+
+	/**
+	 * 新增数据
+	 *
+	 * @param addForm 实体对象
+	 * @return 新增结果
+	 */
+	@ApiOperation(value = "新增数据")
+	@PostMapping("/add")
+	public AjaxResult add(@Validated @RequestBody ExamApplyAddForm addForm) {
+		return toAjax(this.examApplyService.add(addForm));
+	}
+
+	/**
+	 * 修改数据
+	 *
+	 * @param modForm 实体对象
+	 * @return 修改结果
+	 */
+	@ApiOperation(value = "修改数据")
+	@PostMapping("/mod")
+	public AjaxResult mod(@Validated @RequestBody ExamApplyModForm modForm) {
+		return toAjax(this.examApplyService.mod(modForm));
+	}
+
+	/**
+	 * 删除数据
+	 *
+	 * @param applyIds 主键结合
+	 * @return 删除结果
+	 */
+	@ApiOperation(value = "删除数据")
+	@DeleteMapping("/del/batch/{applyIds}")
+	public AjaxResult delBatch(@PathVariable("applyIds") List<Long> applyIds) {
+		this.examApplyService.delBatch(applyIds);
+		return success();
+	}
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/ExamSiteController.java b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/ExamSiteController.java
index 011bdaf..2373d20 100644
--- a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/ExamSiteController.java
+++ b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/ExamSiteController.java
@@ -97,5 +97,16 @@
         this.examSiteService.delBatch(siteIds);
         return success();
     }
+
+    /**
+     * 根据机构查询下拉
+     */
+    @ApiOperation(value = "根据机构查询下拉考点")
+    @GetMapping("select/{institutionId}")
+    public AjaxResult getSiteByInstitutionId(@PathVariable Long institutionId) {
+        return success(this.examSiteService.getSiteByInstitutionId(institutionId));
+    }
+
+
 }
 
diff --git a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/TrainingInstitutionController.java b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/TrainingInstitutionController.java
index 67409a9..f7e241d 100644
--- a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/TrainingInstitutionController.java
+++ b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/controller/TrainingInstitutionController.java
@@ -6,6 +6,7 @@
 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.domain.model.LoginUser;
 import com.ruoyi.common.core.page.TableDataInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -103,7 +104,16 @@
     @ApiOperation(value = "选择列表")
     @GetMapping("select")
     public AjaxResult selectList(TrainingInstitutionQuery query){
-        return success(this.trainingInstitutionService.listByPage(query));
+        return success(this.trainingInstitutionService.select(query));
+    }
+
+    /**
+     * 选择列表-根据角色身份
+     */
+    @ApiOperation(value = "选择列表-根据角色身份")
+    @GetMapping("selectByPermission")
+    public AjaxResult selectByPermissionList(TrainingInstitutionQuery query){
+        return success(this.trainingInstitutionService.selectByPermissionList(query));
     }
 }
 
diff --git a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/entity/ExamApply.java b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/entity/ExamApply.java
new file mode 100644
index 0000000..7644c5c
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/entity/ExamApply.java
@@ -0,0 +1,81 @@
+package com.gkhy.exam.noncoalmine.entity;
+
+import java.time.LocalDateTime;
+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 com.ruoyi.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * (ExamApply)表实体类
+ *
+ * @author makejava
+ * @since 2024-02-04 13:36:51
+ */
+@Data
+public class ExamApply{
+
+
+    @TableId(type = IdType.AUTO)
+    private Long applyId;
+    //考试计划批次全称
+    private String examName;
+    //机构
+    private Long institutionId;
+
+    //考点
+    private Long siteId;
+    //考试人数
+    private Integer examNum;
+    //是否为煤矿:0为非,1是
+    private Byte isCm;
+    //考试开始时间
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date examStartTime;
+    //考试结束时间
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date examEndTime;
+    //补考开始时间
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date resitStartTime;
+    //补考结束时间
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date resitEndTime;
+    //实操开始时间
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date operationStartTime;
+    //实操结束时间
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date operationEndTime;
+    //考点联系人
+    private String siteContacts;
+    //考点联系人电话
+    private String siteContactsPhone;
+    //机构联系人
+    private String institutionContacts;
+    //机构联系人电话
+    private String institutionContactsPhone;
+    
+    private Integer 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 LocalDateTime createTime;
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
+}
+
diff --git a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/entity/TrainingInstitution.java b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/entity/TrainingInstitution.java
index 7e1d178..35fd1c0 100644
--- a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/entity/TrainingInstitution.java
+++ b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/entity/TrainingInstitution.java
@@ -13,16 +13,11 @@
 
 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 Long institutionId;
     //机构名称
     private String institutionName;
     //地区id
diff --git a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/mapper/ExamApplyMapper.java b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/mapper/ExamApplyMapper.java
new file mode 100644
index 0000000..89f2677
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/mapper/ExamApplyMapper.java
@@ -0,0 +1,25 @@
+package com.gkhy.exam.noncoalmine.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gkhy.exam.noncoalmine.entity.ExamApply;
+import com.gkhy.exam.noncoalmine.model.query.ExamApplyQuery;
+import com.gkhy.exam.noncoalmine.model.vo.ExamApplyVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * (ExamApply)表数据库访问层
+ *
+ * @author makejava
+ * @since 2024-02-04 13:36:49
+ */
+@Repository
+@Mapper
+public interface ExamApplyMapper extends BaseMapper<ExamApply> {
+
+	List<ExamApplyVO> listByPage(@Param("query") ExamApplyQuery query);
+}
+
diff --git a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/mapper/TrainingInstitutionMapper.java b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/mapper/TrainingInstitutionMapper.java
index b862cbd..ddcd9e9 100644
--- a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/mapper/TrainingInstitutionMapper.java
+++ b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/mapper/TrainingInstitutionMapper.java
@@ -21,5 +21,9 @@
 public interface TrainingInstitutionMapper extends BaseMapper<TrainingInstitution> {
 
 	List<TrainingInstitutionVO> listByPage(@Param("query") TrainingInstitutionQuery query);
+
+	List<TrainingInstitutionVO> selectAll(@Param("query") TrainingInstitutionQuery query);
+
+	List<TrainingInstitutionVO> getUserInstitutions(@Param("query") TrainingInstitutionQuery query);
 }
 
diff --git a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/addForm/ExamApplyAddForm.java b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/addForm/ExamApplyAddForm.java
new file mode 100644
index 0000000..d587507
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/addForm/ExamApplyAddForm.java
@@ -0,0 +1,86 @@
+package com.gkhy.exam.noncoalmine.model.addForm;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2024/2/4
+ * @time: 14:39
+ */
+@ApiModel
+@Data
+public class ExamApplyAddForm {
+	@ApiModelProperty(value = "考试批次全称",required = true)
+	@NotEmpty(message = "请填写考试批次全称")
+	private String examName;
+
+	@ApiModelProperty(value = "机构id",required = true)
+	@NotNull(message = "请选择机构")
+	private Long institutionId;
+
+	@ApiModelProperty(value = "考试点id",required = true)
+	@NotNull(message = "请选择考试点")
+	private Long siteId;
+
+	@ApiModelProperty(value = "考试人数",required = true)
+	@NotNull(message = "请填写考试人数")
+	private Integer examNum;
+
+	//是否为煤矿:0为非,1是
+	@ApiModelProperty(value = "是否为煤矿",required = true,notes = "0为非,1是")
+	@NotNull(message = "请选择是否为煤矿")
+	private Byte isCm;
+
+	@ApiModelProperty(value = "考试开始时间")
+	@NotNull(message = "请选择考试开始时间")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date examStartTime;
+
+	@ApiModelProperty(value = "考试结束时间")
+	@NotNull(message = "请选择考试结束时间")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date examEndTime;
+
+	@ApiModelProperty(value = "补考开始时间")
+	@NotNull(message = "请选择补考开始时间")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date resitStartTime;
+
+	@ApiModelProperty(value = "补考结束时间")
+	@NotNull(message = "请选择补考结束时间")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date resitEndTime;
+
+	@ApiModelProperty(value = "实操开始时间")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date operationStartTime;
+
+	@ApiModelProperty(value = "实操结束时间")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date operationEndTime;
+
+	@ApiModelProperty(value = "考点联系人")
+	@NotEmpty(message = "请输入考点联系人")
+	private String siteContacts;
+
+	@ApiModelProperty(value = "考点联系人电话")
+	@NotEmpty(message = "请输入考点联系人电话")
+	private String siteContactsPhone;
+
+	@ApiModelProperty(value = "机构联系人")
+	@NotEmpty(message = "请输入机构联系人")
+	private String institutionContacts;
+
+	@ApiModelProperty(value = "机构联系人电话")
+	@NotEmpty(message = "请输入机构联系人电话")
+	private String institutionContactsPhone;
+
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/modForm/ExamApplyModForm.java b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/modForm/ExamApplyModForm.java
new file mode 100644
index 0000000..4a90113
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/modForm/ExamApplyModForm.java
@@ -0,0 +1,90 @@
+package com.gkhy.exam.noncoalmine.model.modForm;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2024/2/4
+ * @time: 14:57
+ */
+@ApiModel
+@Data
+public class ExamApplyModForm {
+
+	@NotNull(message = "请选择考试申报id")
+	private Long applyId;
+
+	@ApiModelProperty(value = "考试批次全称",required = true)
+	@NotEmpty(message = "请填写考试批次全称")
+	private String examName;
+
+	@ApiModelProperty(value = "机构id",required = true)
+	@NotNull(message = "请选择机构")
+	private Long institutionId;
+
+	@ApiModelProperty(value = "考试点id",required = true)
+	@NotNull(message = "请选择考试点")
+	private Long siteId;
+
+	@ApiModelProperty(value = "考试人数",required = true)
+	@NotNull(message = "请填写考试人数")
+	private Integer examNum;
+
+	//是否为煤矿:0为非,1是
+	@ApiModelProperty(value = "是否为煤矿",required = true,notes = "0为非,1是")
+	@NotNull(message = "请选择是否为煤矿")
+	private Byte isCm;
+
+	@ApiModelProperty(value = "考试开始时间")
+	@NotNull(message = "请选择考试开始时间")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date examStartTime;
+
+	@ApiModelProperty(value = "考试结束时间")
+	@NotNull(message = "请选择考试结束时间")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date examEndTime;
+
+	@ApiModelProperty(value = "补考开始时间")
+	@NotNull(message = "请选择补考开始时间")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date resitStartTime;
+
+	@ApiModelProperty(value = "补考结束时间")
+	@NotNull(message = "请选择补考结束时间")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date resitEndTime;
+
+	@ApiModelProperty(value = "实操开始时间")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date operationStartTime;
+
+	@ApiModelProperty(value = "实操结束时间")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date operationEndTime;
+
+	@ApiModelProperty(value = "考点联系人")
+	@NotEmpty(message = "请输入考点联系人")
+	private String siteContacts;
+
+	@ApiModelProperty(value = "考点联系人电话")
+	@NotEmpty(message = "请输入考点联系人电话")
+	private String siteContactsPhone;
+
+	@ApiModelProperty(value = "机构联系人")
+	@NotEmpty(message = "请输入机构联系人")
+	private String institutionContacts;
+
+	@ApiModelProperty(value = "机构联系人电话")
+	@NotEmpty(message = "请输入机构联系人电话")
+	private String institutionContactsPhone;
+
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/modForm/TrainingInstitutionModForm.java b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/modForm/TrainingInstitutionModForm.java
index f8e23ec..766d6e4 100644
--- a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/modForm/TrainingInstitutionModForm.java
+++ b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/modForm/TrainingInstitutionModForm.java
@@ -16,7 +16,7 @@
 public class TrainingInstitutionModForm {
 	@ApiModelProperty(value = "机构主键",required = true)
 	@NotNull(message = "机构主键不可为空")
-	private String institutionId;
+	private Long institutionId;
 	//机构名称
 	@ApiModelProperty(value = "机构名称",required = true)
 	@NotEmpty(message = "请输入机构名称")
diff --git a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/query/ExamApplyQuery.java b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/query/ExamApplyQuery.java
new file mode 100644
index 0000000..95db45e
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/query/ExamApplyQuery.java
@@ -0,0 +1,29 @@
+package com.gkhy.exam.noncoalmine.model.query;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2024/2/4
+ * @time: 13:43
+ */
+@ApiModel
+@Data
+public class ExamApplyQuery {
+	@ApiModelProperty(value = "区域id")
+	private Long districtId;
+	@ApiModelProperty(value = "是否是煤矿 1是,0非")
+	private Byte isCm;
+	@ApiModelProperty(value = "开始时间")
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	private Date examStartTime;
+	@ApiModelProperty(value = "结束时间")
+	@JsonFormat(pattern = "yyyy-MM-dd")
+	private Date examEndTime;
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/query/TrainingInstitutionQuery.java b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/query/TrainingInstitutionQuery.java
index bf0ba97..2b8144d 100644
--- a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/query/TrainingInstitutionQuery.java
+++ b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/query/TrainingInstitutionQuery.java
@@ -23,4 +23,6 @@
 	//区划编码
 	@ApiModelProperty(value = "区划编码")
 	private String districtCode;
+
+	private Long userId;
 }
diff --git a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/vo/ExamApplyVO.java b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/vo/ExamApplyVO.java
new file mode 100644
index 0000000..165a018
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/model/vo/ExamApplyVO.java
@@ -0,0 +1,64 @@
+package com.gkhy.exam.noncoalmine.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2024/2/4
+ * @time: 13:47
+ */
+@Data
+public class ExamApplyVO {
+	private Long applyId;
+
+	private String examName;
+
+	private Long institutionId;
+
+	private String institutionName;
+
+	private Long siteId;
+
+	private String siteName;
+
+	private String districtName;
+
+	private Integer examNum;
+	//是否为煤矿:0为非,1是
+	private Byte isCm;
+
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date examStartTime;
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date examEndTime;
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date resitStartTime;
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date resitEndTime;
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date operationStartTime;
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date operationEndTime;
+
+	private String siteContacts;
+
+	private String siteContactsPhone;
+
+	private String institutionContacts;
+
+	private String institutionContactsPhone;
+
+	private Integer delFlag;
+
+	private Date createTime;
+
+	private Date updateTime;
+
+	private String createBy;
+
+	private String updateBy;
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/ExamApplyService.java b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/ExamApplyService.java
new file mode 100644
index 0000000..43fa026
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/ExamApplyService.java
@@ -0,0 +1,21 @@
+package com.gkhy.exam.noncoalmine.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gkhy.exam.noncoalmine.entity.ExamApply;
+import com.gkhy.exam.noncoalmine.model.addForm.ExamApplyAddForm;
+import com.gkhy.exam.noncoalmine.model.modForm.ExamApplyModForm;
+import com.gkhy.exam.noncoalmine.model.query.ExamApplyQuery;
+import com.gkhy.exam.noncoalmine.model.vo.ExamApplyVO;
+
+import java.util.List;
+
+public interface ExamApplyService extends IService<ExamApply> {
+
+	List<ExamApplyVO> listByPage(ExamApplyQuery query);
+
+	void delBatch(List<Long> applyIds);
+
+	int add(ExamApplyAddForm addForm);
+
+	int mod(ExamApplyModForm modForm);
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/ExamSiteService.java b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/ExamSiteService.java
index b00fc77..1a64953 100644
--- a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/ExamSiteService.java
+++ b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/ExamSiteService.java
@@ -24,5 +24,7 @@
 	int mod(ExamSiteModForm modForm);
 
 	void delBatch(List<Long> siteIds);
+
+	List<ExamSite> getSiteByInstitutionId(Long institutionId);
 }
 
diff --git a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/TrainingInstitutionService.java b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/TrainingInstitutionService.java
index a38eebe..efeeebf 100644
--- a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/TrainingInstitutionService.java
+++ b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/TrainingInstitutionService.java
@@ -6,6 +6,7 @@
 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.ruoyi.common.core.domain.model.LoginUser;
 
 import java.util.List;
 
@@ -24,5 +25,9 @@
 	int add(TrainingInstitutionAddForm addForm);
 
 	void delBatch(List<Long> institutionIds);
+
+	List<TrainingInstitutionVO> selectByPermissionList(TrainingInstitutionQuery query);
+
+	List<TrainingInstitutionVO> select(TrainingInstitutionQuery query);
 }
 
diff --git a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/impl/ExamApplyServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/impl/ExamApplyServiceImpl.java
new file mode 100644
index 0000000..95922c3
--- /dev/null
+++ b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/impl/ExamApplyServiceImpl.java
@@ -0,0 +1,53 @@
+package com.gkhy.exam.noncoalmine.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gkhy.exam.noncoalmine.entity.ExamApply;
+import com.gkhy.exam.noncoalmine.entity.ExamSite;
+import com.gkhy.exam.noncoalmine.mapper.ExamApplyMapper;
+import com.gkhy.exam.noncoalmine.model.addForm.ExamApplyAddForm;
+import com.gkhy.exam.noncoalmine.model.modForm.ExamApplyModForm;
+import com.gkhy.exam.noncoalmine.model.query.ExamApplyQuery;
+import com.gkhy.exam.noncoalmine.model.vo.ExamApplyVO;
+import com.gkhy.exam.noncoalmine.service.ExamApplyService;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @email 1603559716@qq.com
+ * @author: zf
+ * @date: 2024/2/4
+ * @time: 13:40
+ */
+@Service("examApplyService")
+public class ExamApplyServiceImpl extends ServiceImpl<ExamApplyMapper, ExamApply> implements ExamApplyService {
+
+	@Override
+	public List<ExamApplyVO> listByPage(ExamApplyQuery query) {
+		return baseMapper.listByPage(query);
+	}
+
+	@Override
+	public void delBatch(List<Long> applyIds) {
+		UpdateWrapper<ExamApply> updateWrapper = new UpdateWrapper<>();
+		updateWrapper.in("apply_id",applyIds)
+				.set("del_flag",(byte)2);
+		this.update(updateWrapper);
+	}
+
+	@Override
+	public int add(ExamApplyAddForm addForm) {
+		ExamApply examApply = new ExamApply();
+		BeanUtils.copyProperties(addForm,examApply);
+		examApply.setDelFlag(0);
+		return baseMapper.insert(examApply);
+	}
+	@Override
+	public int mod(ExamApplyModForm modForm) {
+		ExamApply examApply = new ExamApply();
+		BeanUtils.copyProperties(modForm,examApply);
+		return baseMapper.updateById(examApply);
+	}
+}
diff --git a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/impl/ExamSiteServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/impl/ExamSiteServiceImpl.java
index 1844e07..36c8bdc 100644
--- a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/impl/ExamSiteServiceImpl.java
+++ b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/impl/ExamSiteServiceImpl.java
@@ -1,5 +1,6 @@
 package com.gkhy.exam.noncoalmine.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gkhy.exam.noncoalmine.entity.ExamSite;
@@ -94,5 +95,11 @@
 				.set("del_flag",(byte)2);
 		this.update(updateWrapper);
 	}
+
+	@Override
+	public List<ExamSite> getSiteByInstitutionId(Long institutionId) {
+		List<ExamSite> examSites = baseMapper.selectList(new LambdaQueryWrapper<ExamSite>().eq(ExamSite::getDelFlag, (byte) 0).eq(ExamSite::getInstitutionId, institutionId));
+		return examSites;
+	}
 }
 
diff --git a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/impl/TrainingInstitutionServiceImpl.java b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/impl/TrainingInstitutionServiceImpl.java
index 33526c0..c67861a 100644
--- a/exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/impl/TrainingInstitutionServiceImpl.java
+++ b/exam-system/src/main/java/com/gkhy/exam/noncoalmine/service/impl/TrainingInstitutionServiceImpl.java
@@ -1,5 +1,6 @@
 package com.gkhy.exam.noncoalmine.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gkhy.exam.noncoalmine.entity.TrainingInstitution;
@@ -11,6 +12,7 @@
 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.core.domain.model.LoginUser;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.domain.SysDistrict;
@@ -19,15 +21,11 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 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
@@ -80,5 +78,26 @@
 		this.update(updateWrapper);
 	}
 
+	@Override
+	public List<TrainingInstitutionVO> selectByPermissionList(TrainingInstitutionQuery query) {
+		LoginUser loginUser = SecurityUtils.getLoginUser();
+		List<TrainingInstitutionVO> institutionVOList = new ArrayList<>();
+		Set<String> permissions = loginUser.getPermissions();
+		if(permissions.contains("admin") || permissions.contains("common")){
+			//管理员
+			institutionVOList = trainingInstitutionMapper.selectAll(query);
+		}else {
+			query.setUserId(loginUser.getUserId());
+			institutionVOList = trainingInstitutionMapper.getUserInstitutions(query);
+		}
+
+		return institutionVOList;
+	}
+
+	@Override
+	public List<TrainingInstitutionVO> select(TrainingInstitutionQuery query) {
+		return trainingInstitutionMapper.selectAll(query);
+	}
+
 }
 
diff --git a/exam-system/src/main/resources/mapper/noncoalmine/ExamApplyMapper.xml b/exam-system/src/main/resources/mapper/noncoalmine/ExamApplyMapper.xml
new file mode 100644
index 0000000..3d0078d
--- /dev/null
+++ b/exam-system/src/main/resources/mapper/noncoalmine/ExamApplyMapper.xml
@@ -0,0 +1,32 @@
+<?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.ExamApplyMapper">
+    <select id="listByPage" resultType="com.gkhy.exam.noncoalmine.model.vo.ExamApplyVO">
+        SELECT
+        ea.*,
+        t.institution_name,
+        es.site_name,
+        d.NAME AS districtName
+        FROM
+        exam_apply ea
+        LEFT JOIN training_institution t ON t.institution_id = ea.institution_id
+        LEFT JOIN sys_district d ON d.id = t.district_id
+        LEFT JOIN exam_site es ON es.site_id = ea.site_id
+        WHERE
+        ea.del_flag = 0
+        <if test="query.districtId != null">
+            and d.district_id = #{query.districtId}
+        </if>
+        <if test="query.examStartTime != null"><!-- 开始时间检索 -->
+            and date_format(ea.exam_start_time,'%y-%m-%d') &gt;= date_format(#{query.examStartTime},'%y-%m-%d')
+        </if>
+        <if test="query.examEndTime != null"><!-- 结束时间检索 -->
+            and date_format(ea.exam_end_time,'%y-%m-%d') &lt;= date_format(#{query.examEndTime},'%y-%m-%d')
+        </if>
+        order by ea.create_time desc
+
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/exam-system/src/main/resources/mapper/noncoalmine/TrainingInstitutionMapper.xml b/exam-system/src/main/resources/mapper/noncoalmine/TrainingInstitutionMapper.xml
index 30d04f5..7dd1bee 100644
--- a/exam-system/src/main/resources/mapper/noncoalmine/TrainingInstitutionMapper.xml
+++ b/exam-system/src/main/resources/mapper/noncoalmine/TrainingInstitutionMapper.xml
@@ -24,4 +24,39 @@
         order by t.create_time desc
 
     </select>
+    <select id="selectAll" 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.isCm != null">
+            AND t.is_cm = #{query.isCm}
+        </if>
+        order by t.is_cm asc
+
+    </select>
+    <select id="getUserInstitutions" resultType="com.gkhy.exam.noncoalmine.model.vo.TrainingInstitutionVO">
+        SELECT
+            t.*,
+            d.NAME AS districtName
+        FROM
+            sys_user_institution ui
+                LEFT JOIN training_institution t ON ui.institution_id = t.institution_id
+                LEFT JOIN sys_district d ON d.id = t.district_id
+        WHERE
+            ui.user_id = #{query.userId}
+        <if test="query.institutionName != null and query.institutionName != ''">
+            and t.institution_name like concat('%', #{query.institutionName}, '%')
+        </if>
+        order by t.create_time desc
+
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml
index bddbfcd..aa77ac9 100644
--- a/ruoyi-admin/src/main/resources/application-dev.yml
+++ b/ruoyi-admin/src/main/resources/application-dev.yml
@@ -24,9 +24,9 @@
         druid:
             # 主库数据源
             master:
-                url: jdbc:mysql://121.239.169.30:33306/swspkmas?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-                username: gkhynew
-                password: 123456
+                url: jdbc:mysql://localhost:3306/swspkmas?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                username: root
+                password: root
             # 从库数据源
             slave:
                 # 从数据源开关/默认关闭
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
index db31b62..32e5ee7 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -3,6 +3,9 @@
 import java.util.Date;
 import java.util.List;
 import javax.validation.constraints.*;
+
+import com.ruoyi.common.core.domain.model.SysDistrictVo;
+import com.ruoyi.common.core.domain.model.TrainingInstitutionVo;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
@@ -28,7 +31,9 @@
     /** 部门ID */
     @Excel(name = "部门编号", type = Type.IMPORT)
     private Long deptId;
-
+    /**
+     * 区域
+     */
     private Long districtId;
 
     private String unit;
@@ -92,6 +97,19 @@
 
     /** 角色ID */
     private Long roleId;
+
+    /**
+     * 身份证
+     */
+    private String  idCard;
+    /***
+     * 机构ids
+     */
+    private Long[] institutionIds;
+
+    private SysDistrictVo district;
+
+    private List<TrainingInstitutionVo> institutions;
 
     public SysUser()
     {
@@ -317,6 +335,38 @@
         this.unit = unit;
     }
 
+    public String getIdCard() {
+        return idCard;
+    }
+
+    public void setIdCard(String idCard) {
+        this.idCard = idCard;
+    }
+
+    public SysDistrictVo getDistrict() {
+        return district;
+    }
+
+    public void setDistrict(SysDistrictVo district) {
+        this.district = district;
+    }
+
+    public Long[] getInstitutionIds() {
+        return institutionIds;
+    }
+
+    public void setInstitutionIds(Long[] institutionIds) {
+        this.institutionIds = institutionIds;
+    }
+
+    public List<TrainingInstitutionVo> getInstitutions() {
+        return institutions;
+    }
+
+    public void setInstitutions(List<TrainingInstitutionVo> institutions) {
+        this.institutions = institutions;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/SysDistrictVo.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/SysDistrictVo.java
new file mode 100644
index 0000000..f29de82
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/SysDistrictVo.java
@@ -0,0 +1,54 @@
+package com.ruoyi.common.core.domain.model;
+
+
+public class SysDistrictVo {
+	private Long districtId;
+
+	private String districtCode;
+
+	private String districtName;
+
+	private String parentcode;
+
+	private Byte districtType;
+
+	public Long getDistrictId() {
+		return districtId;
+	}
+
+	public void setDistrictId(Long districtId) {
+		this.districtId = districtId;
+	}
+
+	public String getDistrictCode() {
+		return districtCode;
+	}
+
+	public void setDistrictCode(String districtCode) {
+		this.districtCode = districtCode;
+	}
+
+	public String getDistrictName() {
+		return districtName;
+	}
+
+	public void setDistrictName(String districtName) {
+		this.districtName = districtName;
+	}
+
+	public String getParentcode() {
+		return parentcode;
+	}
+
+	public void setParentcode(String parentcode) {
+		this.parentcode = parentcode;
+	}
+
+	public Byte getDistrictType() {
+		return districtType;
+	}
+
+	public void setDistrictType(Byte districtType) {
+		this.districtType = districtType;
+	}
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/TrainingInstitutionVo.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/TrainingInstitutionVo.java
new file mode 100644
index 0000000..5c86302
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/TrainingInstitutionVo.java
@@ -0,0 +1,33 @@
+package com.ruoyi.common.core.domain.model;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class TrainingInstitutionVo {
+
+	private Long 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;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserInstitution.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserInstitution.java
new file mode 100644
index 0000000..6a380d2
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserInstitution.java
@@ -0,0 +1,10 @@
+package com.ruoyi.system.domain;
+
+import lombok.Data;
+
+@Data
+public class SysUserInstitution {
+	private Long userId;
+	private Long institutionId;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserInstitutionMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserInstitutionMapper.java
new file mode 100644
index 0000000..acd5199
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserInstitutionMapper.java
@@ -0,0 +1,45 @@
+package com.ruoyi.system.mapper;
+
+
+import com.ruoyi.system.domain.SysUserInstitution;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface SysUserInstitutionMapper {
+
+	/**
+	 * 通过用户ID删除用户和机构关联
+	 *
+	 * @param userId 用户ID
+	 * @return 结果
+	 */
+	public int deleteUserInstitutionByUserId(Long userId);
+
+	/**
+	 * 批量删除用户和机构关联
+	 *
+	 * @param userIds 需要删除的数据ID
+	 * @return 结果
+	 */
+	public int deleteUserInstitution(Long[] userIds);
+
+
+
+	/**
+	 * 批量新增用户机构信息
+	 *
+	 * @param userInstitutionList 用户机构列表
+	 * @return 结果
+	 */
+	public int batchUserInstitution(List<SysUserInstitution> userInstitutionList);
+
+	/**
+	 * 删除用户和机构关联信息
+	 *
+	 * @param userInstitution 用户和机构关联信息
+	 * @return 结果
+	 */
+	public int deleteUserInstitution(SysUserInstitution userInstitution);
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index b371060..7351376 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -4,6 +4,9 @@
 import java.util.List;
 import java.util.stream.Collectors;
 import javax.validation.Validator;
+
+import com.ruoyi.system.domain.SysUserInstitution;
+import com.ruoyi.system.mapper.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,11 +25,6 @@
 import com.ruoyi.system.domain.SysPost;
 import com.ruoyi.system.domain.SysUserPost;
 import com.ruoyi.system.domain.SysUserRole;
-import com.ruoyi.system.mapper.SysPostMapper;
-import com.ruoyi.system.mapper.SysRoleMapper;
-import com.ruoyi.system.mapper.SysUserMapper;
-import com.ruoyi.system.mapper.SysUserPostMapper;
-import com.ruoyi.system.mapper.SysUserRoleMapper;
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysUserService;
 
@@ -60,6 +58,9 @@
 
     @Autowired
     protected Validator validator;
+
+    @Autowired
+    private SysUserInstitutionMapper institutionMapper;
 
     /**
      * 根据条件分页查询用户列表
@@ -259,11 +260,14 @@
         // 新增用户信息
         int rows = userMapper.insertUser(user);
         // 新增用户岗位关联
-        insertUserPost(user);
+        //insertUserPost(user);
         // 新增用户与角色管理
         insertUserRole(user);
+        //用户关联机构
+        insertUserInstitution(user.getUserId(), user.getInstitutionIds());
         return rows;
     }
+
 
     /**
      * 注册用户信息
@@ -293,9 +297,12 @@
         // 新增用户与角色管理
         insertUserRole(user);
         // 删除用户与岗位关联
-        userPostMapper.deleteUserPostByUserId(userId);
+       /* userPostMapper.deleteUserPostByUserId(userId);
         // 新增用户与岗位管理
-        insertUserPost(user);
+        insertUserPost(user);*/
+        //删除机构
+        institutionMapper.deleteUserInstitutionByUserId(userId);
+        insertUserInstitution(user.getUserId(), user.getInstitutionIds());
         return userMapper.updateUser(user);
     }
 
@@ -432,6 +439,29 @@
     }
 
     /**
+     * 新增用户机构信息
+     *
+     * @param userId 用户ID
+     * @param institutionIds 机构组
+     */
+    public void insertUserInstitution(Long userId, Long[] institutionIds)
+    {
+        if (StringUtils.isNotEmpty(institutionIds))
+        {
+            // 新增用户与角色管理
+            List<SysUserInstitution> list = new ArrayList<SysUserInstitution>(institutionIds.length);
+            for (Long institutionId : institutionIds)
+            {
+                SysUserInstitution ui = new SysUserInstitution();
+                ui.setUserId(userId);
+                ui.setInstitutionId(institutionId);
+                list.add(ui);
+            }
+            institutionMapper.batchUserInstitution(list);
+        }
+    }
+
+    /**
      * 通过用户ID删除用户
      * 
      * @param userId 用户ID
@@ -466,7 +496,9 @@
         // 删除用户与角色关联
         userRoleMapper.deleteUserRole(userIds);
         // 删除用户与岗位关联
-        userPostMapper.deleteUserPost(userIds);
+        //userPostMapper.deleteUserPost(userIds);
+        //删除机构
+        institutionMapper.deleteUserInstitution(userIds);
         return userMapper.deleteUserByIds(userIds);
     }
 
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserInstitutionMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserInstitutionMapper.xml
new file mode 100644
index 0000000..f63b685
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserInstitutionMapper.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.SysUserInstitutionMapper">
+
+	<resultMap type="SysUserInstitution" id="SysUserInstitutionResult">
+		<result property="userId"     column="user_id"      />
+		<result property="institutionId"     column="institution_id"      />
+	</resultMap>
+
+	<delete id="deleteUserInstitutionByUserId" parameterType="Long">
+		delete from sys_user_institution where user_id=#{userId}
+	</delete>
+	
+	<delete id="deleteUserInstitution" parameterType="Long">
+ 		delete from sys_user_institution where user_id in
+ 		<foreach collection="array" item="userId" open="(" separator="," close=")">
+ 			#{userId}
+        </foreach> 
+ 	</delete>
+	
+	<insert id="batchUserInstitution">
+		insert into sys_user_institution(user_id, institution_id) values
+		<foreach item="item" index="index" collection="list" separator=",">
+			(#{item.userId},#{item.institutionId})
+		</foreach>
+	</insert>
+	
+	<delete id="deleteUserInstitution" parameterType="SysUserInstitution">
+		delete from sys_user_institution where user_id=#{userId} and institution_id=#{institutionId}
+	</delete>
+	
+
+</mapper> 
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index b580763..9fde387 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -25,8 +25,11 @@
         <result property="updateBy"     column="update_by"    />
         <result property="updateTime"   column="update_time"  />
         <result property="remark"       column="remark"       />
+		<result property="idCard"       column="id_card" />
         <association property="dept"    javaType="SysDept"         resultMap="deptResult" />
+		<association property="district" javaType="SysDistrictVo"  resultMap="DistrictResult"/>
         <collection  property="roles"   javaType="java.util.List"  resultMap="RoleResult" />
+		<collection  property="institutions"   javaType="java.util.List"  resultMap="InstitutionResult" />
     </resultMap>
 	
     <resultMap id="deptResult" type="SysDept">
@@ -47,20 +50,41 @@
         <result property="dataScope"    column="data_scope"     />
         <result property="status"       column="role_status"    />
     </resultMap>
+
+	<resultMap id="DistrictResult" type="SysDistrictVo">
+		<id     property="districtId"       column="district_id"        />
+		<result property="districtCode"     column="district_code"      />
+		<result property="districtName"      column="district_name"       />
+		<result property="parentcode"     column="parentcode"      />
+		<result property="districtType"    column="district_type"     />
+	</resultMap>
+
+	<resultMap id="InstitutionResult" type="TrainingInstitutionVo">
+		<id     property="institutionId"       column="institution_id"        />
+		<result property="institutionName"       column="institution_name" />
+	</resultMap>
 	
 	<sql id="selectUserVo">
-        select u.user_id, u.dept_id, u.district_id,u.unit,u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
+        select u.user_id, u.dept_id, u.district_id,u.unit,u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, u.id_card,
         d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
-        r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
+        r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status,
+        di.name as district_name,
+		ti.institution_id, ti.institution_name
         from sys_user u
 		    left join sys_dept d on u.dept_id = d.dept_id
 		    left join sys_user_role ur on u.user_id = ur.user_id
 		    left join sys_role r on r.role_id = ur.role_id
+			left join sys_district di on di.id = u.district_id
+			left join sys_user_institution ui on u.user_id = ui.user_id
+			left join training_institution ti on ui.institution_id = ti.institution_id
     </sql>
     
     <select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
-		select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u
+		select u.user_id, u.dept_id, u.district_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader, u.id_card, ti.institution_id, ti.institution_name, di.name as district_name from sys_user u
 		left join sys_dept d on u.dept_id = d.dept_id
+		left join sys_district di on di.id = u.district_id
+		left join sys_user_institution ui on u.user_id = ui.user_id
+		left join training_institution ti on ui.institution_id = ti.institution_id
 		where u.del_flag = '0'
 		<if test="userId != null and userId != 0">
 			AND u.user_id = #{userId}
@@ -88,11 +112,13 @@
 	</select>
 	
 	<select id="selectAllocatedList" parameterType="SysUser" resultMap="SysUserResult">
-	    select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
+	    select distinct u.user_id, u.dept_id, u.district_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time, u.id_card, di.name as district_name
 	    from sys_user u
 			 left join sys_dept d on u.dept_id = d.dept_id
 			 left join sys_user_role ur on u.user_id = ur.user_id
 			 left join sys_role r on r.role_id = ur.role_id
+	    	 left join sys_district di on di.id = u.district_id
+
 	    where u.del_flag = '0' and r.role_id = #{roleId}
 	    <if test="userName != null and userName != ''">
 			AND u.user_name like concat('%', #{userName}, '%')
@@ -105,12 +131,13 @@
 	</select>
 	
 	<select id="selectUnallocatedList" parameterType="SysUser" resultMap="SysUserResult">
-	    select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
+	    select distinct u.user_id, u.dept_id, u.district_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time, u.id_card, di.name as district_name
 	    from sys_user u
 			 left join sys_dept d on u.dept_id = d.dept_id
 			 left join sys_user_role ur on u.user_id = ur.user_id
 			 left join sys_role r on r.role_id = ur.role_id
-	    where u.del_flag = '0' and (r.role_id != #{roleId} or r.role_id IS NULL)
+			 left join sys_district di on di.id = u.district_id
+		where u.del_flag = '0' and (r.role_id != #{roleId} or r.role_id IS NULL)
 	    and u.user_id not in (select u.user_id from sys_user u inner join sys_user_role ur on u.user_id = ur.user_id and ur.role_id = #{roleId})
 	    <if test="userName != null and userName != ''">
 			AND u.user_name like concat('%', #{userName}, '%')
@@ -158,6 +185,8 @@
  			<if test="status != null and status != ''">status,</if>
  			<if test="createBy != null and createBy != ''">create_by,</if>
  			<if test="remark != null and remark != ''">remark,</if>
+			<if test="idCard != null and idCard != ''">id_card,</if>
+			<if test="districtId != null and districtId != 0">district_id,</if>
  			create_time
  		)values(
  			<if test="userId != null and userId != ''">#{userId},</if>
@@ -172,6 +201,8 @@
  			<if test="status != null and status != ''">#{status},</if>
  			<if test="createBy != null and createBy != ''">#{createBy},</if>
  			<if test="remark != null and remark != ''">#{remark},</if>
+			<if test="idCard != null and idCard != ''">#{idCard},</if>
+			<if test="districtId != null and districtId != 0">#{districtId},</if>
  			sysdate()
  		)
 	</insert>
@@ -192,6 +223,8 @@
  			<if test="loginDate != null">login_date = #{loginDate},</if>
  			<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
  			<if test="remark != null">remark = #{remark},</if>
+			<if test="idCard != null and idCard != ''">id_card = #{idCard},</if>
+			<if test="districtId != null and districtId != 0">district_id = #{districtId},</if>
  			update_time = sysdate()
  		</set>
  		where user_id = #{userId}

--
Gitblit v1.9.2