fengjin
2022-10-11 5dbea4c452f77c5458e55762c94c2f830eb98617
flower_city/src/main/java/com/dg/core/controller/HomeStatisticsController.java
@@ -1,37 +1,159 @@
package com.dg.core.controller;
import com.dg.core.ResultData;
import com.dg.core.db.gen.entity.WorkOrder;
import com.dg.core.db.gen.entity.*;
import com.dg.core.service.IGuideEvolveService;
import com.dg.core.service.IGuideRepairOrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Calendar;
import java.util.List;
@Api(tags = {"首页统计接口"})
@RestController
@RequestMapping("/Home")
public class HomeStatisticsController
{
    //导办工单接口
    @Autowired
    IGuideRepairOrderService iGuideRepairOrderService;
    //导办进展
    @Autowired
    IGuideEvolveService iGuideEvolveService;
    @ApiOperation("首页统计不同状态工单数")
    @GetMapping("/getWorkOrder")
    public ResultData getWorkOrder()
    {
        WorkOrder workOrder=new WorkOrder();
        //状态(1待分配  2 待办结 3 已办结 4 待评价 5 已取消  6未解决  7已解决)
        workOrder.setAllNum(iGuideRepairOrderService.countStatisticsNum("",null,null,null,null));
        workOrder.setWaitDistribution(iGuideRepairOrderService.countStatisticsNum("1",null,null,null,null));
        workOrder.setWaitDealWith(iGuideRepairOrderService.countStatisticsNum("2",null,null,null,null));
        workOrder.setHaveDealWith(iGuideRepairOrderService.countStatisticsNum("3",null,null,null,null));
        workOrder.setRemainEvaluated(iGuideRepairOrderService.countStatisticsNum("4",null,null,null,null));
        workOrder.setCanceled(iGuideRepairOrderService.countStatisticsNum("5",null,null,null,null));
        workOrder.setUnsolved(iGuideRepairOrderService.countStatisticsNum("6",null,null,null,null));
        workOrder.setResolved(iGuideRepairOrderService.countStatisticsNum("7",null,null,null,null));
        return ResultData.success();
        //是否超时 (1 未超时   2已超时) 超时未办结
        workOrder.setOvertime(iGuideRepairOrderService.countStatisticsNum(null,null,null,"2",null));
//        超时未办结
        workOrder.setOvertimeWaitDealWith(iGuideRepairOrderService.countStatisticsNum("2",null,null,"2",null));
        return ResultData.success(workOrder);
    }
    @ApiOperation("首页统计不同时间段的工单数量")
    @GetMapping("/getTimeWorkOrder")
    public ResultData getTimeWorkOrder()
    {
        //1 今天   2昨天   3本月   4本年度
        //累计全部 本年 本月 今日 昨日
        TimeWorkOrder timeWorkOrder=new TimeWorkOrder();
        timeWorkOrder.setAllNum(iGuideRepairOrderService.countStatisticsNum(null,null,null,null,null));
        timeWorkOrder.setYearNum(iGuideRepairOrderService.countStatisticsNum(null,null,"4",null,null));
        timeWorkOrder.setMonthNum(iGuideRepairOrderService.countStatisticsNum(null,null,"3",null,null));
        timeWorkOrder.setTodayNum(iGuideRepairOrderService.countStatisticsNum(null,null,"1",null,null));
        timeWorkOrder.setYesterdayNum(iGuideRepairOrderService.countStatisticsNum(null,null,"2",null,null));
        return ResultData.success(timeWorkOrder);
    }
    @ApiOperation("根据选择的时间段 筛选导办工单数 timeType:1 本年度 15 近15天的   30 近30天的")
    @GetMapping("/getSelectionTimeOrder")
    public ResultData getSelectionTimeOrder(@RequestParam("timeType") Integer timeType)
    {
        if(timeType<1)
        {
            return ResultData.error("请输入时间");
        }
        if(timeType==1)
        {
            Calendar calendar=Calendar.getInstance();
            timeType=calendar.get(Calendar.DAY_OF_YEAR);
        }
//        System.out.println(timeType);
        //1 本年度 15 近15天的   30 近30天的
        List<CountListNum> listOne=iGuideRepairOrderService.countListNum("2",null,timeType);
        List<CountListNum> listTwo=iGuideRepairOrderService.countListNum("3",null,timeType);
        CountList countList=new CountList();
        countList.setWaitDealWithList(listOne);
        countList.setHaveDealWith(listTwo);
        return ResultData.success(countList);
    }
    @ApiOperation("获取效率比值")
    @GetMapping("/getEfficiency")
    public ResultData getEfficiency()
    {
        EfficiencyEntity entity=new EfficiencyEntity();
        //总工单数
        int allNum=iGuideRepairOrderService.countStatisticsNum("",null,null,null,null);
        java.text.DecimalFormat weekDf=new java.text.DecimalFormat("##.##%");//传入格式模板
        int bj=iGuideRepairOrderService.countStatisticsNum("3",null,null,null,null);
        if(bj!=0)
        {
            //        好评率=评价为满意的导办工单数量/已办结状态工单数量
            String goodReputationEfficiency=weekDf.format((float)(iGuideRepairOrderService.countStatisticsNum(null,null,null,null,"1")
                    /bj));
            entity.setGoodReputationEfficiency(goodReputationEfficiency);
            //      解决率=已解决状态的导办工单数量/已办结状态工单数量
            String resolveEfficiency=weekDf.format((float)(iGuideRepairOrderService.countStatisticsNum("7",null,null,null,null)
                    /bj));
            entity.setResolveEfficiency(resolveEfficiency);
            if(allNum!=0)
            {
//              办结率=待评价+已办结状态的导办工单数量/总工单数量
                String workEfficiency=weekDf.format((float)((iGuideRepairOrderService.countStatisticsNum("4",null,null,null,null)
                        +bj)/allNum));
                entity.setWorkEfficiency(workEfficiency);
            }
        }
        int cs=iGuideRepairOrderService.countStatisticsNum(null,null,null,"2",null);
        if(cs!=0)
        {
            //        超时办结率=超时状态下的待评价+已办结状态的导办工单数量/超时状态的导办工单数量
            String timeoutEfficiency=weekDf.format((float)((iGuideRepairOrderService.countStatisticsNum("4",null,null,"2",null)
                    +iGuideRepairOrderService.countStatisticsNum("3",null,null,null,null))
                    /cs));
            entity.setTimeoutEfficiency(timeoutEfficiency);
        }
        if(allNum!=0)
        {
            //        回复率=最新进展里0条回复的导办工单数量/总工单数量
            //状态(1待分配  2 待办结 3 已办结 4 待评价 5 已取消 6未解决  7已解决  8 系统自动分配 9 回复   10转派    11手动分配)
            String reversionRate=weekDf.format((float)(iGuideEvolveService.countStatisticsNum("9",null)/allNum));
            entity.setReversionRate(reversionRate);
        }
        return ResultData.success(entity);
    }
}