luowei 1 rok pred
rodič
commit
cc4b26565f
13 zmenil súbory, kde vykonal 233 pridanie a 12 odobranie
  1. 1 1
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/SysUser.java
  2. 1 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/service/impl/QuestionReformServiceImpl.java
  3. 1 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/service/impl/QuestionServiceImpl.java
  4. 16 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/controller/ResumptionReportController.java
  5. 10 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/mapper/ResumptionReportMapper.java
  6. 3 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/service/ResumptionReportService.java
  7. 59 4
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/service/impl/ResumptionReportServiceImpl.java
  8. 30 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/vo/IntrusionTestReportVO.java
  9. 7 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/vo/ResumptionDayVO.java
  10. 58 6
      soc-modules/soc-modules-core/src/main/resources/mapper/reportForms/ResumptionReportMapper.xml
  11. 40 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/GenderConverter.java
  12. 4 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/UserExport.java
  13. 3 0
      soc-modules/soc-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

+ 1 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/SysUser.java

@@ -51,7 +51,7 @@ public class SysUser extends BaseEntity {
      */
     @ApiModelProperty(value = "启用/禁用")
     private String isLock;
-    @ApiModelProperty(value = "是否管理员")
+    @ApiModelProperty(value = "安保部门从业人员")
     private String isManage;
     /**
      * 岗位

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

@@ -4,6 +4,7 @@ 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.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

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

@@ -4,6 +4,7 @@ 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.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

+ 16 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/controller/ResumptionReportController.java

@@ -5,6 +5,7 @@ import com.xunmei.common.security.annotation.RequiresPermissions;
 import com.xunmei.core.reportForms.monitor.dto.MonitoringAccessDTO;
 import com.xunmei.core.reportForms.resumption.dto.ResumptionDTO;
 import com.xunmei.core.reportForms.resumption.service.ResumptionReportService;
+import com.xunmei.core.reportForms.resumption.vo.IntrusionTestReportVO;
 import com.xunmei.core.reportForms.resumption.vo.ResumptionDayVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -44,4 +45,19 @@ public class ResumptionReportController {
         ajaxResult.put("title", "日报表-营业网点每日安全保卫履职(" + resumptionDTO.getSearchTime() + ")");
         return ajaxResult;
     }
+
+    @ApiOperation(value = "报警测试报表")
+    @RequiresPermissions("core:resumptionReport:list")
+    @GetMapping("/intrusionTest")
+    public AjaxResult intrusionTest(ResumptionDTO resumptionDTO) {
+        if (null == resumptionDTO.getSearchTime()) {
+            LocalDate currentDate = LocalDate.now();
+            resumptionDTO.setSearchTime(currentDate.getYear()+"-"+currentDate.getMonthValue());
+        }
+        AjaxResult ajaxResult = AjaxResult.success();
+        List<IntrusionTestReportVO> intrusionTestReportVOList = resumptionReportService.intrusionTest(resumptionDTO);
+        ajaxResult.put(AjaxResult.DATA_TAG, intrusionTestReportVOList);
+        ajaxResult.put("title", "报警测试报表(" + resumptionDTO.getSearchTime() + ")");
+        return ajaxResult;
+    }
 }

+ 10 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/mapper/ResumptionReportMapper.java

@@ -1,6 +1,7 @@
 package com.xunmei.core.reportForms.resumption.mapper;
 
 import com.xunmei.core.reportForms.resumption.dto.ResumptionDTO;
+import com.xunmei.core.reportForms.resumption.vo.IntrusionTestReportVO;
 import com.xunmei.core.reportForms.resumption.vo.ResumptionDayVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -15,4 +16,13 @@ import java.util.List;
 public interface ResumptionReportMapper {
 
     ResumptionDayVO selectReport(@Param("planType") Integer planType, @Param("orgId") Long orgId, @Param("date") String date,@Param("orgPath")String orgPath);
+
+    /**
+     * 已整改数量
+     * @param taskId
+     * @return
+     */
+    Integer planRectification(@Param("taskId")Long taskId);
+
+    IntrusionTestReportVO selectIntrusionTestReport( @Param("date") String date,@Param("orgPath")String orgPath);
 }

