Prechádzať zdrojové kódy

隐患问题清单代码

jiawuxian 2 rokov pred
rodič
commit
72038fe919
19 zmenil súbory, kde vykonal 1525 pridanie a 3 odobranie
  1. 13 3
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/web/domain/PageDto.java
  2. 25 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/QuestionConfirmEnum.java
  3. 15 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/QuestionReformEnum.java
  4. 15 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/QuestionSrcType.java
  5. 125 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/controller/QuestionController.java
  6. 176 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/domain/Question.java
  7. 104 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/domain/QuestionFlow.java
  8. 24 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/dto/QuestionConfirmDto.java
  9. 20 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/dto/QuestionPageDto.java
  10. 31 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/dto/QuestionReformDto.java
  11. 62 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/mapper/QuestionFlowMapper.java
  12. 62 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/mapper/QuestionMapper.java
  13. 95 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/service/IQuestionService.java
  14. 316 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/service/impl/QuestionServiceImpl.java
  15. 39 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/vo/QuestionFlowVo.java
  16. 7 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/vo/QuestionPageVo.java
  17. 64 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/vo/QuestionVo.java
  18. 125 0
      soc-modules/soc-modules-core/src/main/resources/mapper/question/QuestionFlowMapper.xml
  19. 207 0
      soc-modules/soc-modules-core/src/main/resources/mapper/question/QuestionMapper.xml

+ 13 - 3
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/web/domain/PageDto.java

