StatisticsController.java 10.4 KB
Newer Older
苗卫卫 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196
package com.boco.nbd.wios.flow.controller;

import cn.hutool.core.date.DateUtil;
import com.boco.nbd.framework.common.ResponseMessage2;
import com.boco.nbd.wios.flow.enums.FlowNodeEnum;
import com.boco.nbd.wios.flow.service.IHolidayService;
import com.boco.nbd.wios.flow.service.IStatisticsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.map.HashedMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.text.ParseException;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @Description: TODO
 * @Author: ZQY
 * @Date: 2022/8/16
 **/
@RestController
@Slf4j
@RequestMapping("statistics")
@Api(tags = "大屏统计接口")
public class StatisticsController {

    @Autowired
    private IStatisticsService statisticsService;

    @Autowired
    private IHolidayService holidayService;


    /**
     * 提供大屏页面订单总数接口
     * @return
     */
    @ApiOperation(value = "提供大屏页面订单总数接口")
    @GetMapping(value = "/getOrderQuantity")

    @ApiImplicitParams({@ApiImplicitParam(name = "oemId", value = "主机厂ID", dataType = "String", paramType = "query", required = false),
            @ApiImplicitParam(name = "startTime", value = "开始时间yyy-mm-dd", dataType = "String", paramType = "query", required = false),
            @ApiImplicitParam(name = "endTime", value = "结束时间yyy-mm-dd", dataType = "String", paramType = "query", required = false)})

    public ResponseMessage2 getOrderQuantity(String oemId,String startTime,String endTime){
        return ResponseMessage2.Success2(statisticsService.getOrderQuantity(oemId,startTime,endTime));
    }


    /**
     * 提供大屏页面省份订单总数接口
     * @return
     */
    @ApiOperation(value = "提供大屏页面省份订单总数接口")
    @GetMapping(value = "/getProvinceOrderQuantity")
    @ApiImplicitParams({@ApiImplicitParam(name = "orderQuantityType", value = "大屏数据类型 1:派发订单总量 2:安装订单总数 3:新增当天订单总数 4:完成当天订单总数 5:新增当月订单总数 6:完成当月订单总数 ", dataType = "String", paramType = "query", required = true),
            @ApiImplicitParam(name = "oemId", value = "主机厂ID", dataType = "String", paramType = "query", required = false),
            @ApiImplicitParam(name = "startTime", value = "开始时间yyy-mm-dd", dataType = "String", paramType = "query", required = false),
            @ApiImplicitParam(name = "endTime", value = "结束时间yyy-mm-dd", dataType = "String", paramType = "query", required = false)})
    public ResponseMessage2 getProvinceOrderQuantity(String orderQuantityType,String oemId,String startTime,String endTime){
        return ResponseMessage2.Success2(statisticsService.getProvinceOrderQuantity(orderQuantityType,oemId,startTime,endTime));
    }


    /**
     * 提供大屏页面订单总数接口
     * @return
     */
    @ApiOperation(value = "提供大屏页面省份钻取地市订单总数接口")
    @GetMapping(value = "/getAreaOrderQuantity")
    @ApiImplicitParams({@ApiImplicitParam(name = "orderQuantityType", value = "大屏数据类型 1:派发订单总量 2:安装订单总数 3:新增当天订单总数 4:完成当天订单总数 5:新增当月订单总数 6:完成当月订单总数 ", dataType = "String", paramType = "query", required = true),
            @ApiImplicitParam(name = "oemId", value = "主机厂ID", dataType = "String", paramType = "query", required = false),
            @ApiImplicitParam(name = "provinceId", value = "省份id", dataType = "String", paramType = "query", required = true),
            @ApiImplicitParam(name = "startTime", value = "开始时间yyy-mm-dd", dataType = "String", paramType = "query", required = false),
            @ApiImplicitParam(name = "endTime", value = "结束时间yyy-mm-dd", dataType = "String", paramType = "query", required = false)})
    public ResponseMessage2 getAreaOrderQuantity(String orderQuantityType,String provinceId,String oemId,String startTime,String endTime){
        Map<String,String> map = statisticsService.getAreaOrderQuantity(orderQuantityType,provinceId,oemId,startTime,endTime);
        return ResponseMessage2.Success2(map.isEmpty() ? "":map);
    }


    /**
     * 获取每个月新增的订单总数同比接口
     * @return
     */
    @ApiOperation(value = "获取每个月新增的订单总数同比接口")
    @GetMapping(value = "/getMonthOrderQuantity")

    @ApiImplicitParams({@ApiImplicitParam(name = "oemId", value = "主机厂ID", dataType = "String", paramType = "query", required = false)})
    public ResponseMessage2 getMonthOrderQuantity(String oemId){
        return ResponseMessage2.Success2(statisticsService.getMonthOrderQuantity(oemId));
    }


    /**
     * 获取每个月完成的订单总数同比接口
     * @return
     */
    @ApiOperation(value = "获取每个月完成的订单总数接口")
    @GetMapping(value = "/getFinishMonthOrderQuantity")

    @ApiImplicitParams({@ApiImplicitParam(name = "oemId", value = "主机厂ID", dataType = "String", paramType = "query", required = false)})
    public ResponseMessage2 getFinishMonthOrderQuantity(String oemId){
        return ResponseMessage2.Success2(statisticsService.getFinishMonthOrderQuantity(oemId));
    }

