Ver código fonte

Merge remote-tracking branch 'origin/V0.0.2' into V0.0.2

jingyuanchao 2 anos atrás
pai
commit
243d46ca61
15 arquivos alterados com 637 adições e 89 exclusões
  1. 7 0
      project_data/sql/0.0.3/soc/soc.sql
  2. 16 9
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/controller/QuestionController.java
  3. 74 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/controller/ReformController.java
  4. 142 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/dto/QuestionExportDto.java
  5. 20 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/dto/ReformPageDto.java
  6. 17 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/mapper/QuestionMapper.java
  7. 46 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/service/IQuestionReformService.java
  8. 5 7
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/service/IQuestionService.java
  9. 176 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/service/impl/QuestionReformServiceImpl.java
  10. 29 58
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/service/impl/QuestionServiceImpl.java
  11. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/service/ResumptionServiceImpl.java
  12. 2 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/vo/resumptionRecord/ResumptionRecordPageVo.java
  13. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/SafetyCheckRegisterSericeImpl.java
  14. 99 11
      soc-modules/soc-modules-core/src/main/resources/mapper/question/QuestionMapper.xml
  15. 2 0
      soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/CoreSafecheckPlanMapper.xml

+ 7 - 0
project_data/sql/0.0.3/soc/soc.sql

@@ -397,6 +397,13 @@ DROP PROCEDURE IF EXISTS schema_change ??
         ALTER TABLE `core_resumption` 
 			ADD COLUMN `times` smallint NULL COMMENT '第几次' AFTER `role_id`;
     END IF;
+		-- 履职表增加提交人
+	IF
+        NOT EXISTS ( SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = DATABASE () and TABLE_NAME = 'core_resumption' AND COLUMN_NAME = 'submitor_id' ) THEN
+		ALTER TABLE `soc`.`core_resumption` 
+			ADD COLUMN `submitor_id` bigint NULL COMMENT '提交人id' AFTER `submit_time`,
+			ADD COLUMN `submitor_name` varchar(32) NULL COMMENT '提交人姓名' AFTER `submitor_id`;
+    END IF;
 	-- 机构扩展添加字段
     IF
         NOT EXISTS ( SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = DATABASE () and TABLE_NAME = 'sys_org_extend' AND COLUMN_NAME = 'remote_count' ) THEN

+ 16 - 9
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/controller/QuestionController.java

@@ -4,7 +4,9 @@ import cn.hutool.core.util.ObjectUtil;
 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.service.IQuestionReformService;
 import com.xunmei.core.question.vo.QuestionPageVo;
+import com.xunmei.core.resumption.dto.resumptionRecord.ResumptionRecordPageDto;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -25,6 +27,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import com.xunmei.common.core.web.page.TableDataInfo;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.Date;
 
 /**
@@ -40,20 +43,17 @@ public class QuestionController extends BaseController {
     @Autowired
     private IQuestionService questionService;
 
+    @Autowired
+    private IQuestionReformService questionReformService;
+
     /**
      * 查询隐患问题清单列表
      */
     @ApiOperation(value = "查询列表")
     @RequiresPermissions("question:list")
     @GetMapping("/list")
