Pārlūkot izejas kodu

Merge branch 'V0.0.3' of http://10.87.21.221:8000/jzyd_yyds/soc into V0.0.3

jiawuxian 1 gadu atpakaļ
vecāks
revīzija
d26f232e79
15 mainītis faili ar 383 papildinājumiem un 20 dzēšanām
  1. 34 1
      project_data/sql/0.0.3/soc/soc.sql
  2. 12 4
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java
  3. 13 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java
  4. 1 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/dto/SafetyInspectDTO.java
  5. 16 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/mapper/SafetyInspectMapper.java
  6. 13 8
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/service/impl/SafetyInspectServiceImpl.java
  7. 47 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/controller/CoreSafetyTaskController.java
  8. 3 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/mapper/CoreSafetyTaskMapper.java
  9. 3 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/ICoreSafetyTaskService.java
  10. 11 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafetyTaskServiceImpl.java
  11. 56 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/vo/CoreSafetyTaskExport.java
  12. 39 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/vo/SafeStatusConverter.java
  13. 78 3
      soc-modules/soc-modules-core/src/main/resources/mapper/reportForms/SafetyInspectMapper.xml
  14. 55 1
      soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/CoreSafetyTaskMapper.xml
  15. 2 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysDictTypeServiceImpl.java

+ 34 - 1
project_data/sql/0.0.3/soc/soc.sql

@@ -1309,5 +1309,38 @@ INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type
 INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2, '已过期', '2', 'letter_status', NULL, 'default', 'N', '0', '超级管理员', '2023-10-13 15:31:17', 'zlsls01', '2023-11-08 11:04:41', NULL);
 
 UPDATE sys_dict_data set dict_label='待整改' WHERE dict_type='question_reform_status' and dict_value=10;