@@ -16,19 +16,29 @@ public class PageDto<T> {
 
     @TableField(exist = false)
     @ApiModelProperty(value = "页数")
-    private Long pageNum=1L;
+    private Long pageNum = 1L;
 
     @TableField(exist = false)
     @ApiModelProperty(value = "每页大小")
-    private Long pageSize=10L;
+    private Long pageSize = 10L;
+
+    @ApiModelProperty(value = "机构id")
+    private Long orgId;
 
     @ApiModelProperty(value = "是否下穿查询")
     private Boolean checkSub = false;
 
-    public Page<T> getPageDto(){
+    public Page<T> getPageDto() {
         Page<T> mePage = new Page<>();
         mePage.setCurrent(this.getPageNum());
         mePage.setSize(this.getPageSize());
         return mePage;
     }
+
+    public <T1> Page<T1> toPage() {
+        Page<T1> mePage = new Page<T1>();
+        mePage.setCurrent(this.getPageNum());
+        mePage.setSize(this.getPageSize());
+        return mePage;
+    }
 }

+ 25 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/QuestionConfirmEnum.java

@@ -0,0 +1,25 @@
+package com.xunmei.core.question;
+
+public enum QuestionConfirmEnum {
+    /**
+     * 未确认
+     */
+    Unconfirm,
+    /**
+     * 提出异议
+     */
+    Dissent,
+
+    /**
+     *已确认
+     */
+    Confirmed,
+    /**
+     * 已关闭
+     */
+    Closed;
+
+    public Integer getValue(){
+        return  this.ordinal();
+    }
+}

+ 15 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/QuestionReformEnum.java

@@ -0,0 +1,15 @@
+package com.xunmei.core.question;
+
+public enum QuestionReformEnum {
+    Unreform(10),
+    Reformed(11);
+
+    private Integer value;
+
+    public Integer getValue(){
+        return value;
+    }
+    QuestionReformEnum(Integer value){
+        this.value=value;
+    }
+}

+ 15 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/QuestionSrcType.java

@@ -0,0 +1,15 @@
+package com.xunmei.core.question;
+
+public enum QuestionSrcType {
+    Resumption(1),
+    SafetyCheck(2);
+    private Integer value;
+
+    public Integer getValue() {
+        return value;
+    }
+
+    QuestionSrcType(Integer value) {
+        this.value = value;
+    }
+}

+ 125 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/controller/QuestionController.java

@@ -0,0 +1,125 @@
+package com.xunmei.system.controller;
+
+import com.xunmei.core.question.dto.QuestionConfirmDto;
+import com.xunmei.core.question.dto.QuestionPageDto;
+import com.xunmei.core.question.dto.QuestionReformDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.xunmei.common.log.annotation.Log;
+import com.xunmei.common.log.enums.BusinessType;
+import com.xunmei.common.security.annotation.RequiresPermissions;
+import com.xunmei.system.domain.Question;
+import com.xunmei.system.service.IQuestionService;
+import com.xunmei.common.core.web.controller.BaseController;
+import com.xunmei.common.core.web.domain.AjaxResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import com.xunmei.common.core.web.page.TableDataInfo;
+
+/**
+ * 隐患问题清单Controller
+ *
+ * @author xunmei
+ * @date 2023-09-12
+ */
+@Api(tags = {"CoreQuestion"})
+@RestController
+@RequestMapping("/question")
+public class QuestionController extends BaseController {
+    @Autowired
+    private IQuestionService questionService;
+
+    /**
+     * 查询隐患问题清单列表
+     */
+    @ApiOperation(value = "查询CoreQuestion列表")
+    @RequiresPermissions("core:question:list")
+    @GetMapping("/list")
+    public TableDataInfo<Question> list(QuestionPageDto query) {
+        return questionService.selectPage(query);
+    }
+
+    /**
+     * 获取隐患问题清单详细信息
+     */
+    @ApiOperation(value = "获取CoreQuestion详细信息")
+    @RequiresPermissions("core:question:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(questionService.selectQuestionById(id));
+    }
+
+    /**
+     * 新增隐患问题清单
+     */
+    @ApiOperation(value = "新增CoreQuestion")
+    @RequiresPermissions("core:question:add")
+    @Log(title = "隐患问题清单", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody Question coreQuestion) {
+        return toAjax(questionService.insertQuestion(coreQuestion));
+    }
+
+    /**
+     * 修改隐患问题清单
+     */
+    @ApiOperation(value = "修改Question")
+    @RequiresPermissions("core:question:edit")
+    @Log(title = "隐患问题清单", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody Question coreQuestion) {
+        return toAjax(questionService.updateQuestion(coreQuestion));
+    }
+
+    /**
+     * 删除隐患问题清单
+     */
+    @ApiOperation(value = "删除Question")
+    @RequiresPermissions("core:question:remove")
+    @Log(title = "隐患问题清单", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(questionService.deleteQuestionByIds(ids));
+    }
+
+    /**
+     * 确认
+     *
+     * @return
+     */
+    @PutMapping("/confirm/{id}")
+    @RequiresPermissions("core:question:confirm")
+    public AjaxResult confirm(@RequestBody QuestionConfirmDto confirmDto, @PathVariable Long id) {
+        return AjaxResult.success(questionService.confirm(confirmDto));
+    }
+
+    /**
+     * 确认
+     *
+     * @return
+     */
+    @RequiresPermissions("core:question:confirmDissent")
+    @PutMapping("/confirmDissent/{id}")
+    public AjaxResult confirmDissent(@RequestBody QuestionConfirmDto confirmDto, @PathVariable Long id) {
+        return AjaxResult.success(questionService.confirmDissent(confirmDto));
+    }
+
+    /**
+     * 整改
+     *
+     * @param reformDto
+     * @return
+     */
+    @RequiresPermissions("core:question:reform")
+    @PutMapping("/reform/{id}")
+    public AjaxResult reform(@RequestBody QuestionReformDto reformDto, @PathVariable Long id) {
+        return AjaxResult.success(questionService.reform(reformDto));
+    }
+}

+ 176 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/domain/Question.java

@@ -0,0 +1,176 @@
+package com.xunmei.system.domain;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import com.xunmei.common.core.web.domain.BaseEntity;
+
+/**
+ * 隐患问题清单对象 core_question
+ *
+ * @author xunmei
+ * @date 2023-09-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("core_question")
+@ApiModel(value = "CoreQuestion对象", description = "隐患问题清单")
+public class Question extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    private Long id;
+
+    /**
+     * 隐患所属机构
+     */
+    private Long orgId;
+
+    /**
+     * 隐患所属机构名称
+     */
+    @ApiModelProperty(value = "隐患所属机构名称")
+    private String orgName;
+
+    /**
+     * 隐患所属机构path
+     */
+    private String orgPath;
+
+    /**
+     * 来源,1:履职,2:安全检查
+     */
+    private Long srcType;
+
+    /**
+     * 来源任务id
+     */
+    private Long srcTaskId;
+
+    /**
+     * 来源任务名称
+     */
+    @ApiModelProperty(value = "来源任务名称")
+    private String srcTaskName;
+
+    /**
+     * 来源检查、履职内容id
+     */
+    @ApiModelProperty(value = "来源检查、履职内容id")
+    private Long  SrcPointId;
+    
+    /**
+     * 检查内容
+     */
+    @ApiModelProperty(value = "检查内容")
+    private String checkContent;
+
+    /**
+     * 隐患描述
+     */
+    @ApiModelProperty(value = "隐患描述")
+    private String questionDesc;
+
+    /**
+     * 提出人id
+     */
+    private Long submitorId;
+
+    /**
+     * 提出人名称
+     */
+    @ApiModelProperty(value = "提出人名称")
+    private String submitorName;
+
+    /**
+     * 发现时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "发现时间")
+    private Date submitTime;
+
+    /**
+     * 确认状态。0未确认,1提出异议,2已确认,3已关闭
+     */
+    @ApiModelProperty(value = "确认状态。0未确认,1提出异议,2已确认,3已关闭")
+    private Integer confirmStatus;
+
+    /**
+     * 整改状态。5未整改,6已整改
+     */
+    @ApiModelProperty(value = "整改状态。5未整改,6已整改")
+    private Integer reformStatus;
+
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+
+
+                .append("id", getId())
+
+
+                .append("orgId", getOrgId())
+
+
+                .append("orgName", getOrgName())
+
+
+                .append("orgPath", getOrgPath())
+
+
+                .append("srcType", getSrcType())
+
+
+                .append("srcTaskId", getSrcTaskId())
+
+
+                .append("srcTaskName", getSrcTaskName())
+
+
+                .append("checkContent", getCheckContent())
+
+
+                .append("questionDesc", getQuestionDesc())
+
+
+                .append("submitorId", getSubmitorId())
+
+
+                .append("submitorName", getSubmitorName())
+
+
+                .append("submitTime", getSubmitTime())
+
+
+                .append("confirmStatus", getConfirmStatus())
+
+
+                .append("reformStatus", getReformStatus())
+
+
+                .append("createTime", getCreateTime())
+
+
+                .append("updateTime", getUpdateTime())
+
+
+                .append("createBy", getCreateBy())
+
+
+                .append("updateBy", getUpdateBy())
+                .toString();
+    }
+}

+ 104 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/domain/QuestionFlow.java