-    public TableDataInfo<Question> list(QuestionPageDto query) {
-//        if (ObjectUtil.isNotNull(query.getSubmitTime())) {
-//            Date[] range = {
-//                query.getSubmitTime(), query.getSubmitTime()
-//            } ;
-//            query.setSubmitRange(range);
-//        }
-
+    public TableDataInfo<Question> questionPage(QuestionPageDto query) {
+        query.setReformStatus(null);
         return questionService.selectPage(query);
     }
 
@@ -101,6 +101,13 @@ public class QuestionController extends BaseController {
     @RequiresPermissions("question:list:reform")
     @PutMapping("/reform/{id}")
     public AjaxResult reform(@RequestBody QuestionReformDto reformDto, @PathVariable Long id) {
-        return AjaxResult.success(questionService.reform(reformDto));
+        return AjaxResult.success(questionReformService.reform(reformDto));
+    }
+
+    @ApiOperation(value = "隐患问题导出")
+    @PostMapping("/export")
+    @RequiresPermissions("question:list")
+    public void export(QuestionPageDto pageDto, HttpServletResponse response) throws Exception {
+        questionService.export(pageDto, response);
     }
 }

+ 74 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/controller/ReformController.java

@@ -0,0 +1,74 @@
+package com.xunmei.core.question.controller;
+
+import com.xunmei.common.core.web.controller.BaseController;
+import com.xunmei.common.core.web.domain.AjaxResult;
+import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.common.security.annotation.RequiresPermissions;
+import com.xunmei.core.question.domain.Question;
+import com.xunmei.core.question.dto.QuestionPageDto;
+import com.xunmei.core.question.dto.QuestionReformDto;
+import com.xunmei.core.question.dto.ReformPageDto;
+import com.xunmei.core.question.service.IQuestionReformService;
+import com.xunmei.core.question.service.IQuestionService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * 隐患问题清单Controller
+ *
+ * @author xunmei
+ * @date 2023-09-12
+ */
+@Api(tags = {"整改情况跟踪"})
+@RestController
+@RequestMapping("/questionreform")
+public class ReformController extends BaseController {
+    @Autowired
+    private IQuestionReformService questionReformService;
+
+    @Autowired
+    private IQuestionService questionService;
+    /**
+     * 查询隐患问题清单列表
+     */
+    @ApiOperation(value = "查询列表")
+    @RequiresPermissions("question:reform")
+    @GetMapping("/page")
+    public TableDataInfo<Question> list(ReformPageDto query) {
+        return questionReformService.selectPage(query);
+    }
+
+    /**
+     * 获取隐患问题清单详细信息
+     */
+    @ApiOperation(value = "获取详细信息")
+    @RequiresPermissions("question:reform:query")
+    @GetMapping(value = "/info/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(questionService.selectQuestionById(id));
+    }
+
+    /**
+     * 整改
+     *
+     * @param reformDto
+     * @return
+     */
+    @ApiOperation(value = "整改")
+    @RequiresPermissions("question:reform:reform")
+    @PutMapping("/reform/{id}")
+    public AjaxResult reform(@RequestBody QuestionReformDto reformDto, @PathVariable Long id) {
+        return AjaxResult.success(questionReformService.reform(reformDto));
+    }
+
+    @ApiOperation(value = "整改情况导出")
+    @PostMapping("/export")
+    @RequiresPermissions("question:reform")
+    public void export(ReformPageDto pageDto, HttpServletResponse response) throws Exception {
+        questionReformService.export(pageDto, response);
+    }
+}

+ 142 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/dto/QuestionExportDto.java

@@ -0,0 +1,142 @@
+package com.xunmei.core.question.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.format.DateTimeFormat;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class QuestionExportDto {
+    /**
+     * 隐患所属机构名称
+     */
+    @ApiModelProperty(value = "隐患所属机构名称")
+    @ExcelProperty(value="机构名称",index = 0)
+    @ColumnWidth(20)
+    private String orgName;
+
+    /**
+     * 来源任务名称
+     */
+    @ApiModelProperty(value = "来源任务名称")
+    @ExcelProperty(value="隐患来源",index = 1)
+    @ColumnWidth(20)
+    private String srcTaskName;
+
+    /**
+     检查、履职项名称
+     */
+    @ExcelProperty(value="标准项",index = 2)
+    @ColumnWidth(20)
+    private String checkItem;
+
+    /**
+     * 检查内容
+     */
+    @ApiModelProperty(value = "检查内容")
+    @ExcelProperty(value="标准依据",index = 3)
+    @ColumnWidth(40)
+    private String checkContent;
+
+    /**
+     * 隐患描述
+     */
+    @ApiModelProperty(value = "隐患描述")
+    @ExcelProperty(value="隐患描述",index = 4)
+    @ColumnWidth(20)
+    private String questionDesc;
+
+    /**
+     * 提出人名称
+     */
+    @ApiModelProperty(value = "提出人名称")
+    @ExcelProperty(value="提出人",index = 5)
+    @ColumnWidth(15)
+    private String submitorName;
+
+    /**
+     * 发现时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "发现时间")
+    @ExcelProperty(value="发现时间",index = 6)
+    @ColumnWidth(22)
+    private Date submitTime;
+
+    /**
+     * 整改期限
+     */
+    @ApiModelProperty(value = "整改期限")
+    @ExcelProperty(value="整改期限",index = 7)
+    @ColumnWidth(12)
+    @DateTimeFormat("YYYY-MM-DD")
+    private Date reformDeadline;
+
+    /**
+     * 确认状态
+     */
+    @ExcelProperty(value="确认状态",index = 8)
+    @ColumnWidth(15)
+    private String confirmStatusText;
+
+    /**
+     * 确认人
+     */
+    @ExcelProperty(value="确认人",index = 9)
+    @ColumnWidth(15)
+    private String confirmorName;
+
+    /**
+     * 确认描述
+     */
+    @ExcelProperty(value="异议内容",index = 10)
+    @ColumnWidth(15)
+    private String confirmDesc;
+
+    /**
+     * 异议审批状态
+     */
+    @ExcelProperty(value="审核结果",index = 11)
+    @ColumnWidth(15)
+    private String dissentStatusText;
+
+    /**
+     * 审核人
+     */
+    @ExcelProperty(value="审核人",index = 12)
+    @ColumnWidth(15)
+    private String dissenterName;
+
+    /**
+     * 审核描述
+     */
+    @ExcelProperty(value="审核描述",index = 13)
+    @ColumnWidth(15)
+    private String dissentDesc;
+
+    /**
+     * 整改日期
+     */
+    @ExcelProperty(value="整改日期",index = 14)
+    @ColumnWidth(15)
+    @DateTimeFormat("YYYY-MM-DD")
+    private Date reformDate;
+
+    /**
+     * 整改状态
+     */
+    @ExcelProperty(value="整改状态",index = 15)
+    @ColumnWidth(15)
+    private String reformStatusText;
+
+    /**
+     * 整改描述
+     */
+    @ExcelProperty(value="整改描述",index = 16)
+    @ColumnWidth(15)
+    private String reformDesc;
+}

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

@@ -0,0 +1,20 @@
+package com.xunmei.core.question.dto;
+
+import com.xunmei.common.core.web.domain.PageDto;
+import com.xunmei.core.question.vo.QuestionPageVo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ReformPageDto extends PageDto<QuestionPageVo> {
+    @ApiModelProperty(value ="搜索关键字" )
+    private String searchKey;
+
+    @ApiModelProperty(value = "整改状态")
+    private Integer reformStatus;
+
+    @ApiModelProperty(value = "整改日期范围")
+    private Date[] reformRange;
+}

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

@@ -3,6 +3,9 @@ package com.xunmei.core.question.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData;
 import com.xunmei.core.question.domain.Question;
+import com.xunmei.core.question.dto.QuestionExportDto;
+import com.xunmei.core.question.dto.QuestionPageDto;
+import com.xunmei.core.question.dto.ReformPageDto;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.Date;
@@ -64,4 +67,18 @@ public interface QuestionMapper extends BaseMapper<Question> {
     int deleteCoreQuestionByIds(Long[] ids);
 
     List<CoreSafetyExceptionData> selectQuestionExceptionData(@Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("orgIds") List<Long> orgIds);
+
+    /**
+     * 获取导出数据
+     * @param param
+     * @return
+     */
+    List<QuestionExportDto> selectQuestionExportList(@Param("param")QuestionPageDto param);
+
+    /**
+     * 获取导出数据
+     * @param param
+     * @return
+     */
+    List<QuestionExportDto> selectReformExportList(@Param("param") ReformPageDto param);
 }

+ 46 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/service/IQuestionReformService.java

@@ -0,0 +1,46 @@
+package com.xunmei.core.question.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData;
+import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.core.question.domain.Question;
+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.dto.ReformPageDto;
+import com.xunmei.core.question.vo.QuestionVo;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 隐患问题清单Service接口
+ *
+ * @author xunmei
+ * @date 2023-09-12
+ */
+public interface IQuestionReformService extends IService<Question> {
+    /**
+     * 查询整改情况分页数据
+     *
+     * @param query  查询条件对象
+     * @return Page
+     */
+    TableDataInfo<Question> selectPage(ReformPageDto query);
+
+    /**
+     * 整改
+     * @param reformDto
+     * @return
+     */
+    Boolean reform(QuestionReformDto reformDto);
+
+    /**
+     * 导出
+     * @param pageDto
+     * @param response
+     * @throws Exception
+     */
+    void export(ReformPageDto pageDto, HttpServletResponse response) throws Exception;
+}

+ 5 - 7
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/service/IQuestionService.java

@@ -7,8 +7,11 @@ import com.xunmei.core.question.domain.Question;
 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.dto.ReformPageDto;
 import com.xunmei.core.question.vo.QuestionVo;
+import com.xunmei.core.resumption.dto.resumptionRecord.ResumptionRecordPageDto;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.Date;
 import java.util.List;
 
@@ -55,12 +58,7 @@ public interface IQuestionService extends IService<Question> {
      */
     Boolean confirmDissent(QuestionConfirmDto confirmDto);
 
-    /**
-     * 整改
-     * @param reformDto
-     * @return
-     */
-    Boolean reform(QuestionReformDto reformDto);
-
     List<CoreSafetyExceptionData> selectQuestionExceptionData(Date startTime,Date endTime,List<Long> orgIds);
+
+    void export(QuestionPageDto pageDto, HttpServletResponse response) throws Exception;
 }

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

@@ -0,0 +1,176 @@
+package com.xunmei.core.question.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.excel.EasyExcel;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData;
+import com.xunmei.common.core.exception.ServiceException;
+import com.xunmei.common.core.utils.IDHelper;
+import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.common.security.utils.SecurityUtils;
+import com.xunmei.core.question.QuestionConfirmEnum;
+import com.xunmei.core.question.QuestionReformEnum;
+import com.xunmei.core.question.QuestionSrcType;
+import com.xunmei.core.question.QuestionStepEnum;
+import com.xunmei.core.question.domain.Question;
+import com.xunmei.core.question.domain.QuestionFlow;
+import com.xunmei.core.question.dto.*;
+import com.xunmei.core.question.mapper.QuestionFlowMapper;
+import com.xunmei.core.question.mapper.QuestionMapper;
+import com.xunmei.core.question.service.IQuestionReformService;
+import com.xunmei.core.question.service.IQuestionService;
+import com.xunmei.core.question.vo.QuestionFlowVo;
+import com.xunmei.core.question.vo.QuestionVo;
+import com.xunmei.core.resumption.service.IAppResumptionDataRemarkimgService;
+import com.xunmei.core.safetyCheck.domain.CoreSafetyTaskDataRemarkimg;
+import com.xunmei.core.safetyCheck.service.ICoreSafetyTaskDataRemarkimgService;
+import com.xunmei.system.api.RemoteOrgService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 隐患问题清单Service业务层处理
+ *
+ * @author xunmei
+ * @date 2023-09-12
+ */
+@Service
+public class QuestionReformServiceImpl extends ServiceImpl<QuestionMapper, Question> implements IQuestionReformService {
+    @Autowired
+    private QuestionFlowMapper questionFlowMapper;
+    @Autowired
+    private RemoteOrgService orgService;
+
+    @Autowired
+    private IAppResumptionDataRemarkimgService appResumptionDataRemarkimgService;
+
+    @Autowired
+    private ICoreSafetyTaskDataRemarkimgService iCoreSafetyTaskDataRemarkimgService;
+
+    /**
+     * 查询整改情况分页数据
+     *
+     * @param query 查询条件对象
+     * @return Page
+     */
+    @Override
+    public TableDataInfo<Question> selectPage(ReformPageDto 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());
+        }
+        wrapper.ge(Question::getConfirmStatus, 2);
+        if (ObjectUtil.isNotEmpty(query.getReformStatus())) {
+            wrapper.eq(Question::getReformStatus, query.getReformStatus());
+        }
+
+        //时间范围查询
+        if (ObjectUtil.isNotEmpty(query.getReformRange()) && query.getReformRange().length == 2) {
+            Date start = DateUtil.beginOfDay(query.getReformRange()[0]);
+            Date end = DateUtil.endOfDay(query.getReformRange()[1]);
+            wrapper.between(Question::getReformDeadline, start, end);
+        }
+
+        if (ObjectUtil.isNotEmpty(query.getSearchKey())) {
+            wrapper.and(w ->
+                    w.like(Question::getCheckContent, query.getSearchKey()).or().like(Question::getSrcTaskName, query.getSearchKey())
+            );
+        }
+        wrapper.orderByDesc(Question::getId);
+        //获取数据
+        page = baseMapper.selectPage(page, wrapper);
+//        Page<QuestionPageDto> r =page.
+        //抓换为TableDataInfo适配前端
+        return TableDataInfo.build(page);
+    }
+
+
+    /**
+     * 整改
+     *
+     * @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(reformDto.getImages());
+        flow.setReformDate(reformDto.getReformDate());
+        flow.setExecuteStatus(0);
+        flow.setExecuteStep(QuestionStepEnum.reform.getValue());
+
+        questionFlowMapper.insert(flow);
+        int count = baseMapper.update(null, updateWrapper);
+
+        return count > 0;
+    }
+
+    /**
+     * 导出
+     *
+     * @param pageDto
+     * @param response
+     * @throws Exception
+     */
+    @Override
+    public void export(ReformPageDto pageDto, HttpServletResponse response) throws Exception {
+        if (ObjectUtil.isNotEmpty(pageDto.getReformRange()) && pageDto.getReformRange().length == 2) {
+            Date[] nd=new Date[2];
+            nd[0]= DateUtil.beginOfDay(pageDto.getReformRange()[0]);
+            nd[1] = DateUtil.endOfDay(pageDto.getReformRange()[1]);
+            pageDto.setReformRange(nd);
+        }
+
+        List<QuestionExportDto> list = baseMapper.selectReformExportList(pageDto);
+        response.setContentType("application/vnd.ms-excel");
+        // 调用EasyExcel的导出方法
+        EasyExcel.write(response.getOutputStream(), QuestionExportDto.class).sheet("Sheet1").doWrite(list);
+    }
+}

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

