wangbo 3 years ago
parent
commit
0a20778329

+ 69 - 13
operation_manager/src/main/java/com/huaxu/order/controller/WorkOrderStatisticsController.java

@@ -3,6 +3,7 @@ package com.huaxu.order.controller;
 import com.huaxu.model.AjaxMessage;
 import com.huaxu.model.LoginUser;
 import com.huaxu.model.ResultStatus;
+import com.huaxu.order.dto.StatisticsDto;
 import com.huaxu.order.dto.WorkOrderManageDto;
 import com.huaxu.order.service.WorkOrderManageService;
 import com.huaxu.util.UserUtil;
@@ -15,13 +16,11 @@ import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.math.BigDecimal;
 import java.text.DecimalFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @RestController
 @RequestMapping("/order/workOrderStatistics/")
@@ -35,7 +34,8 @@ public class WorkOrderStatisticsController {
     @ApiOperation(value = "工单完成情况统计")
     public AjaxMessage<Map<String,Object>> completionStatistics(
             @ApiParam(value="统计类型:0-按月统计,1-按年统计",required =true) @RequestParam(required = true) int type,
-            @ApiParam(value = "统计时间:月格式(yyyy-MM),年格式(yyyy)", required = true) @RequestParam(required = true) String startDate) throws ParseException {
+            @ApiParam(value = "统计时间:月格式(yyyy-MM),年格式(yyyy),自定义统计开始日期", required = true) @RequestParam(required = true) String startDate,
+            @ApiParam(value = "统计时间:年月统计不用传入此参数,自定义统计截至日期", required = false) @RequestParam(required = false) String endDate) throws ParseException {
         //同比日期
         String sameStartDate = null;
         //环比日期
@@ -102,11 +102,12 @@ public class WorkOrderStatisticsController {
 
         return new AjaxMessage<>(ResultStatus.OK,  statistics);
     }
-    @RequestMapping(value = "eventMonthStatistics", method = RequestMethod.GET)
-    @ApiOperation(value = "工单完成情况统计")
-    public AjaxMessage<List<Map<String,Object>>> eventMonthStatistics(
-            @ApiParam(value="统计类型:0-按月统计,1-按年统计",required =true) @RequestParam(required = true) int type,
-            @ApiParam(value = "统计时间:月格式(yyyy-MM),年格式(yyyy)", required = true) @RequestParam(required = true) String startDate) {
+    @RequestMapping(value = "eventStatistics", method = RequestMethod.GET)
+    @ApiOperation(value = "事件曲线数据统计展示")
+    public AjaxMessage<List<Map<String,Object>>> eventStatistics(
+            @ApiParam(value="统计类型:0-按月统计,1-按年统计,2-自定义统计",required =true) @RequestParam(required = true) int type,
+            @ApiParam(value = "统计时间:月格式(yyyy-MM),年格式(yyyy),自定义统计时间开始日期", required = true) @RequestParam(required = true) String startDate,
+            @ApiParam(value = "统计时间:年月统计不用传入此参数,自定义统计截至日期", required = false) @RequestParam(required = false) String endDate) {
         List<Map<String,Object>> statistics = null;
         //根据用户编号,获取用户的权限
         LoginUser loginUser = UserUtil.getCurrentUser();
@@ -117,14 +118,69 @@ public class WorkOrderStatisticsController {
         workOrderManageDto.setUserType(loginUser.getType());
         //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
         workOrderManageDto.setPermissonType(loginUser.getPermissonType());
-        if(type==0){
-            statistics =workOrderManageService.eventMonthStatistics(workOrderManageDto);
+        if(type == 0){
+            statistics = workOrderManageService.eventMonthStatistics(workOrderManageDto);
         }
-        else if(type ==1){
+        else if(type == 1){
             statistics =workOrderManageService.eventYearStatistics(workOrderManageDto);
         }
+        else if(type == 2){
+            workOrderManageDto.setEndDate(endDate);
+            statistics = workOrderManageService.eventMonthStatistics(workOrderManageDto);
+        }
         return new AjaxMessage<>(ResultStatus.OK,  statistics);
     }
+
+
+    @RequestMapping(value = "distributionStatistics", method = RequestMethod.GET)
+    @ApiOperation(value = "分布统计")
+    public AjaxMessage<Map<String,Object>> distributionStatistics(
+            @ApiParam(value="统计类型:0-按月统计,1-按年统计,2-自定义统计",required =true) @RequestParam(required = true) int type,
+            @ApiParam(value = "统计时间:月格式(yyyy-MM),年格式(yyyy)", required = true) @RequestParam(required = true) String startDate,
+            @ApiParam(value = "统计时间:年月统计不用传入此参数,自定义统计截至日期", required = false) @RequestParam(required = false) String endDate) {
+        Map<String,Object> result = new HashMap<>();
+        //根据用户编号,获取用户的权限
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        WorkOrderManageDto workOrderManageDto = new WorkOrderManageDto();
+        workOrderManageDto.setOrderStatus(type);
+        workOrderManageDto.setProgramItems(loginUser.getProgramItemList());
+        workOrderManageDto.setUserType(loginUser.getType());
+        //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
+        workOrderManageDto.setPermissonType(loginUser.getPermissonType());
+        if(type == 0){
+
+            workOrderManageDto.setStartDate(startDate);
+        }
+        else if(type == 1){
+
+            workOrderManageDto.setStartDate(startDate);
+        }
+        else if(type == 2){
+            workOrderManageDto.setStartDate(startDate);
+            workOrderManageDto.setEndDate(endDate);
+        }
+        result.put("上报类型",CalculatePercentage(workOrderManageService.reportStatistics(workOrderManageDto)));
+        result.put("工单状态",CalculatePercentage(workOrderManageService.orderStatusStatistics(workOrderManageDto)));
+        result.put("工单类型",CalculatePercentage(workOrderManageService.orderTypeStatistics(workOrderManageDto)));
+        return new AjaxMessage<>(ResultStatus.OK,  result);
+    }
+
+    private List<StatisticsDto> CalculatePercentage(List<StatisticsDto> list){
+        double total= 0;
+        DecimalFormat df = new DecimalFormat("#.00");
+        for(StatisticsDto statisticsDto: list){
+           if(statisticsDto.getStatisticsValue()!= null) {
+               total += statisticsDto.getStatisticsValue();
+           }
+        }
+        for(StatisticsDto statisticsDto: list){
+            double d = statisticsDto.getStatisticsValue()*100/total;
+            BigDecimal b = new BigDecimal(d);
+            statisticsDto.setStatisticsValue(b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+        }
+        return list;
+    }
+
     /**
      * 日期增加一年
      */

+ 4 - 3
operation_manager/src/main/java/com/huaxu/order/dao/WorkOrderManageMapper.java

@@ -2,6 +2,7 @@ package com.huaxu.order.dao;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaxu.order.dto.StatisticsDto;
 import com.huaxu.order.dto.WorkOrderManageByAlarmDto;
 import com.huaxu.order.dto.WorkOrderManageDto;
 import com.huaxu.order.entity.WorkOrderManage;
@@ -73,19 +74,19 @@ public interface WorkOrderManageMapper {
     /**
      * 上报统计
      */
-    List<Map<String,Object>> reportStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
+    List<StatisticsDto> reportStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
 
 
     /**
      * 工单状态统计
      */
-    List<Map<String,Object>> orderStatusStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
+    List<StatisticsDto> orderStatusStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
 
 
     /**
      * 工单类型统计
      */
-    List<Map<String,Object>> orderTypeStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
+    List<StatisticsDto> orderTypeStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
 
     /**
      * 待处理权限

+ 22 - 0
operation_manager/src/main/java/com/huaxu/order/dto/StatisticsDto.java

@@ -0,0 +1,22 @@
+package com.huaxu.order.dto;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@ApiModel(value = "工单统计-分布统计")
+@Data
+public class StatisticsDto {
+
+    /**
+     * 统计项名
+     */
+    @ApiModelProperty(value = "统计项名")
+    private String statisticsName;
+    /**
+     * 统计数据
+     */
+    @ApiModelProperty(value = "统计数据")
+    private Double statisticsValue;
+}

+ 4 - 3
operation_manager/src/main/java/com/huaxu/order/service/WorkOrderManageService.java

@@ -3,6 +3,7 @@ package com.huaxu.order.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaxu.order.dto.StatisticsDto;
 import com.huaxu.order.dto.WorkOrderManageByAlarmDto;
 import com.huaxu.order.dto.WorkOrderManageDto;
 import com.huaxu.order.entity.WorkOrderManage;
@@ -110,17 +111,17 @@ public interface WorkOrderManageService {
     /**
      * 上报统计
      */
-    List<Map<String,Object>> reportStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
+    List<StatisticsDto> reportStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
 
 
     /**
      * 工单状态统计
      */
-    List<Map<String,Object>> orderStatusStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
+    List<StatisticsDto> orderStatusStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
 
 
     /**
      * 工单类型统计
      */
-    List<Map<String,Object>> orderTypeStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
+    List<StatisticsDto> orderTypeStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
 }

+ 4 - 3
operation_manager/src/main/java/com/huaxu/order/service/impl/WorkOrderManageServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.huaxu.model.LoginUser;
 import com.huaxu.order.dao.WorkOrderManageMapper;
+import com.huaxu.order.dto.StatisticsDto;
 import com.huaxu.order.dto.WorkOrderManageByAlarmDto;
 import com.huaxu.order.dto.WorkOrderManageDto;
 import com.huaxu.order.entity.WorkOrderManage;
@@ -211,17 +212,17 @@ public class WorkOrderManageServiceImpl implements WorkOrderManageService {
     }
 
     @Override
-    public List<Map<String, Object>> reportStatistics(WorkOrderManageDto workOrderManageDto) {
+    public List<StatisticsDto> reportStatistics(WorkOrderManageDto workOrderManageDto) {
         return workOrderManageMapper.reportStatistics(workOrderManageDto);
     }
 
     @Override
-    public List<Map<String, Object>> orderStatusStatistics(WorkOrderManageDto workOrderManageDto) {
+    public List<StatisticsDto> orderStatusStatistics(WorkOrderManageDto workOrderManageDto) {
         return workOrderManageMapper.orderStatusStatistics(workOrderManageDto);
     }
 
     @Override
-    public List<Map<String, Object>> orderTypeStatistics(WorkOrderManageDto workOrderManageDto) {
+    public List<StatisticsDto> orderTypeStatistics(WorkOrderManageDto workOrderManageDto) {
         return workOrderManageMapper.orderTypeStatistics(workOrderManageDto);
     }
 

+ 16 - 7
operation_manager/src/main/resources/mapper/order/WorkOrderManageMapper.xml

@@ -88,6 +88,12 @@
     </collection>
   </resultMap>
 
+
+  <resultMap id="StatisticsMap" type="com.huaxu.order.dto.StatisticsDto" >
+    <result column="statistics_name" property="statisticsName" jdbcType="VARCHAR" />
+    <result column="statistics_value" property="statisticsValue" jdbcType="VARCHAR" />
+  </resultMap>
+
   <sql id="Base_Column_List" >
     id, task_no, task_desc, order_user_id, send_time, send_by, plan_finish_date, finish_date, 
     date_limit, urgency, address, contact_user, contact_phone, order_time, company_org_id, 
@@ -1016,9 +1022,9 @@
   </select>
 
   <!--上报类型统计-->
-  <select id="reportStatistics" resultType="map">
-    select  case when t1.event_type=1 then '运维上报' when t1.event_type=2 then '用户上报' when t1.event_type=3 then '设备告警' end 上报类型,
-    count(*) 数量
+  <select id="reportStatistics" resultMap="StatisticsMap">
+    select  case when t1.event_type=1 then '运维上报' when t1.event_type=2 then '用户上报' when t1.event_type=3 then '设备告警' end statistics_name,
+    count(*) statistics_value
     from sc_work_order_manage t1
     <where>
       <if test="order.statsType == 0">
@@ -1064,8 +1070,8 @@
   </select>
 
   <!--工单状态统计-->
-  <select id="orderStatusStatistics" resultType="map">
-    select 工单状态,sum(数量) 数量 from
+  <select id="orderStatusStatistics" resultMap="StatisticsMap">
+    select 工单状态 statistics_name,sum(数量) statistics_value from
     (
       select case when t1.order_status=0 then '未派单' when t1.order_status=1 or t1.order_status=4 then '处理中'
       when t1.order_status=2 then '已完成' when t1.order_status=3 then '终止' end 工单状态,count(*) 数量
@@ -1116,8 +1122,11 @@
   </select>
 
   <!--工单类型统计-->
-  <select id="orderTypeStatistics" resultType="map">
-    select t1.order_type_id,count(*) 数量
+  <select id="orderTypeStatistics" resultMap="StatisticsMap">
+    select  case when t1.order_type_id=1 then '表务工单' when t1.order_type_id=2 then '停通水工单'
+    when t1.order_type_id=3 then '抢修工单' when t1.order_type_id=4 then '漏点定位工单'
+    when t1.order_type_id=5 then '测漏工单' when t1.order_type_id=6 then '违章跑水工单' end statistics_name,
+    count(*) statistics_value
     from sc_work_order_manage t1
     <where>
       t1.order_type_id>=1