@@ -0,0 +1,104 @@
+package com.xunmei.system.domain;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import com.xunmei.common.core.web.domain.BaseEntity;
+
+/**
+ * 隐患问题审批流程对象 core_question_flow
+ *
+ * @author xunmei
+ * @date 2023-09-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("core_question_flow")
+@ApiModel(value = "CoreQuestionFlow对象", description = "隐患问题审批流程")
+public class QuestionFlow extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    private Long id;
+
+    /**
+     * 隐患问题id
+     */
+    @ApiModelProperty(value = "隐患问题id")
+    private Long questionId;
+
+    /**
+     * 流程执行人
+     */
+    @ApiModelProperty(value = "流程执行人")
+    private Long executorId;
+
+    /**
+     * 流程执行人姓名
+     */
+    @ApiModelProperty(value = "流程执行人姓名")
+    private String executorName;
+
+    /**
+     * 流程操作时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "流程操作时间")
+    private Date executeTime;
+
+    /**
+     * 流程执行状态.0未确认,1提出异议,2已确认,3已关闭,10未整改,11已整改
+     */
+    @ApiModelProperty(value = "流程执行状态.0未确认,1提出异议,2已确认,3已关闭,10未整改,11已整改")
+    private Integer executeStatus;
+
+    /**
+     * 执行描述
+     */
+    @ApiModelProperty(value = "执行描述")
+    private String description;
+
+    /**
+     * 图片
+     */
+    private String images;
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+
+
+                .append("id", getId())
+
+
+                .append("questionId", getQuestionId())
+
+
+                .append("executorId", getExecutorId())
+
+
+                .append("executorName", getExecutorName())
+
+
+                .append("executeTime", getExecuteTime())
+
+
+                .append("executeStatus", getExecuteStatus())
+
+
+                .append("description", getDescription())
+                .toString();
+    }
+}

+ 24 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/dto/QuestionConfirmDto.java

@@ -0,0 +1,24 @@
+package com.xunmei.core.question.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+public class QuestionConfirmDto {
+    /**
+     * 隐患问题id
+     */
+    @NotNull
+    private Long id;
+    /**
+     * 0:通过、1:不通过
+     */
+    @NotNull
+    private Integer status;
+
+    /**
+     * 确认描述
+     */
+    private String description;
+}

+ 20 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/dto/QuestionPageDto.java

@@ -0,0 +1,20 @@
+package com.xunmei.core.question.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.xunmei.common.core.web.domain.PageDto;
+import com.xunmei.core.question.vo.QuestionPageVo;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+import lombok.Data;
+
+@Data
+public class QuestionPageDto extends PageDto<QuestionPageVo> {
+    private String searchKey;
+
+    private Integer confirmStatus;
+
+    private Integer reformStatus;
+
+    private LocalDateTime[] submitRange;
+}

+ 31 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/dto/QuestionReformDto.java

@@ -0,0 +1,31 @@
+package com.xunmei.core.question.dto;
+import java.util.Date;
+import lombok.Data;
+
+@Data
+public class QuestionReformDto {
+    /**
+     * 隐患问题id
+     */
+    private Long id;
+
+    /**
+     * 通过、不通过
+     */
+    private Integer status;
+
+    /**
+     * 确认描述
+     */
+    private String description;
+
+    /**
+     * 整改时间
+     */
+    private Date reformDate;
+
+    /**
+     * 整改图片
+     */
+    private String[] images;
+}

+ 62 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/mapper/QuestionFlowMapper.java

