wang-hao-jie
2022-03-17 6dfd2599d2e52507e018fd4c6b35d38873e48cfb
xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/controller/pc/StatisticController.java
@@ -1,8 +1,21 @@
package cn.exrick.xboot.your.controller.pc;
import cn.exrick.xboot.core.common.redis.RedisTemplateHelper;
import cn.exrick.xboot.core.common.utils.PageUtil;
import cn.exrick.xboot.core.common.utils.ResultUtil;
import cn.exrick.xboot.core.common.vo.PageVo;
import cn.exrick.xboot.core.common.vo.Result;
import cn.exrick.xboot.your.entity.*;
import cn.exrick.xboot.your.service.*;
import cn.exrick.xboot.your.util.HaiKangPost;
import cn.exrick.xboot.your.vo.AlarmVo;
import cn.exrick.xboot.your.vo.PreviewURLsVo;
import cn.exrick.xboot.your.vo.TalkURLsVo;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -25,6 +38,33 @@
    @Autowired
    private RedisTemplateHelper redisTemplateHelper;
    @Autowired
    private IOrderTaskService iOrderTaskService;
    @Autowired
    private IEventLogService iEventLogService;
    @Autowired
    private ICarService iCarService;
    @Autowired
    private HaiKangPost haiKangPost;
    @Autowired
    private IAreaService iAreaService;
    @Autowired
    private IAreaSectionService iAreaSectionService;
    @Autowired
    private IEquipmentService iEquipmentService;
    @Autowired
    private IAlarmService iAlarmService;
    @Autowired
    private ICustomerService iCustomerService;
    @RequestMapping(value = "/getIndex1", method = RequestMethod.GET)
    @ApiOperation(value = "获取首页数据")
    public Result<Object> getIndex1() {
@@ -33,6 +73,238 @@
        for (String str : scan) {
            map.put(str.substring(12),redisTemplateHelper.get(str));
        }
        QueryWrapper<Customer> wrapper = new QueryWrapper<>();
        wrapper.eq("kstatus",0);
        map.put("taKan",iCustomerService.count(wrapper));
        return new ResultUtil<Object>().setData(map);
    }
    @RequestMapping(value = "/getTaKanList", method = RequestMethod.GET)
    @ApiOperation(value = "获取踏勘商户列表")
    public Result<Object> getTaKanList() {
        QueryWrapper<Customer> wrapper = new QueryWrapper<>();
        wrapper.eq("kstatus",0);
        return new ResultUtil<Object>().setData(iCustomerService.list(wrapper));
    }
    @RequestMapping(value = "/getTodayTask", method = RequestMethod.GET)
    @ApiOperation(value = "获取今日配送任务")
    public Result<Object> getTodayTask(String sendTime) {
        //QueryWrapper<OrderTask> wrapper2 = new QueryWrapper<OrderTask>();
        String format = "";
        if(StrUtil.isNotEmpty(sendTime)){
            format = sendTime;
        }else{
            format = DateUtil.format(new Date(), "yyyy-MM-dd");
        }
        //wrapper2.eq("a.send_date",format);
        //wrapper2.orderByAsc("a.seq");
        List<OrderTask> list = iOrderTaskService.list3(format);
        return new ResultUtil<Object>().setData(list);
    }
    @RequestMapping(value = "/getEventLog", method = RequestMethod.GET)
    @ApiOperation(value = "获取事件日志")
    public Result<Object> getEventLog() {
        QueryWrapper<EventLog> wrapper2 = new QueryWrapper<EventLog>();
        PageVo page = new PageVo();
        page.setPageNumber(1);
        page.setPageSize(20);
        page.setOrder("desc");
        page.setSort("createTime");
        IPage<EventLog> data = iEventLogService.page(PageUtil.initMpPage(page),wrapper2);
        return new ResultUtil<Object>().setData(data.getRecords());
    }
    @RequestMapping(value = "/getCars", method = RequestMethod.GET)
    @ApiOperation(value = "获取车辆定位信息")
    public Result<Object> getCars() {
        List<Car> list = iCarService.list();
        List<String> list2 = new ArrayList<>();
        for(int i=0;i<list.size();i++){
            if(!StrUtil.isEmpty(list.get(i).getCode())){
                list2.add(list.get(i).getCode());
            }
        }
        String codes[] = new String[list2.size()];
        for(int i=0;i<list2.size();i++){
            codes[i] = list2.get(i);
        }
        String latestGps = haiKangPost.findLatestGps(codes);
        return new ResultUtil<Object>().setData(JSONUtil.parseObj(latestGps));
    }
    @RequestMapping(value = "/getAnalysis", method = RequestMethod.GET)
    @ApiOperation(value = "获取配送分析")
    public Result<Object> getAnalysis() {
        List<Area> list = iAreaService.list2();
        for(Area area:list){
            double sum = 0;
            int flag = 0;
            for(AreaSection areaSection: area.getChildren()){
                sum+=areaSection.getStability();
                flag++;
            }
            if(flag>0){
                double v = sum / flag;
                area.setVariance(trans2(v));
            }
        }
        return new ResultUtil<Object>().setData(list);
    }
    @RequestMapping(value = "/getAnalysisDetail", method = RequestMethod.GET)
    @ApiOperation(value = "获取配送分析详情")
    public Result<Object> getAnalysisDetail(String areaName,String selectName) {
        QueryWrapper<Area> wrapper = new QueryWrapper<Area>();
        wrapper.eq("name",areaName);
        Area one = iAreaService.getOne(wrapper);
        QueryWrapper<AreaSection> wrapper2 = new QueryWrapper<AreaSection>();
        wrapper2.eq("area_id",one.getId());
        wrapper2.eq("name",selectName);
        AreaSection one1 = iAreaSectionService.getOne(wrapper2);
        List<OrderTask> list = iOrderTaskService.groupByTime(one.getId(),one1.getId());
        List<String> list1 = new ArrayList<>();
        List<Integer> list2 = new ArrayList<>();
        List<Integer> list3 = new ArrayList<>();
        List<Integer> list4 = new ArrayList<>();
        for(OrderTask obj:list){
            list1.add(obj.getCustomerName());
            list2.add(Integer.valueOf(obj.getTime()/60000));
            list3.add(Integer.valueOf(obj.getNum()/60000));
            list4.add(Integer.valueOf(obj.getLevel()/60000));
        }
        Map<String,Object> map = new HashMap<>();
        map.put("name",list1);
        map.put("avg",list2);
        map.put("min",list3);
        map.put("max",list4);
        return new ResultUtil<Object>().setData(map);
    }
    @RequestMapping(value = "/getOrderStatus", method = RequestMethod.GET)
    @ApiOperation(value = "获取某辆车的配送情况")
    public Result<Object> getOrderStatus(String carNo) {
        QueryWrapper<Car> wrapper = new QueryWrapper<>();
        wrapper.eq("car_no",carNo);
        Car car = iCarService.getOne(wrapper);
        if(car==null){
           return ResultUtil.error("车辆不存在,请先添加车辆信息");
        }
        QueryWrapper<OrderTask> wrapper2 = new QueryWrapper<OrderTask>();
        String format = DateUtil.format(new Date(), "yyyy-MM-dd");
        wrapper2.eq("a.send_date",format);
        wrapper2.eq("a.car_id",car.getId());
        List<OrderTask> list = iOrderTaskService.list4(wrapper2);
        return new ResultUtil<Object>().setData(list);
    }
    @RequestMapping(value = "/getVideoByCarId", method = RequestMethod.GET)
    @ApiOperation(value = "获取视频信息 1:前置 4:车内")
    public Result<Object> getVideoByCarId(String carCode,int type) {
        QueryWrapper<Car> wrapper = new QueryWrapper<Car>();
        wrapper.eq("code",carCode);
        Car car = iCarService.getOne(wrapper);
        if(car==null){
            return ResultUtil.error("车辆编号错误");
        }
        QueryWrapper<Equipment> wrapper1 = new QueryWrapper<>();
        wrapper1.eq("car_id",car.getId());
        wrapper1.eq("type",type);
        Equipment one = iEquipmentService.getOne(wrapper1);
        if(one==null){
            return ResultUtil.error("设备未找到");
        }
        PreviewURLsVo previewURLsVo = new PreviewURLsVo();
      previewURLsVo.setCameraIndexCode(one.getCode());
        String s = haiKangPost.previewURLs(previewURLsVo);
        return new ResultUtil<Object>().setData(JSONUtil.parseObj(s));
    }
    @RequestMapping(value = "/getYuYinByCarId", method = RequestMethod.GET)
    @ApiOperation(value = "获取对讲信息")
    public Result<Object> getYuYinByCarId(String carCode,int type,int transmode) {
        QueryWrapper<Car> wrapper = new QueryWrapper<Car>();
        wrapper.eq("code",carCode);
        Car car = iCarService.getOne(wrapper);
        if(car==null){
            return ResultUtil.error("车辆编号错误");
        }
        QueryWrapper<Equipment> wrapper1 = new QueryWrapper<>();
        wrapper1.eq("car_id",car.getId());
        wrapper1.eq("type",type);
        Equipment one = iEquipmentService.getOne(wrapper1);
        if(one==null){
            return ResultUtil.error("设备未找到");
        }
        TalkURLsVo talkURLsVo =new TalkURLsVo();
        talkURLsVo.setCameraIndexCode(one.getCode());
        talkURLsVo.setTransmode(transmode);
        String s = haiKangPost.talkURLs(talkURLsVo);
        return new ResultUtil<Object>().setData(JSONUtil.parseObj(s));
    }
    @RequestMapping(value = "/getAlarmByCarId", method = RequestMethod.GET)
    @ApiOperation(value = "获取报警图片")
    public Result<Object> getAlarmByCarId(String alarmId) {
        QueryWrapper<Alarm> wrapper = new QueryWrapper<Alarm>();
        wrapper.eq("alarm_id",alarmId);
        Alarm alarm = iAlarmService.getOne(wrapper);
        if(alarm==null){
            return ResultUtil.error("报警id错误");
        }
        AlarmVo alarmVo = new AlarmVo();
        alarmVo.setAlarmId(alarm.getAlarmId());
        String[] s1 = alarm.getAlarmTime().split(" ");
        alarmVo.setAlarmTime(s1[0]+"T"+s1[1]+".000+08:00");
        String s = haiKangPost.findPicturesByAlarmId(alarmVo);
        return new ResultUtil<Object>().setData(JSONUtil.parseObj(s));
    }
    public double trans2(double v2){
        return (double) Math.round(v2 * 100) / 100;
    }
    @RequestMapping(value = "/getYiHuDuoZheng", method = RequestMethod.GET)
    @ApiOperation(value = "获取配送分析详情")
    public Result<Object> getYiHuDuoZheng() {
        List<Customer> list = iCustomerService.getYiHuDuoZheng();
        Map<String,Object> map = new HashMap<>();
        map.put("name","一户多证");
        List<Object> childrens = new ArrayList<>();
        for(Customer c:list){
            Map<String,Object> map2 = new HashMap<>();
            map2.put("name",c.getName());
            List<Object> names = new ArrayList<>();
            Map<String,Object> map3 = new HashMap<>();
            map3.put("name",c.getCode());
            names.add(map3);
            map2.put("children",names);
            childrens.add(map2);
        }
        map.put("children",childrens);
        return new ResultUtil<Object>().setData(map);
    }
}