Răsfoiți Sursa

流程查阅统计报表

wangliang 9 luni în urmă
părinte
comite
8c7f2d2de8

+ 75 - 0
sop-api/src/main/java/com/qmth/sop/server/api/FlowMsgReferReportController.java

@@ -0,0 +1,75 @@
+package com.qmth.sop.server.api;
+
+import com.google.common.collect.ImmutableMap;
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.sop.business.bean.report.FlowMsgReferReportBean;
+import com.qmth.sop.business.service.FlowMsgReferReportService;
+import com.qmth.sop.common.contant.SystemConstant;
+import com.qmth.sop.common.enums.MessageTypeEnum;
+import com.qmth.sop.common.util.Result;
+import com.qmth.sop.common.util.ResultUtil;
+import io.swagger.annotations.*;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+@Api(tags = "流程检查统计Controller")
+@RestController
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_FLOW_MSG_REFER)
+public class FlowMsgReferReportController {
+
+    public static final String TOTAL = "total";
+
+    public static final String READ_RATE = "readRate";
+
+    public static final String UN_READ_RATE = "unReadRate";
+
+    @Resource
+    FlowMsgReferReportService flowMsgReferReportService;
+
+    @ApiOperation(value = "大区经理查阅统计")
+    @RequestMapping(value = "/area_manager/report", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "流程查阅提醒报表", response = FlowMsgReferReportBean.class) })
+    public Result areaManagerCountReport(@ApiParam(value = "服务单元id", required = true) @RequestParam Long serviceId) {
+        return ResultUtil.ok(
+                this.calculateRate(flowMsgReferReportService.FlowMsgReport(serviceId, MessageTypeEnum.OFFICE_SOP)));
+    }
+
+    @ApiOperation(value = "区域协调人查阅统计")
+    @RequestMapping(value = "/regional_coordinator/report", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "流程查阅提醒报表", response = FlowMsgReferReportBean.class) })
+    public Result regionalCoordinatorCountReport(
+            @ApiParam(value = "服务单元id", required = true) @RequestParam Long serviceId) {
+        return ResultUtil.ok(
+                this.calculateRate(flowMsgReferReportService.FlowMsgReport(serviceId, MessageTypeEnum.CLOUD_MARK_SOP)));
+    }
+
+    /**
+     * 计算比率
+     *
+     * @param flowMsgReferReportBeanList
+     * @return
+     */
+    protected Map<String, Object> calculateRate(List<FlowMsgReferReportBean> flowMsgReferReportBeanList) {
+        Integer sum = flowMsgReferReportBeanList.stream().mapToInt(s -> s.getSum()).sum();
+        Integer readSum = flowMsgReferReportBeanList.stream().mapToInt(s -> s.getReadMsg()).sum();
+        Integer unReadSum = flowMsgReferReportBeanList.stream().mapToInt(s -> s.getUnReadMsg()).sum();
+        BigDecimal readRate = new BigDecimal(readSum);
+        BigDecimal unReadRate = new BigDecimal(unReadSum);
+        if (Objects.nonNull(sum) && sum.intValue() > 0) {
+            readRate = readRate.divide(new BigDecimal(sum), 2, BigDecimal.ROUND_HALF_UP).multiply(SystemConstant.RATE)
+                    .setScale(2, BigDecimal.ROUND_HALF_UP);
+            unReadRate = unReadRate.divide(new BigDecimal(sum), 2, BigDecimal.ROUND_HALF_UP)
+                    .multiply(SystemConstant.RATE).setScale(2, BigDecimal.ROUND_HALF_UP);
+        }
+        return ImmutableMap.of(TOTAL, sum, READ_RATE, readRate, UN_READ_RATE, unReadRate,
+                ResourceSecurityReportController.RECORDS, flowMsgReferReportBeanList);
+    }
+}

+ 84 - 0
sop-business/src/main/java/com/qmth/sop/business/bean/report/FlowMsgReferReportBean.java

@@ -0,0 +1,84 @@
+package com.qmth.sop.business.bean.report;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @Description: 流程查阅提醒报表bean
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/9/18
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class FlowMsgReferReportBean implements Serializable {
+
+    @ApiModelProperty(value = "名称")
+    String name;
+
+    @ApiModelProperty(value = "查阅总数")
+    Integer sum;
+
+    @ApiModelProperty(value = "已查阅")
+    Integer readMsg;
+
+    @ApiModelProperty(value = "未查阅")
+    Integer unReadMsg;
+
+    @ApiModelProperty(value = "已查阅比率")
+    BigDecimal readRate;
+
+    @ApiModelProperty(value = "未查阅比率")
+    BigDecimal unReadRate;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getSum() {
+        return sum;
+    }
+
+    public void setSum(Integer sum) {
+        this.sum = sum;
+    }
+
+    public Integer getReadMsg() {
+        return readMsg;
+    }
+
+    public void setReadMsg(Integer readMsg) {
+        this.readMsg = readMsg;
+    }
+
+    public Integer getUnReadMsg() {
+        return unReadMsg;
+    }
+
+    public void setUnReadMsg(Integer unReadMsg) {
+        this.unReadMsg = unReadMsg;
+    }
+
+    public BigDecimal getReadRate() {
+        return readRate;
+    }
+
+    public void setReadRate(BigDecimal readRate) {
+        this.readRate = readRate;
+    }
+
+    public BigDecimal getUnReadRate() {
+        return unReadRate;
+    }
+
+    public void setUnReadRate(BigDecimal unReadRate) {
+        this.unReadRate = unReadRate;
+    }
+}