@@ -0,0 +1,62 @@
+package com.xunmei.system.mapper;
+
+import java.util.List;
+
+import com.xunmei.system.domain.QuestionFlow;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 隐患问题审批流程Mapper接口
+ *
+ * @author xunmei
+ * @date 2023-09-12
+ */
+public interface QuestionFlowMapper extends BaseMapper<QuestionFlow> {
+    /**
+     * 查询隐患问题审批流程
+     *
+     * @param id 隐患问题审批流程主键
+     * @return 隐患问题审批流程
+     */
+    QuestionFlow selectCoreQuestionFlowById(Long id);
+
+    /**
+     * 查询隐患问题审批流程列表
+     *
+     * @param questionFlow 隐患问题审批流程
+     * @return 隐患问题审批流程集合
+     */
+    List<QuestionFlow> selectCoreQuestionFlowList(QuestionFlow questionFlow);
+
+    /**
+     * 新增隐患问题审批流程
+     *
+     * @param questionFlow 隐患问题审批流程
+     * @return 结果
+     */
+    int insertCoreQuestionFlow(QuestionFlow questionFlow);
+
+    /**
+     * 修改隐患问题审批流程
+     *
+     * @param questionFlow 隐患问题审批流程
+     * @return 结果
+     */
+    int updateCoreQuestionFlow(QuestionFlow questionFlow);
+
+    /**
+     * 删除隐患问题审批流程
+     *
+     * @param id 隐患问题审批流程主键
+     * @return 结果
+     */
+    int deleteCoreQuestionFlowById(Long id);
+
+    /**
+     * 批量删除隐患问题审批流程
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteCoreQuestionFlowByIds(Long[] ids);
+}

+ 62 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/mapper/QuestionMapper.java

@@ -0,0 +1,62 @@
+package com.xunmei.system.mapper;
+
+import java.util.List;
+
+import com.xunmei.system.domain.Question;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 隐患问题清单Mapper接口
+ *
+ * @author xunmei
+ * @date 2023-09-12
+ */
+public interface QuestionMapper extends BaseMapper<Question> {
+    /**
+     * 查询隐患问题清单
+     *
+     * @param id 隐患问题清单主键
+     * @return 隐患问题清单
+     */
+    Question selectCoreQuestionById(Long id);
+
+    /**
+     * 查询隐患问题清单列表
+     *
+     * @param coreQuestion 隐患问题清单
+     * @return 隐患问题清单集合
+     */
+    List<Question> selectCoreQuestionList(Question coreQuestion);
+
+    /**
+     * 新增隐患问题清单
+     *
+     * @param coreQuestion 隐患问题清单
+     * @return 结果
+     */
+    int insertCoreQuestion(Question coreQuestion);
+
+    /**
+     * 修改隐患问题清单
+     *
+     * @param coreQuestion 隐患问题清单
+     * @return 结果
+     */
+    int updateCoreQuestion(Question coreQuestion);
+
+    /**
+     * 删除隐患问题清单
+     *
+     * @param id 隐患问题清单主键
+     * @return 结果
+     */
+    int deleteCoreQuestionById(Long id);
+
+    /**
+     * 批量删除隐患问题清单
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteCoreQuestionByIds(Long[] ids);
+}

+ 95 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/service/IQuestionService.java

@@ -0,0 +1,95 @@
+package com.xunmei.system.service;
+
+import java.util.List;
+
+import com.xunmei.core.question.dto.QuestionConfirmDto;
+import com.xunmei.core.question.dto.QuestionPageDto;
+import com.xunmei.core.question.dto.QuestionReformDto;
+import com.xunmei.core.question.vo.QuestionPageVo;
+import com.xunmei.core.question.vo.QuestionVo;
+import com.xunmei.system.domain.Question;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.web.page.TableDataInfo;
+
+/**
+ * 隐患问题清单Service接口
+ *
+ * @author xunmei
+ * @date 2023-09-12
+ */
+public interface IQuestionService extends IService<Question> {
+    /**
+     * 查询隐患问题清单
+     *
+     * @param id 隐患问题清单主键
+     * @return 隐患问题清单
+     */
+     QuestionVo selectQuestionById(Long id);
+
+    /**
+     * 查询隐患问题清单列表
+     *
+     * @param coreQuestion 隐患问题清单
+     * @return 隐患问题清单集合
+     */
+    List<Question> selectQuestionList(Question coreQuestion);
+
+    /**
+     * 新增隐患问题清单
+     *
+     * @param question 隐患问题清单
+     * @return 结果
+     */
+    int insertQuestion(Question question);
+
+    /**
+     * 修改隐患问题清单
+     *
+     * @param question 隐患问题清单
+     * @return 结果
+     */
+    int updateQuestion(Question question);
+
+    /**
+     * 批量删除隐患问题清单
+     *
+     * @param ids 需要删除的隐患问题清单主键集合
+     * @return 结果
+     */
+    int deleteQuestionByIds(Long[] ids);
+
+    /**
+     * 删除隐患问题清单信息
+     *
+     * @param id 隐患问题清单主键
+     * @return 结果
+     */
+    int deleteQuestionById(Long id);
+
+    /**
+     * 查询隐患问题清单分页数据
+     *
+     * @param query  查询条件对象
+     * @return Page
+     */
+    TableDataInfo<Question> selectPage(QuestionPageDto query);
+
+    /**
+     * 确认
+     * @return
+     */
+    Boolean confirm(QuestionConfirmDto confirmDto);
+
+    /**
+     * 确认
+     * @return
+     */
+    Boolean confirmDissent(QuestionConfirmDto confirmDto);
+
+    /**
+     * 整改
+     * @param reformDto
+     * @return
+     */
+    Boolean reform(QuestionReformDto reformDto);
+}

+ 316 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/service/impl/QuestionServiceImpl.java

@@ -0,0 +1,316 @@
+package com.xunmei.system.service.impl;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+import cn.hutool.core.date.LocalDateTimeUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.exception.ServiceException;
+import com.xunmei.common.core.utils.DateUtils;
+import com.xunmei.common.core.utils.IDHelper;
+import com.xunmei.common.security.utils.SecurityUtils;
+import com.xunmei.core.question.QuestionConfirmEnum;
+import com.xunmei.core.question.QuestionReformEnum;
+import com.xunmei.core.question.dto.QuestionConfirmDto;
+import com.xunmei.core.question.dto.QuestionPageDto;
+import com.xunmei.core.question.dto.QuestionReformDto;
+import com.xunmei.core.question.vo.QuestionFlowVo;
+import com.xunmei.core.question.QuestionSrcType;
+import com.xunmei.core.question.vo.QuestionVo;
+import com.xunmei.system.api.RemoteOrgService;
+import com.xunmei.system.domain.QuestionFlow;
+import com.xunmei.system.mapper.QuestionFlowMapper;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.stream.Collectors;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.system.mapper.QuestionMapper;
+import com.xunmei.system.domain.Question;
+import com.xunmei.system.service.IQuestionService;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 隐患问题清单Service业务层处理
+ *
+ * @author xunmei
+ * @date 2023-09-12
+ */
+@Service
+public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> implements IQuestionService {
+    @Autowired
+    private QuestionFlowMapper questionFlowMapper;
+    @Autowired
+    private RemoteOrgService orgService;
+
+    @Override
+    public TableDataInfo<Question> selectPage(QuestionPageDto query) {
+        //未删除
+        Page<Question> page = query.toPage();
+
+        //查询条件
+        LambdaQueryWrapper<Question> wrapper = new LambdaQueryWrapper<>();
+        //下穿
+        if (query.getCheckSub()) {
+            List<Long> ids = orgService.selectCheckSubOrgIdList(query.getOrgId(), SecurityConstants.INNER);
+            //添加in条件
+            wrapper.in(Question::getOrgId, ids);
+        } else {
+            wrapper.eq(Question::getOrgId, query.getOrgId());
+        }
+
+        if (ObjectUtil.isNotEmpty(query.getConfirmStatus())) {
+            wrapper.eq(Question::getConfirmStatus, query.getConfirmStatus());
+        }
+        if (ObjectUtil.isNotEmpty(query.getReformStatus())) {
+            wrapper.eq(Question::getReformStatus, query.getReformStatus());
+        }
+        //时间范围查询
+        if (ObjectUtil.isNotEmpty(query.getSubmitRange()) && query.getSubmitRange().length == 2) {
+            LocalDateTime start = LocalDateTimeUtil.beginOfDay(query.getSubmitRange()[0]);
+            LocalDateTime end = LocalDateTimeUtil.endOfDay(query.getSubmitRange()[1]);
+            wrapper.between(Question::getSubmitTime, start, end);
+        }
+        if (ObjectUtil.isNotEmpty(query.getSearchKey())) {
+            wrapper.and(w ->
+                    w.like(Question::getCheckContent, query.getSearchKey()).or().like(Question::getSrcTaskName, query.getSearchKey())
+            );
+        }
+
+        //获取数据
+        page = baseMapper.selectPage(page, wrapper);
+//        Page<QuestionPageDto> r =page.
+        //抓换为TableDataInfo适配前端
+        return TableDataInfo.build(page);
+    }
+
+
+    /**
+     * 查询隐患问题清单
+     *
+     * @param id 隐患问题清单主键
+     * @return 隐患问题清单
+     */
+    @Override
+    public QuestionVo selectQuestionById(Long id) {
+        QuestionVo vo = new QuestionVo();
+        Question q = baseMapper.selectById(id);
+        BeanUtils.copyProperties(q, vo);
+
+        LambdaQueryWrapper<QuestionFlow> flowWrapper = new LambdaQueryWrapper<QuestionFlow>();
+        flowWrapper.eq(QuestionFlow::getQuestionId, id);
+        List<QuestionFlow> flows = questionFlowMapper.selectList(flowWrapper);
+
+        vo.setFlows(flows.stream().map(f -> {
+            QuestionFlowVo fvo = new QuestionFlowVo();
+            BeanUtils.copyProperties(f, fvo);
+            return fvo;
+        }).collect(Collectors.toList()));
+
+        return vo;
+    }
+
+    /**
+     * 查询隐患问题清单列表
+     *
+     * @param coreQuestion 隐患问题清单
+     * @return 隐患问题清单
+     */
+    @Override
+    public List<Question> selectQuestionList(Question coreQuestion) {
+        return baseMapper.selectList(new QueryWrapper<>(coreQuestion));
+    }
+
+    /**
+     * 新增隐患问题清单
+     *
+     * @param question 隐患问题清单
+     * @return 结果
+     */
+    @Override
+    @Transactional
+    public int insertQuestion(Question question) {
+        question.setId(IDHelper.id());
+        question.setReformStatus(QuestionReformEnum.Unreform.getValue());
+        if (ObjectUtil.equal(question.getSrcType(), QuestionSrcType.Resumption.getValue())) {
+            question.setConfirmStatus(QuestionConfirmEnum.Confirmed.getValue());
+            QuestionFlow flow = new QuestionFlow();
+            flow.setQuestionId(question.getId());
+            flow.setExecuteTime(new Date());
+            flow.setExecutorId(SecurityUtils.getUserId());
+            flow.setExecutorName(SecurityUtils.getLoginUser().getName());
+            flow.setExecuteStatus(QuestionConfirmEnum.Confirmed.getValue());
+            questionFlowMapper.insert(flow);
+        } else {
+            question.setConfirmStatus(QuestionConfirmEnum.Unconfirm.getValue());
+        }
+
+        return baseMapper.insert(question);
+    }
+
+    /**
+     * 修改隐患问题清单
+     *
+     * @param coreQuestion 隐患问题清单
+     * @return 结果
+     */
+    @Override
+    @Transactional
+    public int updateQuestion(Question coreQuestion) {
+        coreQuestion.setUpdateTime(DateUtils.getNowDate());
+        return baseMapper.updateById(coreQuestion);
+    }
+
+    /**
+     * 批量删除隐患问题清单
+     *
+     * @param ids 需要删除的隐患问题清单主键
+     * @return 结果
+     */
+    @Override
+    public int deleteQuestionByIds(Long[] ids) {
+        return baseMapper.deleteBatchIds(Arrays.asList((ids)));
+    }
+
+    /**
+     * 删除隐患问题清单信息
+     *
+     * @param id 隐患问题清单主键
+     * @return 结果
+     */
+    @Override
+    public int deleteQuestionById(Long id) {
+        return baseMapper.deleteById(id);
+    }
+
+    /**
+     * 确认
+     *
+     * @return
+     */
+    @Override
+    @Transactional
+    public Boolean confirm(QuestionConfirmDto confirmDto) {
+        Question question = baseMapper.selectById(confirmDto.getId());
+        if (ObjectUtil.isNull(question)) {
+            throw new ServiceException("隐患问题不存在");
+        }
+
+        if (ObjectUtil.equal(question.getConfirmStatus(), QuestionConfirmEnum.Confirmed.getValue())) {
+            throw new ServiceException("隐患问题已确认");
+        }
+        if (ObjectUtil.equal(question.getConfirmStatus(), QuestionConfirmEnum.Closed.getValue())) {
+            throw new ServiceException("隐患问题已关闭");
+        }
+
+        LambdaUpdateWrapper<Question> updateWrapper = new LambdaUpdateWrapper();
+        QuestionFlow flow = new QuestionFlow();
+        flow.setQuestionId(confirmDto.getId());
+        flow.setDescription(confirmDto.getDescription());
+        flow.setExecuteTime(new Date());
+        flow.setExecutorId(SecurityUtils.getUserId());
+        flow.setExecutorName(SecurityUtils.getLoginUser().getName());
+
+        updateWrapper.eq(Question::getId, confirmDto.getId());
+        if (ObjectUtil.equal(confirmDto.getStatus(), 0)) {
+            flow.setExecuteStatus(QuestionConfirmEnum.Confirmed.getValue());
+            updateWrapper.set(Question::getConfirmStatus, QuestionConfirmEnum.Confirmed);
+        } else {
+            flow.setExecuteStatus(QuestionConfirmEnum.Dissent.getValue());
+            updateWrapper.set(Question::getConfirmStatus, QuestionConfirmEnum.Dissent);
+        }
+
+        questionFlowMapper.insert(flow);
+        int count = baseMapper.update(null, updateWrapper);
+
+        return count > 0;
+    }
+
+    /**
+     * 确认
+     *
+     * @return
+     */
+    @Override
+    @Transactional
+    public Boolean confirmDissent(QuestionConfirmDto confirmDto) {
+        Question question = baseMapper.selectById(confirmDto.getId());
+        if (ObjectUtil.isNull(question)) {
+            throw new ServiceException("隐患问题不存在");
+        }
+        if (ObjectUtil.notEqual(question.getConfirmStatus(), QuestionConfirmEnum.Dissent.getValue())) {
+            throw new ServiceException("隐患问题未处于异议状态");
+        }
+
+        LambdaUpdateWrapper<Question> updateWrapper = new LambdaUpdateWrapper();
+        QuestionFlow flow = new QuestionFlow();
+        flow.setQuestionId(confirmDto.getId());
+        flow.setDescription(confirmDto.getDescription());
+        flow.setExecuteTime(new Date());
+        flow.setExecutorId(SecurityUtils.getUserId());
+        flow.setExecutorName(SecurityUtils.getLoginUser().getName());
+
+        updateWrapper.eq(Question::getId, confirmDto.getId());
+        flow.setExecuteStatus(QuestionConfirmEnum.Confirmed.getValue());
+        updateWrapper.set(Question::getConfirmStatus, QuestionConfirmEnum.Confirmed);
+
+        questionFlowMapper.insert(flow);
+        int count = baseMapper.update(null, updateWrapper);
+
+        return count > 0;
+    }
+
+    /**
+     * 整改
+     *
+     * @param reformDto
+     * @return
+     */
+    @Override
+    @Transactional
+    public Boolean reform(QuestionReformDto reformDto) {
+        Question question = baseMapper.selectById(reformDto.getId());
+        if (ObjectUtil.isNull(question)) {
+            throw new ServiceException("隐患问题不存在");
+        }
+
+        if (ObjectUtil.notEqual(question.getConfirmStatus(), QuestionConfirmEnum.Confirmed.getValue())) {
+            throw new ServiceException("隐患问题未确认");
+        }
+        if (ObjectUtil.equal(question.getConfirmStatus(), QuestionConfirmEnum.Closed.getValue())) {
+            throw new ServiceException("隐患问题已关闭");
+        }
+        if (ObjectUtil.equal(question.getReformStatus(), QuestionReformEnum.Reformed.getValue())) {
+            throw new ServiceException("隐患问题已整改");
+        }
+
+        LambdaUpdateWrapper<Question> updateWrapper = new LambdaUpdateWrapper();
+        updateWrapper.eq(Question::getId, reformDto.getId());
+        updateWrapper.set(Question::getReformStatus, QuestionReformEnum.Reformed.getValue())
+                .set(Question::getConfirmStatus, QuestionConfirmEnum.Closed.getValue());
+
+        QuestionFlow flow = new QuestionFlow();
+        flow.setQuestionId(reformDto.getId());
+        flow.setDescription(reformDto.getDescription());
+        flow.setExecuteTime(new Date());
+        flow.setExecutorId(SecurityUtils.getUserId());
+        flow.setExecutorName(SecurityUtils.getLoginUser().getName());
+        flow.setImages(JSON.toJSONString(reformDto.getImages()));
+
+        questionFlowMapper.insert(flow);
+        int count = baseMapper.update(null, updateWrapper);
+
+        return count > 0;
+    }
+}

+ 39 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/vo/QuestionFlowVo.java

@@ -0,0 +1,39 @@
+package com.xunmei.core.question.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.xunmei.system.domain.QuestionFlow;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class QuestionFlowVo extends QuestionFlow {
+//    private Long id;
+//
+//    /** 隐患问题id */
+//    @ApiModelProperty(value = "隐患问题id")
+//    private Long questionId;
+//
+//    /** 流程执行人 */
+//    @ApiModelProperty(value = "流程执行人")
+//    private Long executorId;
+//
+//    /** 流程执行人姓名 */
+//    @ApiModelProperty(value = "流程执行人姓名")
+//    private String executorName;
+//
+//    /** 流程操作时间 */
+//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+//    @ApiModelProperty(value = "流程操作时间")
+//    private Date executeTime;
+//
+//    /** 流程执行状态.0未确认,1提出异议,2已确认,3已关闭,10未整改,11已整改 */
+//    @ApiModelProperty(value = "流程执行状态.0未确认,1提出异议,2已确认,3已关闭,10未整改,11已整改")
+//    private Long executeStatus;
+//
+//    /** 执行描述 */
+//    @ApiModelProperty(value = "执行描述")
+//    private String description;
+
+}

+ 7 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/vo/QuestionPageVo.java

@@ -0,0 +1,7 @@
+package com.xunmei.core.question.vo;
+
+import lombok.Data;
+
+@Data
+public class QuestionPageVo {
+}

+ 64 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/vo/QuestionVo.java

@@ -0,0 +1,64 @@
+package com.xunmei.core.question.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.xunmei.system.domain.Question;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class QuestionVo extends Question {
+//    private Long id;
+//
+//    /** 隐患所属机构 */
+//    private Long orgId;
+//
+//    /** 隐患所属机构名称 */
+//    @ApiModelProperty(value = "隐患所属机构名称")
+//    private String orgName;
+//
+//    /** 隐患所属机构path */
+//    private String orgPath;
+//
+//    /** 来源,1:履职,2:安全检查 */
+//    private Long srcType;
+//
+//    /** 来源任务id */
+//    private Long srcTaskId;
+//
+//    /** 来源任务名称 */
+//    @ApiModelProperty(value = "来源任务名称")
+//    private String srcTaskName;
+//
+//    /** 检查内容 */
+//    @ApiModelProperty(value = "检查内容")
+//    private String checkContent;
+//
+//    /** 隐患描述 */
+//    @ApiModelProperty(value = "隐患描述")
+//    private String questionDesc;
+//
+//    /** 提出人id */
+//    private Long submitorId;
+//
+//    /** 提出人名称 */
+//    @ApiModelProperty(value = "提出人名称")
+//    private String submitorName;
+//
+//    /** 发现时间 */
+//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+//    @ApiModelProperty(value = "发现时间")
+//    private Date submitTime;
+//
+//    /** 确认状态。0未确认,1提出异议,2已确认,3已关闭 */
+//    @ApiModelProperty(value = "确认状态。0未确认,1提出异议,2已确认,3已关闭")
+//    private Long confirmStatus;
+//
+//    /** 整改状态。5未整改,6已整改 */
+//    @ApiModelProperty(value = "整改状态。5未整改,6已整改")
+//    private Long reformStatus;
+
+    private List<QuestionFlowVo> flows;
+}

+ 125 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/question/QuestionFlowMapper.xml

@@ -0,0 +1,125 @@
+<?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.xunmei.system.mapper.QuestionFlowMapper">
+
+    <resultMap type="com.xunmei.system.domain.QuestionFlow" id="CoreQuestionFlowResult">
+                <result property="id" column="id"/>
+                <result property="questionId" column="question_id"/>
+                <result property="executorId" column="executor_id"/>
+                <result property="executorName" column="executor_name"/>
+                <result property="executeTime" column="execute_time"/>
+                <result property="executeStatus" column="execute_status"/>
+                <result property="description" column="description"/>
+    </resultMap>
+
+    <sql id="selectCoreQuestionFlowVo">
+        select id, question_id, executor_id, executor_name, execute_time, execute_status, description
+        from core_question_flow
+    </sql>
+
+    <select id="selectCoreQuestionFlowList" parameterType="com.xunmei.system.domain.QuestionFlow"
+            resultMap="CoreQuestionFlowResult">
+        <include refid="selectCoreQuestionFlowVo"/>
+        <where>
+                        <if test="questionId != null ">
+                            and question_id = #{questionId}
+                        </if>
+                        <if test="executorId != null ">
+                            and executor_id = #{executorId}
+                        </if>
+                        <if test="executorName != null  and executorName != ''">
+                            and executor_name like concat('%', #{executorName}, '%')
+                        </if>
+                        <if test="executeTime != null ">
+                            and execute_time = #{executeTime}
+                        </if>
+                        <if test="executeStatus != null ">
+                            and execute_status = #{executeStatus}
+                        </if>
+                        <if test="description != null  and description != ''">
+                            and description = #{description}
+                        </if>
+        </where>
+    </select>
+
+    <select id="selectCoreQuestionFlowById" parameterType="Long"
+            resultMap="CoreQuestionFlowResult">
+            <include refid="selectCoreQuestionFlowVo"/>
+            where id = #{id}
+    </select>
+
+    <insert id="insertCoreQuestionFlow" parameterType="com.xunmei.system.domain.QuestionFlow">
+        insert into core_question_flow
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+                    <if test="id != null">id,
+                    </if>
+                    <if test="questionId != null">question_id,
+                    </if>
+                    <if test="executorId != null">executor_id,
+                    </if>
+                    <if test="executorName != null">executor_name,
+                    </if>
+                    <if test="executeTime != null">execute_time,
+                    </if>
+                    <if test="executeStatus != null">execute_status,
+                    </if>
+                    <if test="description != null">description,
+                    </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+                    <if test="id != null">#{id},
+                    </if>
+                    <if test="questionId != null">#{questionId},
+                    </if>
+                    <if test="executorId != null">#{executorId},
+                    </if>
+                    <if test="executorName != null">#{executorName},
+                    </if>
+                    <if test="executeTime != null">#{executeTime},
+                    </if>
+                    <if test="executeStatus != null">#{executeStatus},
+                    </if>
+                    <if test="description != null">#{description},
+                    </if>
+        </trim>
+    </insert>
+
+    <update id="updateCoreQuestionFlow" parameterType="com.xunmei.system.domain.QuestionFlow">
+        update core_question_flow
+        <trim prefix="SET" suffixOverrides=",">
+                    <if test="questionId != null">question_id =
+                        #{questionId},
+                    </if>
+                    <if test="executorId != null">executor_id =
+                        #{executorId},
+                    </if>
+                    <if test="executorName != null">executor_name =
+                        #{executorName},
+                    </if>
+                    <if test="executeTime != null">execute_time =
+                        #{executeTime},
+                    </if>
+                    <if test="executeStatus != null">execute_status =
+                        #{executeStatus},
+                    </if>
+                    <if test="description != null">description =
+                        #{description},
+                    </if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteCoreQuestionFlowById" parameterType="Long">
+        delete
+        from core_question_flow where id = #{id}
+    </delete>
+
+    <delete id="deleteCoreQuestionFlowByIds" parameterType="String">
+        delete from core_question_flow where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 207 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/question/QuestionMapper.xml

@@ -0,0 +1,207 @@
+<?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.xunmei.system.mapper.QuestionMapper">
+
+    <resultMap type="com.xunmei.system.domain.Question" id="CoreQuestionResult">
+                <result property="id" column="id"/>
+                <result property="orgId" column="org_id"/>
+                <result property="orgName" column="org_name"/>
+                <result property="orgPath" column="org_path"/>
+                <result property="srcType" column="src_type"/>
+                <result property="srcTaskId" column="src_task_id"/>
+                <result property="srcTaskName" column="src_task_name"/>
+                <result property="checkContent" column="check_content"/>
+                <result property="questionDesc" column="question_desc"/>
+                <result property="submitorId" column="submitor_id"/>
+                <result property="submitorName" column="submitor_name"/>
+                <result property="submitTime" column="submit_time"/>
+                <result property="confirmStatus" column="confirm_status"/>
+                <result property="reformStatus" column="reform_status"/>
+                <result property="createTime" column="create_time"/>
+                <result property="updateTime" column="update_time"/>
+                <result property="createBy" column="create_by"/>
+                <result property="updateBy" column="update_by"/>
+    </resultMap>
+
+    <sql id="selectCoreQuestionVo">
+        select id, org_id, org_name, org_path, src_type, src_task_id, src_task_name, check_content, question_desc, submitor_id, submitor_name, submit_time, confirm_status, reform_status, create_time, update_time, create_by, update_by
+        from core_question
+    </sql>
+
+    <select id="selectCoreQuestionList" parameterType="com.xunmei.system.domain.Question"
+            resultMap="CoreQuestionResult">
+        <include refid="selectCoreQuestionVo"/>
+        <where>
+                        <if test="orgId != null ">
+                            and org_id = #{orgId}
+                        </if>
+                        <if test="submitTime != null ">
+                            and submit_time = #{submitTime}
+                        </if>
+                        <if test="confirmStatus != null ">
+                            and confirm_status = #{confirmStatus}
+                        </if>
+                        <if test="reformStatus != null ">
+                            and reform_status = #{reformStatus}
+                        </if>
+        </where>
+    </select>
+
+    <select id="selectCoreQuestionById" parameterType="Long"
+            resultMap="CoreQuestionResult">
+            <include refid="selectCoreQuestionVo"/>
+            where id = #{id}
+    </select>
+
+    <insert id="insertCoreQuestion" parameterType="com.xunmei.system.domain.Question">
+        insert into core_question
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+                    <if test="id != null">id,
+                    </if>
+                    <if test="orgId != null">org_id,
+                    </if>
+                    <if test="orgName != null">org_name,
+                    </if>
+                    <if test="orgPath != null">org_path,
+                    </if>
+                    <if test="srcType != null">src_type,
+                    </if>
+                    <if test="srcTaskId != null">src_task_id,
+                    </if>
+                    <if test="srcTaskName != null">src_task_name,
+                    </if>
+                    <if test="checkContent != null">check_content,
+                    </if>
+                    <if test="questionDesc != null">question_desc,
+                    </if>
+                    <if test="submitorId != null">submitor_id,
+                    </if>
+                    <if test="submitorName != null">submitor_name,
+                    </if>
+                    <if test="submitTime != null">submit_time,
+                    </if>
+                    <if test="confirmStatus != null">confirm_status,
+                    </if>
+                    <if test="reformStatus != null">reform_status,
+                    </if>
+                    <if test="createTime != null">create_time,
+                    </if>
+                    <if test="updateTime != null">update_time,
+                    </if>
+                    <if test="createBy != null">create_by,
+                    </if>
+                    <if test="updateBy != null">update_by,
+                    </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+                    <if test="id != null">#{id},
+                    </if>
+                    <if test="orgId != null">#{orgId},
+                    </if>
+                    <if test="orgName != null">#{orgName},
+                    </if>
+                    <if test="orgPath != null">#{orgPath},
+                    </if>
+                    <if test="srcType != null">#{srcType},
+                    </if>
+                    <if test="srcTaskId != null">#{srcTaskId},
+                    </if>
+                    <if test="srcTaskName != null">#{srcTaskName},
+                    </if>
+                    <if test="checkContent != null">#{checkContent},
+                    </if>
+                    <if test="questionDesc != null">#{questionDesc},
+                    </if>
+                    <if test="submitorId != null">#{submitorId},
+                    </if>
+                    <if test="submitorName != null">#{submitorName},
+                    </if>
+                    <if test="submitTime != null">#{submitTime},
+                    </if>
+                    <if test="confirmStatus != null">#{confirmStatus},
+                    </if>
+                    <if test="reformStatus != null">#{reformStatus},
+                    </if>
+                    <if test="createTime != null">#{createTime},
+                    </if>
+                    <if test="updateTime != null">#{updateTime},
+                    </if>
+                    <if test="createBy != null">#{createBy},
+                    </if>
+                    <if test="updateBy != null">#{updateBy},
+                    </if>
+        </trim>
+    </insert>
+
+    <update id="updateCoreQuestion" parameterType="com.xunmei.system.domain.Question">
+        update core_question
+        <trim prefix="SET" suffixOverrides=",">
+                    <if test="orgId != null">org_id =
+                        #{orgId},
+                    </if>
+                    <if test="orgName != null">org_name =
+                        #{orgName},
+                    </if>
+                    <if test="orgPath != null">org_path =
+                        #{orgPath},
+                    </if>
+                    <if test="srcType != null">src_type =
+                        #{srcType},
+                    </if>
+                    <if test="srcTaskId != null">src_task_id =
+                        #{srcTaskId},
+                    </if>
+                    <if test="srcTaskName != null">src_task_name =
+                        #{srcTaskName},
+                    </if>
+                    <if test="checkContent != null">check_content =
+                        #{checkContent},
+                    </if>
+                    <if test="questionDesc != null">question_desc =
+                        #{questionDesc},
+                    </if>
+                    <if test="submitorId != null">submitor_id =
+                        #{submitorId},
+                    </if>
+                    <if test="submitorName != null">submitor_name =
+                        #{submitorName},
+                    </if>
+                    <if test="submitTime != null">submit_time =
+                        #{submitTime},
+                    </if>
+                    <if test="confirmStatus != null">confirm_status =
+                        #{confirmStatus},
+                    </if>
+                    <if test="reformStatus != null">reform_status =
+                        #{reformStatus},
+                    </if>
+                    <if test="createTime != null">create_time =
+                        #{createTime},
+                    </if>
+                    <if test="updateTime != null">update_time =
+                        #{updateTime},
+                    </if>
+                    <if test="createBy != null">create_by =
+                        #{createBy},
+                    </if>
+                    <if test="updateBy != null">update_by =
+                        #{updateBy},
+                    </if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteCoreQuestionById" parameterType="Long">
+        delete
+        from core_question where id = #{id}
+    </delete>
+
+    <delete id="deleteCoreQuestionByIds" parameterType="String">
+        delete from core_question where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>