+
+update sys_dict_data SET dict_label='报警控制器' WHERE dict_label='报警主机';
+
+delete  from sys_dict_data where dict_type= 'sys_device_type';
+INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
+VALUES (5, '硬盘录像机', '0', 'sys_device_type', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
+INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
+VALUES (4, '报警控制器', '1', 'sys_device_type', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
+INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
+VALUES (3, '摄像机', '2', 'sys_device_type', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
+INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
+VALUES (1, '灭火器', '3', 'sys_device_type', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
+INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
+VALUES (2, '过滤式消防自助呼吸器', '4', 'sys_device_type', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
+
+delete from sys_dict_data where dict_type='science_protection';
+INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
+VALUES (3, '硬盘录像机', '0', 'science_protection', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
+INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
+VALUES (2, '报警控制器', '1', 'science_protection', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
+INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
+VALUES (1, '摄像机', '2', 'science_protection', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
+delete from sys_dict_data where dict_type='fire_fighting';
+INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
+VALUES (1, '过滤式消防自助呼吸器', '4', 'fire_fighting', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
+INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
+VALUES (2, '灭火器', '3', 'fire_fighting', null, 'default', 'N', '0', '超级管理员', now(), '', null, null);
 -- 删除多余的表
-drop TABLE if EXISTS sys_bank_physical_defense_construction;
+drop TABLE if EXISTS sys_bank_physical_defense_construction;
+-- 新增演练项目字典,及修改字典排序
+DELETE from sys_dict_data where dict_type='core_drill_type' and dict_label='防爆防恐应急预案' limit 1;
+INSERT INTO `sys_dict_data`(`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (7, '防爆防恐应急预案', '7', 'core_drill_type', NULL, 'default', 'N', '0', NULL, NOW(), NULL, NOW(), NULL);
+update sys_dict_data set dict_sort =5 where dict_type='core_drill_type' and dict_label='防爆防恐应急预案' limit 1;
+update sys_dict_data set dict_sort =6 where dict_type='core_drill_type' and dict_label='防自然灾害应急预案' limit 1;
+update sys_dict_data set dict_sort =7 where dict_type='core_drill_type' and dict_label='其它应急预案' limit 1;

+ 12 - 4
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java

@@ -413,7 +413,6 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         Date maxDateRange = dateRangeMap.get(dateRangeMap.size()).getEndTime();
         Date minDateRange = dateRangeMap.get(1).getStartTime();
         final List<Long> collect = orgList.stream().map(SysOrg::getId).collect(Collectors.toList());
-        Date date = new Date();
         final List<CoreDrillTask> trainingTaskList = baseMapper.selectList(new LambdaQueryWrapper<CoreDrillTask>()
                 .in(CoreDrillTask::getOrgId, collect)
                 .ge(CoreDrillTask::getStartDate, minDateRange)
@@ -421,10 +420,19 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
                 .eq(CoreDrillTask::getPlanId, plan.getId())
                 .select(CoreDrillTask::getId, CoreDrillTask::getOrgId, CoreDrillTask::getStartDate, CoreDrillTask::getEndDate, CoreDrillTask::getPlanId)
         );
+        //生成任务时,只有特定类型的机构类型才需要判断作息
+        final List<Integer> orgTypeList = Arrays.asList(
+                OrgTypeEnum.YINGYE_WANGDIAN.getCode(),
+                OrgTypeEnum.LIHANG_ZIZHU_YINGHANG.getCode(),
+                OrgTypeEnum.ZHONGXIN_YEWUKU.getCode(),
+                OrgTypeEnum.BAOGUAN_XAINGKU.getCode(),
+                OrgTypeEnum.WANGDIAN_YEWUKU.getCode()
+        );
         for (SysOrg org : orgList) {
+            int x = 0;
             for (int i = 1; i <= plan.getExecTimes(); i++) {
                 final LocalDateTime time = DateUtils.toLocalDateTime(DateUtils.getPreciseTime(dateRangeMap.get(i).getEndTime()));
-                if (time.isBefore(LocalDateTime.now())) {
+                if (time.isBefore(LocalDateTime.now()) && orgTypeList.contains(org.getType())) {
                     //如果任务的结束时间 已经小于当前时间则没必要生成任务了,
                     //用于处理周期中生成多次任务,周期初的任务一经生成就无法执行(预期)的问题,
                     log.warn("生成任务时,任务的结束时间已经小于当前时间,本次任务跳过,任务id:{},任务执行机构id:{},任务时间范围:{}-{}", plan.getId(), org.getId(), dateRangeMap.get(i).getStartTime(), dateRangeMap.get(i).getEndTime());
@@ -436,7 +444,8 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
                 trainingTask.setPlanId(plan.getId());
                 trainingTask.setPlanCycle(plan.getPlanCycle());
                 if (plan.getExecTimes() > 1) {
-                    trainingTask.setTitle(plan.getPlanName() + "第" + i + "次演练");
+                    x++;
+                    trainingTask.setTitle(plan.getPlanName() + "第" + x + "次演练");
                 } else {
                     trainingTask.setTitle(plan.getPlanName());
                 }
@@ -485,7 +494,6 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         }*/
     }
 
-
     @Override
     public List<CoreDrillTaskReportVo> selectCoreDrillTaskReport(CoreDrillTaskReportDto request) {
         CoreDrillPlan plan = coreDrillPlanMapper.selectById(request.getPlanId());

+ 13 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java

@@ -29,6 +29,7 @@ import com.xunmei.common.core.domain.registerbook.domain.CoreRegisterBookPdf;
 import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.xunmei.common.core.domain.worktime.dto.WorkTimeDto;
 import com.xunmei.common.core.enums.CycleCommonEnum;
+import com.xunmei.common.core.enums.OrgTypeEnum;
 import com.xunmei.common.core.enums.RegisterBookType;
 import com.xunmei.common.core.enums.edu.EduTrainingDoStatus;
 import com.xunmei.common.core.enums.edu.EduTrainingPlanCycleEnum;
@@ -478,10 +479,19 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
                 .eq(CoreEduTrainingTask::getPlanId, plan.getId())
                 .select(CoreEduTrainingTask::getId, CoreEduTrainingTask::getOrgId, CoreEduTrainingTask::getStartDate, CoreEduTrainingTask::getEndDate, CoreEduTrainingTask::getPlanId)
         );
+        //生成任务时,只有特定类型的机构类型才需要判断作息
+        final List<Integer> orgTypeList = Arrays.asList(
+                OrgTypeEnum.YINGYE_WANGDIAN.getCode(),
+                OrgTypeEnum.LIHANG_ZIZHU_YINGHANG.getCode(),
+                OrgTypeEnum.ZHONGXIN_YEWUKU.getCode(),
+                OrgTypeEnum.BAOGUAN_XAINGKU.getCode(),
+                OrgTypeEnum.WANGDIAN_YEWUKU.getCode()
+        );
         for (SysOrg org : orgList) {
+            int x = 0;
             for (int i = 1; i <= plan.getExecTimes(); i++) {
                 final LocalDateTime time = DateUtils.toLocalDateTime(DateUtils.getPreciseTime(dateRangeMap.get(i).getEndTime()));
-                if (time.isBefore(LocalDateTime.now())) {
+                if (time.isBefore(LocalDateTime.now()) || orgTypeList.contains(org.getType())) {
                     //如果任务的结束时间 已经小于当前时间则没必要生成任务了,
                     //用于处理周期中生成多次任务,周期初的任务一经生成就无法执行(预期)的问题,
                     log.warn("生成任务时,任务的结束时间已经小于当前时间,本次任务跳过,任务id:{},任务执行机构id:{},任务时间范围:{}-{}", plan.getId(), org.getId(), dateRangeMap.get(i).getStartTime(), dateRangeMap.get(i).getEndTime());
@@ -498,7 +508,8 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
                 trainingTask.setEndDate(DateUtils.getPreciseTime(dateRange.getEndTime()));
                 trainingTask.setContent(null);
                 if (plan.getExecTimes() > 1) {
-                    trainingTask.setTitle(plan.getPlanName() + "第" + i + "次培训");
+                    x++;
+                    trainingTask.setTitle(plan.getPlanName() + "第" + x + "次培训");
                 } else {
                     trainingTask.setTitle(plan.getPlanName());
                 }

+ 1 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/dto/SafetyInspectDTO.java

@@ -16,4 +16,5 @@ public class SafetyInspectDTO extends BaseEntity {
     private Long orgId;
     private String year;
     private String orgPath;
+    private Integer orgType;
 }

+ 16 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/mapper/SafetyInspectMapper.java

@@ -10,6 +10,7 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author :LuoWei
@@ -22,4 +23,19 @@ public interface SafetyInspectMapper {
     Page<SafetyInspectVO> report(@Param("page") Page<SafetyInspectVO> page, @Param("safetyInspectDTO") SafetyInspectDTO safetyInspectDTO);
 
     List<SysOrg> selectAllOrg();
+
+    /**
+     * 机构维度
+     * @return
+     */
+    Map orgDimension(@Param("orgPath") String orgPath,@Param("year") String year,@Param("orgType") Integer orgType);
+
+    /**
+     * 隐患维度
+     * @param orgPath
+     * @param year
+     * @param orgType
+     * @return
+     */
+    Map pitfallDimension (@Param("orgPath") String orgPath,@Param("year") String year,@Param("orgType") Integer orgType);
 }

+ 13 - 8
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/safetyInspect/service/impl/SafetyInspectServiceImpl.java

@@ -21,10 +21,7 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 /**
  * @author :LuoWei
@@ -67,15 +64,23 @@ public class SafetyInspectServiceImpl implements SafetyInspectService {
             }
             safetyInspectVO.setCity(sysOrg1.getShortName().split("地区行社")[0]);
             safetyInspectVO.setOrgName(s.getShortName());
-
+            //次数
             SafetyInspectVO safetyInspectVOS = safetyInspectMapper.selectAllByPath(s.getPath());
-            Integer integer = monitorAccessReportMapper.selectNetworkNumberByPath(s.getPath());
+            //机构维度
+            Map map = safetyInspectMapper.orgDimension(s.getPath(), safetyInspectDTO.getYear(), safetyInspectDTO.getOrgType());
+            safetyInspectVO.setPlanInspectOrg(Integer.valueOf(map.get("planInspectOrg").toString()));
+            safetyInspectVO.setRealityInspectOrg(Integer.valueOf(map.get("realityInspectOrg").toString()));
+            safetyInspectVO.setInspectCoverRate(map.get("inspectCoverRate").toString());
             safetyInspectVO.setOrgName(s.getShortName());
-        //    safetyInspectVO.setNetworkNumber(integer);
+            Map map1 = safetyInspectMapper.pitfallDimension(s.getPath(), safetyInspectDTO.getYear(), safetyInspectDTO.getOrgType());
+            safetyInspectVO.setPitfallNumber(Integer.valueOf(map1.get("pitfallNumber").toString()));
+            safetyInspectVO.setRectificationNumber(Integer.valueOf(map1.get("rectificationNumber").toString()));
+            safetyInspectVO.setRectificationRate(map1.get("rectificationRate").toString());
+
             safetyInspectVO.setPlanInspectNumber(safetyInspectVOS.getPlanInspectNumber());
             safetyInspectVO.setRealityInspectNumber(safetyInspectVOS.getRealityInspectNumber());
             safetyInspectVO.setInspectRate(safetyInspectVOS.getInspectRate());
-            safetyInspectVO.setPitfallNumber(safetyInspectVOS.getPitfallNumber());
+          //  safetyInspectVO.setPitfallNumber(safetyInspectVOS.getPitfallNumber());
             safetyInspectVOList.add(safetyInspectVO);
         });
         return safetyInspectVOList;

+ 47 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/controller/CoreSafetyTaskController.java

@@ -1,10 +1,18 @@
 package com.xunmei.core.safetyCheck.controller;
 
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 import java.io.IOException;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.constraints.NotNull;
 
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.xunmei.common.core.vo.IdNameVo;
 import com.xunmei.core.resumption.dto.resumptionRecord.ResumptionRoleDto;
@@ -12,6 +20,8 @@ import com.xunmei.core.safetyCheck.domain.CoreSafecheckPlan;
 import com.xunmei.core.safetyCheck.domain.CoreSafetyTask;
 import com.xunmei.core.safetyCheck.service.ICoreSafecheckPlanService;
 import com.xunmei.core.safetyCheck.service.ICoreSafetyTaskService;
+import com.xunmei.core.safetyCheck.vo.CoreSafetyTaskExport;
+import com.xunmei.system.api.domain.SysUser;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -123,4 +133,41 @@ public class CoreSafetyTaskController extends BaseController {
     public AjaxResult getNfc(String taskId) {
         return success(coreSafetyTaskService.selectNfc(taskId));
     }
+    /**
+     * 导出安全检查数据
+     */
+//    @RequiresPermissions("core:task:export")
+    @PostMapping("/export")
+    public void export( CoreSafetyTask coreSafetyTask, HttpServletResponse response) {
+        List<CoreSafetyTaskExport> list = null;
+        Set<String> excludeColumnFiledNames = new HashSet<String>();
+            list = coreSafetyTaskService.down(coreSafetyTask);
+            if (ObjectUtil.isEmpty(list)) {
+                throw new RuntimeException("导出数据为空!");
+            }
+            AtomicInteger xh = new AtomicInteger();
+            xh.getAndIncrement();
+            list.forEach(e -> {
+                e.setIndex(xh.getAndIncrement());
+            });
+            if (list.size() > 10000) {
+                throw new RuntimeException("导出数据量过大(单次导出限量10000条数据),请填写条件分批导出");
+            }
+
+
+        try {
+            // 设置响应头
+            response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("用户数据", "utf-8"));
+            response.setContentType("application/octet-stream;charset=UTF-8");
+            response.setCharacterEncoding("utf-8");
+            // 数据导出
+            EasyExcel.write(response.getOutputStream(), CoreSafetyTaskExport.class).excludeColumnFiledNames(excludeColumnFiledNames)
+                    .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).sheet("安全检查数据").doWrite(list);
+        } catch (Exception e) {
+            // 重置response
+            response.reset();
+            response.setContentType("application/json");
+            response.setCharacterEncoding("utf-8");
+        }
+    }
 }

+ 3 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/mapper/CoreSafetyTaskMapper.java

@@ -9,6 +9,7 @@ import com.xunmei.core.safetyCheck.domain.CoreSafetyTask;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xunmei.core.safetyCheck.dto.register.AppPageDto;
 import com.xunmei.core.safetyCheck.vo.CheckNfcRecord;
+import com.xunmei.core.safetyCheck.vo.CoreSafetyTaskExport;
 import com.xunmei.core.safetyCheck.vo.regsiter.AppTaskRegisterPointVo;
 import com.xunmei.core.safetyCheck.vo.regsiter.AppPageVo;
 import com.xunmei.core.safetyCheck.vo.regsiter.TaskRegisterNfcVo;
@@ -97,4 +98,6 @@ public interface CoreSafetyTaskMapper extends BaseMapper<CoreSafetyTask> {
     List<CheckNfcRecord> selectNfcRecord(String taskId);
 
     List<PanelListVo> selectCurUserTaskList(@Param("request") PanelListDto request);
+
+    List<CoreSafetyTaskExport> down(@Param("task")CoreSafetyTask coreSafetyTask);
 }

+ 3 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/ICoreSafetyTaskService.java

@@ -9,6 +9,7 @@ import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.core.safetyCheck.domain.CoreSafetyTask;
 import com.xunmei.core.safetyCheck.vo.CheckNfcRecord;
+import com.xunmei.core.safetyCheck.vo.CoreSafetyTaskExport;
 
 /**
  * 【请填写功能名称】Service接口
@@ -85,4 +86,6 @@ public interface ICoreSafetyTaskService extends IService<CoreSafetyTask> {
      * @param cycle
      */
     void deleteByOrgIdAndRange(Long orgId, Date startDate, Date endDate, Integer cycle);
+
+    List<CoreSafetyTaskExport> down(CoreSafetyTask coreSafetyTask);
 }

+ 11 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafetyTaskServiceImpl.java

@@ -21,6 +21,7 @@ import com.xunmei.core.safetyCheck.mapper.CoreSafecheckPlanToRoleMapper;
 import com.xunmei.core.safetyCheck.mapper.CoreSafetyTaskMapper;
 import com.xunmei.core.safetyCheck.service.ICoreSafetyTaskService;
 import com.xunmei.core.safetyCheck.vo.CheckNfcRecord;
+import com.xunmei.core.safetyCheck.vo.CoreSafetyTaskExport;
 import com.xunmei.core.safetyCheck.vo.plan.SafetyPlanRoleVo;
 import com.xunmei.system.api.Eto.RoleConditionEto;
 import com.xunmei.system.api.RemoteRoleService;
@@ -221,5 +222,15 @@ public class CoreSafetyTaskServiceImpl extends ServiceImpl<CoreSafetyTaskMapper,
         coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getOrgId, orgId).eq(CoreSafetyTask::getCheckCycle, cycle).between(CoreSafetyTask::getYmdDate, startDate, endDate).in(CoreSafetyTask::getStatus, 1, 2));
     }
 
+    @Override
+    public List<CoreSafetyTaskExport> down(CoreSafetyTask coreSafetyTask) {
+        if(CollectionUtil.isNotEmpty(coreSafetyTask.getRange()) && coreSafetyTask.getRange().size()==2 ){
+            coreSafetyTask.getRange().set(0,DateUtil.beginOfDay(coreSafetyTask.getRange().get(0)));
+            coreSafetyTask.getRange().set(1,DateUtil.endOfDay(coreSafetyTask.getRange().get(1)));
+        }
+        coreSafetyTask.setGrantUserId(SecurityUtils.getUserId());
+        return coreSafetyTaskMapper.down(coreSafetyTask);
+    }
+
 
 }

+ 56 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/vo/CoreSafetyTaskExport.java

@@ -0,0 +1,56 @@
+package com.xunmei.core.safetyCheck.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@ColumnWidth(15) //列宽,最大值为255
+@HeadRowHeight(16) //表头行高
+@ContentRowHeight(16) //数据行高
+public class CoreSafetyTaskExport {
+    @ApiModelProperty(value = "序号")
+    @TableField(exist = false)
+    @ExcelProperty(value = "序号", index = 0)
+    private Integer index;
+    @ApiModelProperty(value = "任务名称")
+    @ExcelProperty(value = "任务名称", index = 1)
+    private String title;
+    @ApiModelProperty(value = "检查主体")
+    @ExcelProperty(value = "检查主体", index = 2)
+    private String checkOrgName;
+    @ApiModelProperty(value = "受检机构")
+    @ExcelProperty(value = "受检机构", index = 3)
+    private String orgName;
+    @ApiModelProperty(value = "检查人员")
+    @ExcelProperty(value = "检查人员", index = 4)
+    private String submitName;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "开始日期")
+    @ExcelProperty(value = "开始日期", index = 5)
+    private Date planStartTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "截止日期")
+    @ExcelProperty(value = "截止日期", index = 6)
+    private Date planEndTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "创建时间")
+    @ExcelProperty(value = "创建时间", index = 7)
+    private Date createTime;
+    @ApiModelProperty(value = "检查组成员")
+    @ExcelProperty(value = "检查组成员", index = 8)
+    private String checkTeam;
+    @ApiModelProperty(value = "0待检查,1检查完成")
+    @ExcelProperty(value = "检查状态", index = 9,converter = SafeStatusConverter.class)
+    private String status;
+    @ApiModelProperty(value = "异常数目")
+    @ExcelProperty(value = "异常数目", index = 10)
+    private String exceptionCount;
+}

+ 39 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/vo/SafeStatusConverter.java

@@ -0,0 +1,39 @@
+package com.xunmei.core.safetyCheck.vo;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.CellData;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+
+public class SafeStatusConverter implements Converter<String> {
+
+
+
+    @Override
+    public Class supportJavaTypeKey() {
+        return null;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return null;
+    }
+
+    @Override
+    public String convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        return null;
+    }
+
+    @Override
+    public CellData convertToExcelData(String status, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        if ("1".equals(status)) {
+            return new CellData("待检查");
+        } else if ("0".equals(status)) {
+            return new CellData("检查完成");
+        } else {
+            return new CellData("检查完成");
+        }
+
+    }
+}

+ 78 - 3
soc-modules/soc-modules-core/src/main/resources/mapper/reportForms/SafetyInspectMapper.xml

@@ -72,12 +72,87 @@
                         ( a.`status` = 3, 1, 0 )),0) AS realityInspectNumber,
             IFNULL( SUM( a.exception_count ), 0 ) AS pitfallNumber,
 
-            IF(COUNT( a.id )=0 OR SUM( IF ( a.`status` = 3, 1, 0 ))=0,'0%',IFNULL(CONCAT(ROUND(SUM( IF ( a.`status` = 3, 1, 0 ))/ COUNT( a.id )* 100,2) , '%' ),'0%'))
-                AS inspectRate
+            CONCAT(
+                    ROUND(
+                                    IFNULL( SUM( IF ( a.`status` = 1, 1, 0 )), 0 ) / IFNULL( COUNT( a.id ), 0 )* 100,
+                                    2
+                        ),
+                    '%'
+                ) AS inspectRate
+        FROM
+            core_safety_task a LEFT JOIN sys_org b ON a.org_id=b.id
+        WHERE
+            a.deleted = 0
+        <if test="orgPath !=null and orgPath !=''">
+            and a.org_path like concat(#{orgPath},'%')
+        </if>
+        <if test="year !=null and year !=''">
+            AND a.ymd_year = #{year}
+        </if>
+        <if test="orgType !=null">
+            AND b.type = #{orgType}
+        </if>
+    </select>
+    <select id="orgDimension" resultType="java.util.Map">
+        SELECT
+            COUNT( a.id ) AS planInspectOrg,
+            IFNULL( SUM( IF ( a.`status` = 1, 1, 0 )), 0 ) AS realityInspectOrg,
+            IFNULL(
+                    CONCAT(
+                            ROUND( SUM( IF ( a.`status` = 1, 1, 0 ))/ COUNT( a.id )* 100, 2 ),
+                            '%'
+                        ),
+                    '0%'
+                ) AS inspectCoverRate
         FROM
             core_safety_task a
+                LEFT JOIN core_safecheck_plan b ON a.plan_id = b.id
+                LEFT JOIN sys_org c ON a.org_id = c.id
         WHERE
             a.deleted = 0
-          and a.org_path  like concat(#{orgPath},'%')
+          <if test="orgPath !=null and orgPath !=''">
+              and a.org_path like concat(#{orgPath},'%')
+          </if>
+          <if test="year !=null and year !=''">
+              AND a.ymd_year = #{year}
+          </if>
+         <if test="orgType !=null">
+             AND c.type = #{orgType}
+         </if>
+
+    </select>
+    <select id="pitfallDimension" resultType="java.util.Map">
+        SELECT
+            IFNULL( SUM( IF ( a.confirm_status >= 2, 1, 0 )), 0 ) AS pitfallNumber,
+            IFNULL( SUM( IF ( a.reform_status = 11, 1, 0 )), 0 ) AS rectificationNumber,
+            IFNULL(
+                    CONCAT(
+                            ROUND(
+                                            SUM(
+                                                    IF
+                                                        ( a.reform_status = 11, 1, 0 ))/ SUM(
+                                                    IF
+                                                        ( a.confirm_status >= 2, 1, 0 ))* 100,
+                                            2
+                                ),
+                            '%'
+                        ),
+                    '0%'
+                ) AS rectificationRate
+        FROM
+            core_question a
+                LEFT JOIN sys_org b ON a.org_id = b.id
+                LEFT JOIN core_safety_task c ON c.id = a.src_task_id
+        WHERE
+            a.src_type = 2
+        <if test="orgPath !=null and orgPath !=''">
+            and a.org_path like concat(#{orgPath},'%')
+        </if>
+        <if test="year !=null and year !=''">
+            AND c.ymd_year = #{year}
+        </if>
+        <if test="orgType !=null">
+            AND b.type = #{orgType}
+        </if>
     </select>
 </mapper>

+ 55 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/CoreSafetyTaskMapper.xml

@@ -771,7 +771,8 @@
             and t.org_id=#{params.beCheckedOrgId}
         </if>
         <if test="params.taskTime!=null">
-            and ((t.plan_start_time &lt;=#{params.taskTime} and t.plan_end_time&gt;=#{params.taskTime}) or t.ymd_date=#{params.taskTime})
+            and ((t.plan_start_time &lt;=#{params.taskTime} and t.plan_end_time&gt;=#{params.taskTime}) or
+            t.ymd_date=#{params.taskTime})
         </if>
         <if test="params.status">
             and t.status=#{params.status}
@@ -828,4 +829,57 @@
         and #{request.endTime}  <![CDATA[<=]]>  t.plan_end_time
         ))
     </select>
+    <select id="down" resultType="com.xunmei.core.safetyCheck.vo.CoreSafetyTaskExport">
+        SELECT
+        t.id,
+        t.title,
+        t.check_org_name,
+        t.org_name,
+        GROUP_CONCAT( DISTINCT r.role_name ) AS submit_name,
+        t.plan_start_time,
+
+        t.plan_end_time,
+        t.plan_start_time AS create_time,
+        t.check_team,
+        t.STATUS,
+        t.exception_count
+        FROM
+        core_safety_task t
+        LEFT JOIN core_safecheck_plan_to_role pr ON pr.plan_id = t.plan_id
+        LEFT JOIN sys_role r ON r.id = pr.role_id
+        LEFT JOIN core_safecheck_plan_to_role csptr ON csptr.plan_id = t.plan_id
+        LEFT JOIN sys_org og ON og.id = t.check_org_id
+        WHERE
+        t.deleted = 0
+        AND og.type = r.org_type
+
+        <if test="task.title != null  and task.title != ''">
+            and t.title like concat('%', #{task.title}, '%')
+        </if>
+        <if test="task.roleId != null  and task.roleId != ''">
+            and csptr.role_id =#{task.roleId}
+        </if>
+        <if test="task.planStartTime != null ">
+            and DATE_FORMAT(t.plan_start_time, '%Y-%m-%d') = DATE_FORMAT(#{task.planStartTime}, '%Y-%m-%d')
+        </if>
+        <if test="task.range !=null and task.range.size==2">
+            and t.plan_start_time>=#{task.range[0]} and t.plan_start_time &lt; #{task.range[1]}
+        </if>
+        <if test="task.status != null  and task.status != ''">
+            and t.status =#{task.status}
+        </if>
+        <!--        <if test="task.roleId != null  and task.roleId != ''">-->
+        <!--            and t.role_id =#{task.roleId}-->
+        <!--        </if>-->
+        and (t.grant_user_id=#{task.grantUserId} or (
+        <if test="task.checkSub==false">
+            t.check_org_id=#{task.orgId}
+        </if>
+        <if test="task.checkSub==true">
+            t.check_org_id in (select id from sys_org
+            where path like concat((select path from sys_org where id=#{task.orgId}),'%'))
+        </if>))
+        GROUP BY
+        t.id
+    </select>
 </mapper>

+ 2 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysDictTypeServiceImpl.java

@@ -113,10 +113,11 @@ public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDi
         String type;
         if (assetType.equals("0")) {
             type = "fire_fighting";
+        } else if (assetType.equals("1")) {
+            type = "sys_device_type";
         } else {
             type = "science_protection";
         }
-        //  deviceTypeByAssetType = dictDataMapper.getDeviceTypeByAssetType(v);
         deviceTypeByAssetType = dictDataMapper.selectDictDataByType(type);
         return deviceTypeByAssetType;
     }