@@ -2,6 +2,7 @@ package com.xunmei.core.question.service.impl;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.excel.EasyExcel;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -18,15 +19,14 @@ import com.xunmei.core.question.QuestionSrcType;
 import com.xunmei.core.question.QuestionStepEnum;
 import com.xunmei.core.question.domain.Question;
 import com.xunmei.core.question.domain.QuestionFlow;
-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.dto.*;
 import com.xunmei.core.question.mapper.QuestionFlowMapper;
 import com.xunmei.core.question.mapper.QuestionMapper;
 import com.xunmei.core.question.service.IQuestionService;
 import com.xunmei.core.question.vo.QuestionFlowVo;
 import com.xunmei.core.question.vo.QuestionVo;
 import com.xunmei.core.resumption.service.IAppResumptionDataRemarkimgService;
+import com.xunmei.core.resumption.vo.protection.ProtectionPageVo;
 import com.xunmei.core.safetyCheck.domain.CoreSafetyTaskDataRemarkimg;
 import com.xunmei.core.safetyCheck.service.ICoreSafetyTaskDataRemarkimgService;
 import com.xunmei.system.api.RemoteOrgService;
@@ -35,6 +35,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -75,27 +76,29 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
         }
 
         if (ObjectUtil.isNotEmpty(query.getConfirmStatus())) {
+//            if (ObjectUtil.equal(query.getConfirmStatus(), 2)) {
+//                wrapper.gt(Question::getConfirmStatus, query.getConfirmStatus());
+//            } else {
             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) {
             Date start = DateUtil.beginOfDay(query.getSubmitRange()[0]);
             Date end = DateUtil.endOfDay(query.getSubmitRange()[1]);
             wrapper.between(Question::getSubmitTime, start, end);
         }