+ 28 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/FlowMsgReferReportMapper.java

@@ -0,0 +1,28 @@
+package com.qmth.sop.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.sop.business.bean.report.FlowMsgReferReportBean;
+import com.qmth.sop.business.entity.TBService;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @Description: 流程检查统计报表mapper
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/9/18
+ */
+public interface FlowMsgReferReportMapper extends BaseMapper<TBService> {
+
+    /**
+     * 查阅提醒消息列表
+     *
+     * @param serviceId
+     * @param messageTypeEnum
+     * @return
+     */
+    List<FlowMsgReferReportBean> FlowMsgReport(@Param("serviceId") Long serviceId,
+            @Param("messageTypeEnum") String messageTypeEnum);
+}

+ 27 - 0
sop-business/src/main/java/com/qmth/sop/business/service/FlowMsgReferReportService.java

@@ -0,0 +1,27 @@
+package com.qmth.sop.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.bean.report.FlowMsgReferReportBean;
+import com.qmth.sop.business.entity.TBService;
+import com.qmth.sop.common.enums.MessageTypeEnum;
+
+import java.util.List;
+
+/**
+ * @Description: 流程检查统计报表service
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/9/18
+ */
+public interface FlowMsgReferReportService extends IService<TBService> {
+
+    /**
+     * 查阅提醒消息列表
+     *
+     * @param serviceId
+     * @param messageTypeEnum
+     * @return
+     */
+    List<FlowMsgReferReportBean> FlowMsgReport(Long serviceId, MessageTypeEnum messageTypeEnum);
+}

+ 35 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/FlowMsgReferReportServiceImpl.java

@@ -0,0 +1,35 @@
+package com.qmth.sop.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.bean.report.FlowMsgReferReportBean;
+import com.qmth.sop.business.entity.TBService;
+import com.qmth.sop.business.mapper.FlowMsgReferReportMapper;
+import com.qmth.sop.business.service.FlowMsgReferReportService;
+import com.qmth.sop.common.enums.MessageTypeEnum;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @Description: 流程检查统计报表service impl
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/9/18
+ */
+@Service
+public class FlowMsgReferReportServiceImpl extends ServiceImpl<FlowMsgReferReportMapper, TBService>
+        implements FlowMsgReferReportService {
+
+    /**
+     * 查阅提醒消息列表
+     *
+     * @param serviceId
+     * @param messageTypeEnum
+     * @return
+     */
+    @Override
+    public List<FlowMsgReferReportBean> FlowMsgReport(Long serviceId, MessageTypeEnum messageTypeEnum) {
+        return this.baseMapper.FlowMsgReport(serviceId, messageTypeEnum.name());
+    }
+}

+ 20 - 0
sop-business/src/main/resources/mapper/FlowMsgReferReportMapper.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qmth.sop.business.mapper.FlowMsgReferReportMapper">
+
+    <select id="FlowMsgReport" resultType="com.qmth.sop.business.bean.report.FlowMsgReferReportBean">
+        select t.*,
+               ROUND(t.readMsg / sum,2) * 100 as readRate,
+               ROUND(t.unReadMsg / sum,2) * 100 as unReadRate from(select
+               distinct su.real_name as name,
+                        count(sm.id) as sum,
+                        sum(IF(sm.status = 1,1,0)) as readMsg,
+                        sum(IF(sm.status = 0,1,0)) as unReadMsg
+           from
+               sys_message sm
+               join sys_user su on su.id = sm.receive_user_id
+           where sm.service_id = #{serviceId} and sm.type = #{messageTypeEnum}
+           group by su.real_name) t
+        order by sum
+    </select>
+</mapper>

+ 6 - 1
sop-common/src/main/java/com/qmth/sop/common/contant/SystemConstant.java

@@ -12,6 +12,7 @@ import org.springframework.util.LinkedMultiValueMap;
 import java.io.File;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
+import java.math.BigDecimal;
 import java.net.URLEncoder;
 import java.nio.charset.Charset;
 import java.text.MessageFormat;
@@ -101,7 +102,7 @@ public class SystemConstant {
     public static final String HYPHEN = "-";
 
     //    public static final String SYS_ADMIN = "sysadmin";
-    public static final String VERSION_VALUE = "1.0.0.1";
+    public static final String VERSION_VALUE = "1.1.2.1";
 
     public static final String PATH = "path";
 
@@ -185,6 +186,8 @@ public class SystemConstant {
 
     public static final int OFFICE_COMMON_GROUP = 1000;
 
+    public static final BigDecimal RATE = new BigDecimal(100);
+
     /**
      * 微信app
      */
@@ -448,6 +451,8 @@ public class SystemConstant {
 
     public static final String PREFIX_URL_RESOURCE_SECURITY = "/admin/resource/security";
 
+    public static final String PREFIX_URL_FLOW_MSG_REFER = "/admin/flow/msg/refer";
+
     public static final String PREFIX_URL_SOP_WARN_MONITOR = "/admin/sop/warn/monitor";
 
     /**