    /**
     * 获取时效统计
     * @return
     */
    @ApiOperation(value = "获取时效统计")
    @GetMapping(value = "/getNodeFlagTime")
    public ResponseMessage2 getNodeFlagTime()  {
        List<String> holidayPOList= holidayService.getListByType("节假日");
        List<String> workList= holidayService.getListByType("调休工作日");

        String[] workdayArr = holidayPOList.toArray(new String[0]);
        String[] naturalArr = workList.toArray(new String[0]);

        //首联时效
        float time101 = statisticsService.getNodeFlagTime(FlowNodeEnum.NODE_101.getKey()+"-"+FlowNodeEnum.NODE_101.getValue(),FlowNodeEnum.NODE_102.getKey()+"-"+FlowNodeEnum.NODE_102.getValue(),FlowNodeEnum.NODE_102.getKey(),workdayArr,naturalArr);
        //勘测预约时效
        float time104 = statisticsService.getNodeFlagTime(FlowNodeEnum.NODE_103.getKey()+"-"+FlowNodeEnum.NODE_103.getValue(),FlowNodeEnum.NODE_105.getKey()+"-"+FlowNodeEnum.NODE_105.getValue(),FlowNodeEnum.NODE_104.getKey(),workdayArr,naturalArr);
        //勘测时效
        float time107 = statisticsService.getNodeFlagTime(FlowNodeEnum.NODE_105.getKey()+"-"+FlowNodeEnum.NODE_105.getValue(),FlowNodeEnum.NODE_107.getKey()+"-"+FlowNodeEnum.NODE_107.getValue(),FlowNodeEnum.NODE_107.getKey(),workdayArr,naturalArr);
        //勘测审核时效
        float time108 = statisticsService.getNodeFlagTime(FlowNodeEnum.NODE_107.getKey()+"-"+FlowNodeEnum.NODE_107.getValue(),FlowNodeEnum.NODE_108.getKey()+"-"+FlowNodeEnum.NODE_108.getValue(),FlowNodeEnum.NODE_108.getKey(),workdayArr,naturalArr);
        //安装预约时效
        float time110 = statisticsService.getNodeFlagTime(FlowNodeEnum.NODE_108.getKey()+"-"+FlowNodeEnum.NODE_108.getValue(),FlowNodeEnum.NODE_110.getKey()+"-"+FlowNodeEnum.NODE_110.getValue(),FlowNodeEnum.NODE_110.getKey(),workdayArr,naturalArr);
        //安装时效
        float time112 = statisticsService.getNodeFlagTime(FlowNodeEnum.NODE_108.getKey()+"-"+FlowNodeEnum.NODE_108.getValue(),FlowNodeEnum.NODE_112.getKey()+"-"+FlowNodeEnum.NODE_112.getValue(),FlowNodeEnum.NODE_112.getKey(),workdayArr,naturalArr);
        //安装审核时效
        float time113 = statisticsService.getNodeFlagTime(FlowNodeEnum.NODE_112.getKey()+"-"+FlowNodeEnum.NODE_112.getValue(),FlowNodeEnum.NODE_113.getKey()+"-"+FlowNodeEnum.NODE_113.getValue(),FlowNodeEnum.NODE_113.getKey(),workdayArr,naturalArr);


        Map<String,Float> nodeFlagTimeMap=new HashedMap();
        nodeFlagTimeMap.put("首联时效", time101==0 ? (float) 0.01 :time101);
        nodeFlagTimeMap.put("勘测预约时效",time104==0 ? (float) 0.01 :time104);
        nodeFlagTimeMap.put("勘测时效",time107==0 ? (float) 0.01 : time107);
        nodeFlagTimeMap.put("勘测审核时效",time108==0 ? (float) 0.01 : time108);
        nodeFlagTimeMap.put("安装预约时效",time110==0 ? (float) 0.01 : time110);
        nodeFlagTimeMap.put("安装时效",time112==0 ? (float) 0.01 : time112);
        nodeFlagTimeMap.put("安装审核时效",time113==0 ? (float) 0.01 : time113);

        return ResponseMessage2.Success2(nodeFlagTimeMap);
    }



    @ApiOperation(value = "根据服务商查询评分")
    @GetMapping(value = "/getScoreSupplierBySupplier")
    public ResponseMessage2 getScoreSupplierBySupplier()  {
        return ResponseMessage2.Success2(statisticsService.getScoreSupplierBySupplier());
    }


    @ApiOperation(value = "根据区域查询评分")
    @GetMapping(value = "/getScoreSupplierByRegion")
    public ResponseMessage2 getScoreSupplierByRegion()  {
        return ResponseMessage2.Success2(statisticsService.getScoreSupplierByRegion());
    }



    @ApiOperation(value = "区域完成占比")
    @GetMapping(value = "/getOrderQuantityGroupArea")
    @ApiImplicitParams({@ApiImplicitParam(name = "oemId", value = "主机厂ID", dataType = "String", paramType = "query", required = false),
            @ApiImplicitParam(name = "startTime", value = "开始时间yyy-mm-dd", dataType = "String", paramType = "query", required = false),
            @ApiImplicitParam(name = "endTime", value = "结束时间yyy-mm-dd", dataType = "String", paramType = "query", required = false)})
    public ResponseMessage2 getOrderQuantityGroupArea(String oemId,String startTime,String endTime)  {
        return ResponseMessage2.Success2(statisticsService.getOrderQuantityGroupArea(oemId,startTime,endTime));
    }

    @ApiOperation(value = "本月满意度")
    @GetMapping(value = "/getMonthSatisfaction")
    public ResponseMessage2  getMonthSatisfaction(){

        return ResponseMessage2.Success2(statisticsService.getSatisfaction(DateUtil.format(new Date(), "yyyy-MM")));
    }


    @ApiOperation(value = "上月满意度")
    @GetMapping(value = "/getLastMonthSatisfaction")
    public ResponseMessage2  getLastMonthSatisfaction(){

        return ResponseMessage2.Success2(statisticsService.getSatisfaction(DateUtil.format(DateUtil.lastMonth(), "yyyy-MM")));
    }
}