-        if(ObjectUtil.isNotNull(query.getSubmitTime())){
+        if (ObjectUtil.isNotNull(query.getSubmitTime())) {
             Date start = DateUtil.beginOfDay(query.getSubmitTime());
-            wrapper.ge(Question::getReformDeadline,start);
+            wrapper.ge(Question::getReformDeadline, start);
 
             Date end = DateUtil.endOfDay(query.getSubmitTime());
-            wrapper.le(Question::getSubmitTime,end);
+            wrapper.le(Question::getReformDeadline, end);
         }
         if (ObjectUtil.isNotEmpty(query.getSearchKey())) {
             wrapper.and(w ->
-                    w.like(Question::getCheckContent, query.getSearchKey()).or().like(Question::getSrcTaskName, query.getSearchKey())
+                    w.like(Question::getCheckItem, query.getSearchKey()).or().like(Question::getSrcTaskName, query.getSearchKey())
             );
         }
         wrapper.orderByDesc(Question::getId);
@@ -131,11 +134,11 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
         if (ObjectUtil.equal(q.getSrcType(), QuestionSrcType.Resumption.getValue())) {
             List<String> images = appResumptionDataRemarkimgService.getImagePath(q.getSrcDataPointId());
             vo.setImages(images);
-        }else if (ObjectUtil.equal(q.getSrcType(), QuestionSrcType.SafetyCheck.getValue())) {
+        } else if (ObjectUtil.equal(q.getSrcType(), QuestionSrcType.SafetyCheck.getValue())) {
             List<String> images = iCoreSafetyTaskDataRemarkimgService
                     .list(new LambdaQueryWrapper<CoreSafetyTaskDataRemarkimg>()
-                            .eq(CoreSafetyTaskDataRemarkimg::getTaskDataId,q.getSrcDataPointId()))
-                    .stream().map(i->i.getImgPath()).collect(Collectors.toList());
+                            .eq(CoreSafetyTaskDataRemarkimg::getTaskDataId, q.getSrcDataPointId()))
+                    .stream().map(i -> i.getImgPath()).collect(Collectors.toList());
             vo.setImages(images);
         }
 