+ 3 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/service/ResumptionReportService.java

@@ -1,6 +1,7 @@
 package com.xunmei.core.reportForms.resumption.service;
 
 import com.xunmei.core.reportForms.resumption.dto.ResumptionDTO;
+import com.xunmei.core.reportForms.resumption.vo.IntrusionTestReportVO;
 import com.xunmei.core.reportForms.resumption.vo.ResumptionDayVO;
 
 import java.util.List;
@@ -11,4 +12,6 @@ import java.util.List;
  */
 public interface ResumptionReportService {
     List<ResumptionDayVO> report(ResumptionDTO resumptionDTO);
+
+  List<IntrusionTestReportVO>  intrusionTest(ResumptionDTO resumptionDTO);
 }

+ 59 - 4
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/service/impl/ResumptionReportServiceImpl.java

@@ -1,14 +1,18 @@
 package com.xunmei.core.reportForms.resumption.service.impl;
 
+import com.xunmei.common.core.constant.ErrorMsgConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.core.reportForms.monitor.mapper.MonitorAccessReportMapper;
 import com.xunmei.core.reportForms.resumption.dto.ResumptionDTO;
 import com.xunmei.core.reportForms.resumption.mapper.ResumptionReportMapper;
 import com.xunmei.core.reportForms.resumption.service.ResumptionReportService;
