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"))); } }