@@ -256,54 +259,22 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
         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(reformDto.getImages());
-        flow.setReformDate(reformDto.getReformDate());
-        flow.setExecuteStatus(0);
-        flow.setExecuteStep(QuestionStepEnum.reform.getValue());
-
-        questionFlowMapper.insert(flow);
-        int count = baseMapper.update(null, updateWrapper);
-
-        return count > 0;
+    public List<CoreSafetyExceptionData> selectQuestionExceptionData(Date startTime, Date endTime, List<Long> orgIds) {
+        return baseMapper.selectQuestionExceptionData(startTime, endTime, orgIds);
     }
 
     @Override
-    public List<CoreSafetyExceptionData> selectQuestionExceptionData(Date startTime,Date endTime,List<Long> orgIds) {
-        return baseMapper.selectQuestionExceptionData(startTime,endTime,orgIds);
+    public void export(QuestionPageDto pageDto, HttpServletResponse response) throws Exception {
+        if (ObjectUtil.isNotEmpty(pageDto.getSubmitRange()) && pageDto.getSubmitRange().length == 2) {
+            Date[] nd=new Date[2];
+            nd[0]= DateUtil.beginOfDay(pageDto.getSubmitRange()[0]);
+            nd[1] = DateUtil.endOfDay(pageDto.getSubmitRange()[1]);
+            pageDto.setSubmitRange(nd);
+        }
+        List<QuestionExportDto> list = baseMapper.selectQuestionExportList(pageDto);
+        response.setContentType("application/vnd.ms-excel");
+        // 调用EasyExcel的导出方法
+        EasyExcel.write(response.getOutputStream(), QuestionExportDto.class).sheet("Sheet1").doWrite(list);
     }
 }

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/service/ResumptionServiceImpl.java