+import com.xunmei.core.reportForms.resumption.vo.IntrusionTestReportVO;
 import com.xunmei.core.reportForms.resumption.vo.ResumptionDayVO;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -34,20 +38,26 @@ public class ResumptionReportServiceImpl implements ResumptionReportService {
         if (null == resumptionDTO.getOrgId()) {
             resumptionDTO.setOrgId(SecurityUtils.getLoginUser().getOrgId());
         }
-//判断机构类型,如果机构类型大于行社,都展示行社数据
+        //判断机构类型,如果机构类型大于行社,都展示行社数据
         SysOrg sysOrg = orgService.selectSysOrgById(resumptionDTO.getOrgId(), SecurityConstants.INNER);
-        List<SysOrg> sysOrgs = new ArrayList<>();
-        if (sysOrg.getType() > 3) {
+        List<SysOrg> sysOrgs;
+        if (sysOrg.getType() < 3 || sysOrg.getShortName().endsWith("地区行社") || sysOrg.getType() == 9) {
             sysOrgs = orgService.selectSysOrgByPathAndType(sysOrg.getPath(), 3, SecurityConstants.INNER);
         } else if (sysOrg.getType() == 3) {
             sysOrgs = orgService.selectSysOrgByPathAndType(sysOrg.getPath(), 4, SecurityConstants.INNER);
         } else {
             return null;
         }
-        orgService.selectSysOrgByParentId(resumptionDTO.getOrgId(), SecurityConstants.INNER);
         List<ResumptionDayVO> resumptionDayVOS = new ArrayList<>();
         sysOrgs.forEach(o -> {
             ResumptionDayVO resumptionDayVO = new ResumptionDayVO();
+            SysOrg sysOrg1;
+            if (sysOrg.getType() < 3 || sysOrg.getShortName().endsWith("地区行社") || sysOrg.getType() == 9) {
+                sysOrg1 = orgService.selectOrgById(o.getParentId(), SecurityConstants.INNER);
+            } else {
+                sysOrg1 = orgService.selectOrgById(orgService.selectOrgById(o.getParentId(), SecurityConstants.INNER).getParentId(), SecurityConstants.INNER);
+            }
+            resumptionDayVO.setCity(sysOrg1.getShortName().split("地区行社")[0]);
             resumptionDayVO.setOrgName(o.getShortName());
             Integer integer = monitorAccessReportMapper.selectNetworkNumberByPath(o.getPath());
             resumptionDayVO.setNetworkNumber(integer);
@@ -70,8 +80,12 @@ public class ResumptionReportServiceImpl implements ResumptionReportService {
             resumptionDayVO.setAfterPlanNumber(resumptionDayVO3.getFrontPlanNumber());
             resumptionDayVO.setAfterRealityNumber(resumptionDayVO3.getFrontRealityNumber());
             Integer totalPlan = resumptionDayVO3.getFrontPlanNumber() + resumptionDayVO2.getFrontPlanNumber() + resumptionDayVO1.getFrontPlanNumber();
+            //总计实际履职次数
             Integer totalReality = resumptionDayVO3.getFrontRealityNumber() + resumptionDayVO2.getFrontRealityNumber() + resumptionDayVO1.getFrontRealityNumber();
+            //总计隐患问题数
             Integer totalAbnormal = resumptionDayVO3.getFrontAbnormalNumber() + resumptionDayVO2.getFrontAbnormalNumber() + resumptionDayVO1.getFrontAbnormalNumber();
+            //总计已整改数量
+            Integer totalRealityRectificationNumber = resumptionDayVO3.getTotalRealityRectificationNumber() + resumptionDayVO2.getTotalRealityRectificationNumber() + resumptionDayVO1.getTotalRealityRectificationNumber();
             resumptionDayVO.setTotalPlanNumber(totalPlan);
             resumptionDayVO.setTotalRealityNumber(totalReality);
             int i = 0;
@@ -80,8 +94,49 @@ public class ResumptionReportServiceImpl implements ResumptionReportService {
             }
             resumptionDayVO.setTotalRate(i + "%");
             resumptionDayVO.setTotalAbnormalNumber(totalAbnormal);
+            int n = 0;
+            if (totalAbnormal != 0 && totalRealityRectificationNumber != 0) {
+                n = totalRealityRectificationNumber / totalAbnormal * 100;
+            }
+            resumptionDayVO.setTotalRealityRectificationRate(n + "%");
+            resumptionDayVO.setTotalRealityRectificationNumber(totalRealityRectificationNumber);
             resumptionDayVOS.add(resumptionDayVO);
         });
         return resumptionDayVOS;
     }
+
+    @Override
+    public List<IntrusionTestReportVO> intrusionTest(ResumptionDTO resumptionDTO) {
+        if (null == resumptionDTO.getOrgId()) {
+            resumptionDTO.setOrgId(SecurityUtils.getLoginUser().getOrgId());
+        }
+        //判断机构类型,如果机构类型大于行社,都展示行社数据
+        SysOrg sysOrg = orgService.selectSysOrgById(resumptionDTO.getOrgId(), SecurityConstants.INNER);
+        List<SysOrg> sysOrgs;
+        if (sysOrg.getType() < 3 || sysOrg.getShortName().endsWith("地区行社") || sysOrg.getType() == 9) {
+            sysOrgs = orgService.selectSysOrgByPathAndType(sysOrg.getPath(), 3, SecurityConstants.INNER);
+        } else if (sysOrg.getType() == 3) {
+            sysOrgs = orgService.selectSysOrgByPathAndType(sysOrg.getPath(), 4, SecurityConstants.INNER);
+        } else {
+            return null;
+        }
+        List<IntrusionTestReportVO> intrusionTestReportVOList = new ArrayList<>(16);
+        sysOrgs.forEach(o -> {
+            IntrusionTestReportVO intrusionTestReportVO = new IntrusionTestReportVO();
+            SysOrg sysOrg1;
+            if (sysOrg.getType() < 3 || sysOrg.getShortName().endsWith("地区行社") || sysOrg.getType() == 9) {
+                sysOrg1 = orgService.selectOrgById(o.getParentId(), SecurityConstants.INNER);
+            } else {
+                sysOrg1 = orgService.selectOrgById(orgService.selectOrgById(o.getParentId(), SecurityConstants.INNER).getParentId(), SecurityConstants.INNER);
+            }
+            IntrusionTestReportVO intrusionTestReportVO1 = resumptionReportMapper.selectIntrusionTestReport(resumptionDTO.getSearchTime(), o.getPath());
+            BeanUtils.copyProperties(intrusionTestReportVO1, intrusionTestReportVO);
+            intrusionTestReportVO.setCity(sysOrg1.getShortName().split("地区行社")[0]);
+            intrusionTestReportVO.setOrgName(o.getShortName());
+            Integer integer = monitorAccessReportMapper.selectNetworkNumberByPath(o.getPath());
+            intrusionTestReportVO.setNetworkNumber(integer);
+            intrusionTestReportVOList.add(intrusionTestReportVO);
+        });
+        return intrusionTestReportVOList;
+    }
 }

+ 30 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/vo/IntrusionTestReportVO.java

@@ -0,0 +1,30 @@
+package com.xunmei.core.reportForms.resumption.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 入侵报警测试报表
+ *
+ * @author :LuoWei
+ * @date : 2023/11/13
+ */
+@Data
+public class IntrusionTestReportVO {
+    private String city;
+    private String orgName;
+    @ApiModelProperty(value = "网点数量")
+    private Integer networkNumber;
+    @ApiModelProperty(value = "应履职次数")
+    private Integer planNumber;
+    @ApiModelProperty(value = "已履职次数")
+    private Integer realityNumber;
+    @ApiModelProperty(value = "履职完成率")
+    private String realityRate;
+    @ApiModelProperty(value = "隐患数量")
+    private Integer abnormalNumber;
+    @ApiModelProperty(value = "已整改数量")
+    private Integer realityRectificationNumber;
+    @ApiModelProperty(value = "整改完成率")
+    private String realityRectificationRate;
+}

+ 7 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/reportForms/resumption/vo/ResumptionDayVO.java

@@ -9,6 +9,7 @@ import lombok.Data;
  */
 @Data
 public class ResumptionDayVO {
+    private String city;
     private String orgName;
     @ApiModelProperty(value = "网点数量")
     private Integer networkNumber;
@@ -18,6 +19,12 @@ public class ResumptionDayVO {
     private Integer totalRealityNumber;
     @ApiModelProperty(value = "总计检查率")
     private String totalRate;
+    @ApiModelProperty(value = "总计已整改数量")
+    private Integer totalRealityRectificationNumber;
+    @ApiModelProperty(value = "总计整改完成率")
+    private String totalRealityRectificationRate;
+
+
     @ApiModelProperty(value = "总计隐患问题数")
     private Integer totalAbnormalNumber;
     @ApiModelProperty(value = "前应履职次数")

+ 58 - 6
soc-modules/soc-modules-core/src/main/resources/mapper/reportForms/ResumptionReportMapper.xml

@@ -6,16 +6,27 @@
 
     <select id="selectReport" resultType="com.xunmei.core.reportForms.resumption.vo.ResumptionDayVO">
         SELECT
-            COUNT( a.id ) AS frontPlanNumber,
-            IFNULL( SUM( IF ( a.`status` = 3, 1, 0 )), 0 ) AS frontRealityNumber,
-        IF( SUM( IF ( a.`status` = 3, 1, 0 ))=0 OR COUNT( a.id )=0,'0%',IFNULL(
+        COUNT( d.id ) AS totalRealityRectificationNumber,
+        COUNT( a.id ) AS frontPlanNumber,
+        IFNULL( SUM( IF ( a.`status` = 3, 1, 0 )), 0 ) AS frontRealityNumber,
+        IF
+        (
+        SUM(
+        IF
+        ( a.`status` = 3, 1, 0 ))= 0
+        OR COUNT( a.id )= 0,
+        '0%',
+        IFNULL(
         CONCAT( SUM( IF ( a.`status` = 3, 1, 0 ))/ COUNT( a.id )* 100, '%' ),
         '0%'
         )) AS frontRate,
-            IFNULL( SUM( a.exception_count ), 0 ) AS frontAbnormalNumber
+        IFNULL( SUM( a.exception_count ), 0 ) AS frontAbnormalNumber,
+        IFNULL( COUNT( d.id )/ IFNULL( SUM( a.exception_count ), 0 )* 100, '0%' ) AS totalRealityRectificationRate
         FROM
-            core_resumption a
-                LEFT JOIN core_resumption_plan b ON a.plan_id = b.id
+        core_resumption a
+        LEFT JOIN core_resumption_plan b ON a.plan_id = b.id
+        LEFT JOIN core_question d ON a.id = d.src_task_id
+        AND d.reform_status = 11
         WHERE
             b.plan_type = #{planType}
           AND a.type = 2
@@ -29,4 +40,45 @@
             and a.org_path  like concat(#{orgPath},'%')
         </if>
     </select>
+    <select id="planRectification" resultType="java.lang.Integer">
+        SELECT
+            COUNT(1)
+        FROM
+            core_question
+        WHERE
+            confirm_status = 2
+          AND reform_status = 10
+          AND src_task_id = #{taskId}
+    </select>
+    <select id="selectIntrusionTestReport"
+            resultType="com.xunmei.core.reportForms.resumption.vo.IntrusionTestReportVO">
+        SELECT
+            IFNULL(a.exception_count,0) AS abnormalNumber,
+            COUNT( a.id ) AS planNumber,
+            IFNULL( SUM( IF ( a.`status` = 3, 1, 0 )), 0 ) AS realityNumber,
+            IF
+                (
+                            IFNULL( SUM( IF ( a.`status` = 3, 1, 0 )), 0 )= 0
+                        OR COUNT( a.id )= 0,
+                            '0%',
+                            CONCAT(
+                                            IFNULL( SUM( IF ( a.`status` = 3, 1, 0 )), 0 )/ COUNT( a.id )* 100,
+                                            '%'
+                                )) AS realityRate,
+            COUNT( c.id ) AS realityRectificationNumber,
+            IF(COUNT( c.id )=0 OR IFNULL(a.exception_count,0)=0,'0%',CONCAT(COUNT( c.id )/IFNULL(a.exception_count,0)*100,'%'))	 AS realityRectificationRate
+        FROM
+            core_resumption a
+                LEFT JOIN core_resumption_plan b ON a.plan_id = b.id
+                LEFT JOIN core_question c ON c.src_task_id = a.id
+                AND reform_status = 11
+        WHERE
+            b.plan_type =4
+        <if test="date !=null">
+            AND a.ymd_date like concat(#{date},'%')
+        </if>
+        <if test="orgPath !=null">
+            and a.org_path  like concat(#{orgPath},'%')
+        </if>
+    </select>
 </mapper>

+ 40 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/GenderConverter.java

@@ -0,0 +1,40 @@
+package com.xunmei.system.util;
+
+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;
+
+/**
+ * @author :LuoWei
+ * @date : 2023/11/14
+ */
+public class GenderConverter 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 s, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        // 根据条件修改是否管理人员的值
+        if ("0".equals(s)) {
+            return new CellData("男");
+        } else if ("1".equals(s)){
+            return new CellData("女");
+        }else {
+            return new CellData("未知");
+        }
+    }
+}

+ 4 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/UserExport.java

@@ -33,10 +33,13 @@ public class UserExport {
     private String phone;
     @ExcelProperty(value = "状态", index = 6, converter = UserStatusConverter.class)
     private String isLock;
-    @ExcelProperty(value = "是否管理人员", index = 7, converter = UserManagerConverter.class)
+    @ExcelProperty(value = "安保部门从业人员", index = 7, converter = UserManagerConverter.class)
     private String isManager;
+
     @ExcelProperty(value = "登录IP", index = 8)
     private String lastIp;
     @ExcelProperty(value = "登录时间", index = 9)
     private Date lastTime;
+    @ExcelProperty(value = "性别", index = 10, converter = GenderConverter.class)
+    private String gender;
 }

+ 3 - 0
soc-modules/soc-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -502,6 +502,9 @@
         <if test="info.onlyManager ==true">
             AND t.is_manage ='Y'
         </if>
+        <if test="info.onlyManager ==false or info.onlyManager==null">
+            AND t.is_manage is NULL
+        </if>
         ORDER BY t.org_id DESC
     </select>
     <select id="selectrolesByOrgId" resultType="com.xunmei.system.api.domain.SysRole">