@@ -321,7 +321,7 @@ public class ResumptionServiceImpl implements ResumptionService {
             resumptionPlanVos = supplementItems;
         } else {
             //反馈给前端,只需要保存后的数据
-            if (resumption.getStatus() == 3) {
+            if (resumption.getStatus() == 3 || resumption.getStatus() == 2) {
                 //如果已经提交
                 usedNFCID.addAll(orgAllNFCs.stream().filter(n -> n.getStatus() == 1).map(n -> n.getNfcId()).collect(Collectors.toSet()));
             }

+ 2 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/vo/resumptionRecord/ResumptionRecordPageVo.java

@@ -86,8 +86,8 @@ public class ResumptionRecordPageVo {
     @ColumnWidth(20)
     private Date submitTime;
 
-    @ApiModelProperty("隐患问题数")
-    @ExcelProperty(value = "隐患问题数",index = 9)
+    @ApiModelProperty("隐患数")
+    @ExcelProperty(value = "隐患数",index = 9)
     @ColumnWidth(15)
     private Integer abnormalDataNums;
 

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/SafetyCheckRegisterSericeImpl.java

@@ -347,7 +347,7 @@ public class SafetyCheckRegisterSericeImpl extends ServiceImpl<CoreSafetyTaskMap
                 }
             }
 
-            if (ObjectUtil.equal(point.getValue(), 1)) {
+            if (ObjectUtil.equal(data.getIsSubmit(),1) && ObjectUtil.equal(point.getValue(), 1)) {
                 Question question = dataVoToQuestion(data, org, point, pointVo,user);
                 questions.add(question);
             }

+ 99 - 11
soc-modules/soc-modules-core/src/main/resources/mapper/question/QuestionMapper.xml

@@ -277,23 +277,111 @@
 
     <select id="selectQuestionExceptionData"
             resultType="com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData">
-        SELECT a.id             as dataId,
-               a.org_id         as orgId,
-               a.src_task_id    as extraField1,
-               a.confirm_status as extraField2,
-               a.submit_time    as dataTime,
-               'core_question'  as dataSource,
-               now()            as createTime
+        SELECT a.id as dataId,
+        a.org_id as orgId,
+        a.src_task_id as extraField1,
+        a.confirm_status as extraField2,
+        a.submit_time as dataTime,
+        'core_question' as dataSource,
+        now() as createTime
         FROM core_question a
         where submit_time >= #{startTime}
-          and submit_time <![CDATA[<=]]> #{endTime}
-          and reform_deadline <![CDATA[<]]> now()
-          and (confirm_status = 0 or (confirm_status = 2 and reform_status = 10))
+        and submit_time <![CDATA[<=]]> #{endTime}
+        and reform_deadline <![CDATA[<]]> now()
+        and (confirm_status = 0 or (confirm_status = 2 and reform_status = 10))
         <if test="orgIds !=null and orgIds.size>0">
-             and org_id in
+            and org_id in
             <foreach collection="orgIds" item="orgId" open="(" separator="," close=")">
                 #{orgId}
             </foreach>
         </if>
     </select>
+
+    <select id="selectQuestionExportList" resultType="com.xunmei.core.question.dto.QuestionExportDto">
+        SELECT q.org_name,
+        q.src_task_name,
+        q.check_item,
+        q.check_content,
+        q.question_desc,
+        q.submitor_name,
+        q.submit_time,
+        q.reform_deadline,
+        case q.src_type when 1 then '确认' else ( case f1.execute_status when 0 then '确认' when 1 then '提出异议' else '未确认'
+        end) end as confirmStatusText,
+        f1.executor_name as confirmorName,
+        f1.description as confirmDesc,
+        case f2.execute_status when 0 then '同意' when 1 then '不同意' else '' end as dissentStatusText,
+        f2.executor_name as dissenterName,
+        f2.description as dissentDesc,
+        f3.reform_date as reformDate,
+        case q.reform_status when 10 then '未整改' when 11 then '已整改' else '' end as reformStatusText,
+        f3.description as reformDesc
+        FROM core_question q
+        left join core_question_flow f1 on q.id = f1.question_id and f1.execute_step = 1
+        left join core_question_flow f2 on q.id = f2.question_id and f2.execute_step = 2
+        left join core_question_flow f3 on q.id = f3.question_id and f3.execute_step = 11
+        where 1=1
+        <if test="param.checkSub==true">
+            and q.org_path like concat((select `path` from sys_org where id = #{param.orgId}),'%')
+        </if>
+        <if test="param.checkSub==false">
+            and q.org_id=#{param.orgId}
+        </if>
+        <if test="param.confirmStatus!=null">
+            and q.confirm_status=#{param.confirmStatus}
+        </if>
+        <if test="param.searchKey!=null">
+            and (q.check_item like concat('%',#{param.searchKey},'%') or q.src_task_name like
+            concat('%',#{param.searchKey},'%'))
+        </if>
+        <if test="param.submitRange!=null and param.submitRange.length==2">
+            and q.submit_time between #{param.submitRange[0]} and #{param.submitRange[1]}
+        </if>
+        order by q.id desc
+    </select>
+    <select id="selectReformExportList" resultType="com.xunmei.core.question.dto.QuestionExportDto">
+        SELECT q.org_name,
+        q.src_task_name,
+        q.check_item,
+        q.check_content,
+        q.question_desc,
+        q.submitor_name,
+        q.submit_time,
+        q.reform_deadline,
+        case q.src_type when 1 then '确认' else ( case f1.execute_status when 0 then '确认' when 1 then '提出异议' else '未确认'
+        end) end as confirmStatusText,
+        f1.executor_name as confirmorName,
+        f1.description as confirmDesc,
+        case f2.execute_status when 0 then '同意' when 1 then '不同意' else '' end as dissentStatusText,
+        f2.executor_name as dissenterName,
+        f2.description as dissentDesc,
+        f3.reform_date as reformDate,
+        case q.reform_status when 10 then '未整改' when 11 then '已整改' else '' end as reformStatusText,
+        f3.description as reformDesc
+        FROM core_question q
+        left join core_question_flow f1 on q.id = f1.question_id and f1.execute_step = 1
+        left join core_question_flow f2 on q.id = f2.question_id and f2.execute_step = 2
+        left join core_question_flow f3 on q.id = f3.question_id and f3.execute_step = 11
+        where 1=1
+        <if test="param.checkSub==true">
+            and q.org_path like concat((select `path` from sys_org where id = #{param.orgId}),'%')
+        </if>
+        <if test="param.checkSub==false">
+            and q.org_id=#{param.orgId}
+        </if>
+        <if test="param.reformStatus==null">
+            and q.confirm_status>=2
+        </if>
+        <if test="param.reformStatus!=null">
+            and q.reform_status=#{param.reformStatus}
+        </if>
+        <if test="param.searchKey!=null">
+            and (q.check_content like concat('%',#{param.searchKey},'%') or q.src_task_name like
+            concat('%',#{param.searchKey},'%'))
+        </if>
+        <if test="param.reformRange!=null and param.reformRange.length==2">
+            and q.reform_deadline between #{param.reformRange[0]} and #{param.reformRange[1]}
+        </if>
+        order by q.id desc
+    </select>
 </mapper>

+ 2 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/CoreSafecheckPlanMapper.xml

@@ -183,6 +183,8 @@
     <select id="selectCoreSafecheckPlanPage" resultMap="CoreSafecheckPlanResult">
         SELECT
         GROUP_CONCAT(DISTINCT role_name) as role_names,
+        GROUP_CONCAT( tem.check_org_name) as check_org,
+        GROUP_CONCAT( tem.exec_org_name) as exec_org,
         tem.*
         FROM
         (