package com.dsh.guns.modular.system.controller.general; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.course.feignClient.account.model.Company; import com.dsh.course.feignClient.activity.CompanyClient; import com.dsh.course.feignClient.activity.DriverActivityOnlineClient; import com.dsh.course.feignClient.activity.TUserClinet; import com.dsh.course.feignClient.activity.model.CompanyInfoRes; import com.dsh.course.feignClient.activity.model.QueryOnlineDriverReq; import com.dsh.course.feignClient.activity.model.SelectCountReq; import com.dsh.course.feignClient.driver.DriverClient; import com.dsh.course.feignClient.driver.model.DriverInfoRes; import com.dsh.course.feignClient.driver.model.DriverSelectCountReq; import com.dsh.course.feignClient.order.OrderLogisticsClient; import com.dsh.course.feignClient.order.OrderPrivateCarClient; import com.dsh.course.feignClient.order.model.*; import com.dsh.course.util.RedisUtil; import com.dsh.guns.config.UserExt; import com.dsh.guns.core.util.SinataUtil; import com.dsh.guns.core.util.ToolUtil; import com.dsh.guns.modular.system.model.*; import com.dsh.guns.modular.system.service.*; import com.dsh.guns.modular.system.util.DateUtil; import com.dsh.guns.modular.system.util.ResultUtil; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.*; /** * 首页统计 */ @Controller @RequestMapping("/home") public class HomeController { @Resource private TUserClinet userClinet; @Resource private DriverClient driverClient; // // @Autowired // private ITOrderTaxiService tOrderTaxiService; @Autowired private ITCarService tCarService; @Autowired private RedisUtil redisUtil; @Autowired private IUserService userService; @Resource private CompanyClient companyClient; @Autowired private ITCarBrandService carBrandService; @Autowired private ITCarModelService carModelService; private List companys = null; @Resource private OrderPrivateCarClient orderPrivateCarClient; @Resource private OrderLogisticsClient orderLogisticsClient; @Resource private DriverActivityOnlineClient driverOnlineService; @RequestMapping("/openNetCarInfo") public Object openNetCarInfo(Integer id, Model model){ model.addAttribute("id", id); model.addAttribute("language", UserExt.getLanguage()); return "/netCarInfo.html"; } @RequestMapping("/showDriverOnline") public String showDriverOnline(){ return "/driverOnline.html"; } @ResponseBody @PostMapping("/getSumData") public Object getSumData(Integer companyId, String addDate, String start, String end){ Integer id = 1; User user = userService.getById(id); if(companyId == null && user.getRoleType() != 1){ companyId = user.getObjectId(); } Map map = new HashMap<>(); Date date = new Date(); Calendar calendar1 = Calendar.getInstance(); Calendar calendar2 = Calendar.getInstance(); Calendar calendar3 = Calendar.getInstance(); Calendar calendar4 = Calendar.getInstance(); if(addDate == null){ calendar1.setTime(date); calendar2.setTime(date); }else{ calendar1.setTime(cn.hutool.core.date.DateUtil.parseDate(addDate)); calendar2.setTime(cn.hutool.core.date.DateUtil.parseDate(addDate)); } if(start == null || end == null){ calendar3.setTime(date); calendar4.setTime(date); }else{ calendar3.setTime(cn.hutool.core.date.DateUtil.parseDate(start)); calendar4.setTime(cn.hutool.core.date.DateUtil.parseDate(end)); } calendar1.set(Calendar.HOUR_OF_DAY, 00); calendar1.set(Calendar.MINUTE, 00); calendar1.set(Calendar.SECOND, 00); calendar2.set(Calendar.HOUR_OF_DAY, 23); calendar2.set(Calendar.MINUTE, 59); calendar2.set(Calendar.SECOND, 59); calendar3.set(Calendar.HOUR_OF_DAY, 00); calendar3.set(Calendar.MINUTE, 00); calendar3.set(Calendar.SECOND, 00); calendar4.set(Calendar.HOUR_OF_DAY, 23); calendar4.set(Calendar.MINUTE, 59); calendar4.set(Calendar.SECOND, 59); //【今日运行情况】 Today's operational situation. Map map1 = new HashMap<>(); QueryWrapper ne = new QueryWrapper().between("insertTime", calendar1.getTime(), calendar2.getTime()).ne("flag", 3); System.out.println(calendar1.getTime()); System.out.println(calendar2.getTime()); if(companyId != null){ ne.eq("companyId", companyId); } int i = userClinet.selectCount(new SelectCountReq(calendar1.getTime(), calendar2.getTime(),3,companyId)); map1.put("passengerInfo", i); //新增用户 Increase in/newly added users QueryWrapper ne1 = new QueryWrapper().ne("state", 1).eq("authState", 2).ne("flag", 3); if(companyId != null){ ne1.eq("companyId", companyId).or().eq("franchiseeId", companyId); } if(companyId==null){ companyId=-1; } List tDrivers = driverClient.selectList1(companyId); if(companyId==-1){ companyId=null; } String keys = ""; for(Driver driver : tDrivers){ keys += "DRIVER" + driver.getId() + ","; } int size = driverClient.queryOnlineDriverCount(new SelectCountReq(calendar1.getTime(), calendar2.getTime(),3,companyId)); map1.put("netcardriver", size); //在线司机 online driver QueryWrapper zcTodayTme = new QueryWrapper().between("travelTime", calendar1.getTime(), calendar2.getTime()); if(companyId != null){ zcTodayTme.eq("companyId", companyId); } int zcTodayNum = orderPrivateCarClient.selectCount(new OrderPrivateCarSelectCountReq(calendar1.getTime(), calendar2.getTime(),companyId,null)); map1.put("orderDetail1", zcTodayNum); //专车订单 special car order QueryWrapper tcxTodayTme = new QueryWrapper().between("travelTime", calendar1.getTime(), calendar2.getTime()); if(companyId != null){ tcxTodayTme.eq("companyId", companyId); } tcxTodayTme.eq("type",4); int tcxTodayNum = orderLogisticsClient.selectCount(new OrderLogisticsSelectCountReq(calendar1.getTime(), calendar2.getTime(),companyId,4,null)); map1.put("orderDetail4", tcxTodayNum); //同城物流订单 local-city express QueryWrapper kcxTodayTme = new QueryWrapper().between("travelTime", calendar1.getTime(), calendar2.getTime()); if(companyId != null){ kcxTodayTme.eq("companyId", companyId); } tcxTodayTme.eq("type",5); int kcxTodayNum = orderLogisticsClient.selectCount(new OrderLogisticsSelectCountReq(calendar1.getTime(), calendar2.getTime(),companyId,5,null)); map1.put("orderDetail5", kcxTodayNum); //跨城物流订单 cross-city express map.put("operationStatus", map1); //【全部运营总数据】Overall operational data map1 = new HashMap<>(); QueryWrapper flag1 = new QueryWrapper().ne("flag", 3); if(companyId != null){ flag1.eq("companyId", companyId); } int flag = userClinet.selectCount(new SelectCountReq(null,null,3,companyId)); map1.put("passengerInfoSum", flag); //总用户 total users QueryWrapper ne4 = new QueryWrapper().eq("authState", 2).ne("flag", 3); if(companyId != null){ ne4.eq("companyId", companyId).or().eq("franchiseeId", companyId); } int i2 = driverClient.selectCount(new DriverSelectCountReq(null,new Integer[]{2},3,companyId,null,null)); map1.put("netcarDriverSum", i2); //总司机 total drivers QueryWrapper state3 = new QueryWrapper().eq("state", 1); if(companyId != null){ state3.eq("companyId", companyId).or().eq("franchiseeId", companyId); } int state1 = tCarService.getBaseMapper().selectCount(state3); map1.put("netCarSum", state1); //总车辆 total cars if(companyId==null){ companyId=-1; } Map allOrderNum = orderLogisticsClient.getAllOrderNum(companyId); if(companyId==-1){ companyId=null; } if(ToolUtil.isNotEmpty(allOrderNum)) { map1.put("orderDetailSum", (Integer) allOrderNum.get("num")); //总订单 total orders }else { map1.put("orderDetailSum",0); //总订单total orders } if(companyId==null){ companyId=-1; } Double allIncomeMoney = companyClient.getAllIncomeMoney(companyId); if(companyId==-1){ companyId=null; } if(ToolUtil.isNotEmpty(allOrderNum)) { map1.put("paiceSum", (Double) allOrderNum.get("money")); //交易总金额 Total transaction amount }else { map1.put("paiceSum", 0); //交易总金额 Total transaction amount } if(ToolUtil.isNotEmpty(allOrderNum)) { map1.put("paySum", allIncomeMoney); //总收益 total Icome }else { map1.put("paySum", 0); //总收益 total Icome Total income } map.put("operationSum", map1); //【运营数据增长查询】 Operation data growth inquiry. map1 = new HashMap<>(); QueryWrapper ne2 = new QueryWrapper().between("insertTime", calendar3.getTime(), calendar4.getTime()).ne("flag", 3); if(companyId != null){ ne2.eq("companyId", companyId); } int i4 = userClinet.selectCount(new SelectCountReq(calendar3.getTime(), calendar4.getTime(),3,companyId)); map1.put("passengerInfoSum", i4); QueryWrapper ne3 = new QueryWrapper().between("insertTime", calendar3.getTime(), calendar4.getTime()).eq("authState", 2).ne("flag", 3); if(companyId != null){ ne3.eq("companyId", companyId).or().eq("franchiseeId", companyId); } int i5 = driverClient.selectCount(new DriverSelectCountReq(null,new Integer[]{2},3,companyId,calendar3.getTime(), calendar4.getTime())); map1.put("netcarDriverSum", i5); QueryWrapper zcTodayTmeByConditions = new QueryWrapper().between("travelTime", calendar3.getTime(), calendar4.getTime()); if(companyId != null){ zcTodayTmeByConditions.eq("companyId", companyId); } int zcTodayNum1 = orderPrivateCarClient.selectCount(new OrderPrivateCarSelectCountReq(calendar3.getTime(), calendar4.getTime(),companyId,null)); map1.put("orderDetail1", zcTodayNum1); //专车订单 special order QueryWrapper tcxTodayTmeByConditions = new QueryWrapper().between("travelTime", calendar3.getTime(), calendar4.getTime()); if(companyId != null){ tcxTodayTmeByConditions.eq("companyId", companyId); } tcxTodayTmeByConditions.eq("type",4); int tcxTodayNum1 = orderLogisticsClient.selectCount(new OrderLogisticsSelectCountReq(calendar3.getTime(), calendar4.getTime(),companyId,4,null)); map1.put("orderDetail4", tcxTodayNum1); //同城物流订单 local-city express QueryWrapper kcxTodayTmeByConditions = new QueryWrapper().between("travelTime", calendar3.getTime(), calendar4.getTime()); if(companyId != null) { kcxTodayTmeByConditions.eq("companyId", companyId); } String startTime = null; if (SinataUtil.isNotEmpty(start)){ startTime = DateUtil.format(cn.hutool.core.date.DateUtil.parseDate(start), "yyyy-MM-dd"); } String endTime = null; if (SinataUtil.isNotEmpty(end)){ endTime = DateUtil.format(cn.hutool.core.date.DateUtil.parseDate(end), "yyyy-MM-dd"); } Double allTradeMoneyByTime = orderLogisticsClient.getAllTradeMoney(new GetAllTradeMoneyReq(companyId, startTime, endTime)); Double allIncomeMoneyByTime = companyClient.getAllIncomeMoney1(new GetAllTradeMoneyReq(companyId, startTime, endTime)); map1.put("paiceSum", allTradeMoneyByTime); //交易总金额 Total transaction amount map1.put("paySum", allIncomeMoneyByTime); //总收益 total Icome map.put("operationGrow", map1); //【运营总趋势】 Integer[] states = new Integer[]{8, 9}; map1 = new HashMap<>(); List m1 = new ArrayList<>(); List m2 = new ArrayList<>(); List m3 = new ArrayList<>(); List m4 = new ArrayList<>(); List m5 = new ArrayList<>(); List m6 = new ArrayList<>(); List m7 = new ArrayList<>(); for(int j = 30; j > 0; j--){ Calendar s1 = Calendar.getInstance(); s1.setTime(date); s1.set(s1.get(Calendar.YEAR), s1.get(Calendar.MONTH), s1.get(Calendar.DAY_OF_MONTH) - j, 0, 0, 1); Calendar e1 = Calendar.getInstance(); e1.setTime(date); e1.set(e1.get(Calendar.YEAR), e1.get(Calendar.MONTH), e1.get(Calendar.DAY_OF_MONTH) - j, 23, 59, 59); //用户注册趋势图 QueryWrapper ne5 = new QueryWrapper().between("insertTime", s1.getTime(), e1.getTime()).ne("flag", 3); if(companyId != null){ ne5.eq("companyId", companyId); } int i7 = userClinet.selectCount(new SelectCountReq(s1.getTime(), e1.getTime(),3,companyId)); m2.add(i7); //专车订单趋势图 QueryWrapper inZC = new QueryWrapper().between("travelTime", s1.getTime(), e1.getTime()).in("state", states); if(companyId != null){ inZC.eq("companyId", companyId); } int zc = orderPrivateCarClient.selectCount(new OrderPrivateCarSelectCountReq( s1.getTime(), e1.getTime(),companyId,states)); m4.add(zc); //同城物流订单趋势图 QueryWrapper inTCX = new QueryWrapper().between("travelTime", s1.getTime(), e1.getTime()).in("state", states); if(companyId != null){ inTCX.eq("companyId", companyId); } inTCX.eq("type",4); int tcx = orderLogisticsClient.selectCount(new OrderLogisticsSelectCountReq(s1.getTime(), e1.getTime(),companyId,4,states)); m6.add(tcx); } map1.put("orderDetail5", m7); //跨城物流订单数趋势图 Number of cross-city logistics orders chart map1.put("orderDetail4", m6); //同城物流订单数趋势图 Number of local-city logistics orders chart map1.put("orderDetail3", m5); //跨城订单数趋势图 Number of cross-city logistics orders chart map1.put("orderDetail1", m4); //专车订单数趋势图 Number of special orders chart map1.put("orderDetailSum", m3); //全部订单数趋势图 Number of all orders chart map1.put("passengerInfoSum", m2); //用户注册趋势图 Number of user register orders chart map1.put("orderDetail2", m1); // map.put("operationTrend", map1); return map; } @ResponseBody @PostMapping("/getDriverPosition") public Object getDriverPosition(Integer companyId){ Integer id = UserExt.getUser().getId(); User user = userService.getById(id); if(companyId == null && user.getRoleType() != 1){ companyId = user.getObjectId(); } QueryWrapper ne = new QueryWrapper().eq("authState", 2).ne("state", 1).ne("flag", 3); if(companyId != null){ ne.eq("companyId", companyId).or().eq("franchiseeId", companyId); }else { companyId=-1; } List tDrivers = driverClient.selectList1(companyId); Map map = new HashMap<>(); List list1 = new ArrayList<>(); List list2 = new ArrayList<>(); for(Driver tDriver : tDrivers){ Map d = new HashMap<>(); String value = redisUtil.getValue("DRIVER" + tDriver.getId()); if(ToolUtil.isEmpty(value)){ continue; } d.put("driver", tDriver); d.put("lon", value.split(",")[0]); d.put("lat", value.split(",")[1]); if(tDriver.getState() == 2){ list1.add(d); }else{ list2.add(d); } } map.put("driver1", list1); map.put("driver2", list2); QueryPrivateCarOrderReq queryPrivateCarOrderReq = new QueryPrivateCarOrderReq(); queryPrivateCarOrderReq.setState(1); List> privateCarOrderList = orderPrivateCarClient.getPrivateCarOrderList1(companyId); QueryLoginsicsListReq queryLoginsicsListReq = new QueryLoginsicsListReq(); queryLoginsicsListReq.setState(1); List> logisticsOrderList = orderLogisticsClient.getLogisticsOrderList1(companyId); Map map1 = new HashMap<>(); map1.put("zhuanche", privateCarOrderList); map1.put("kuacheng", logisticsOrderList); map.put("order", map1); return map; } @ResponseBody @PostMapping("/getAllOrder") public Object getAllOrder(Integer type){ User user = UserExt.getUser(); List list = new ArrayList<>(); List> logisticsOrderList1 = orderLogisticsClient.getLogisticsOrderList1(user.getObjectId()); List> privateCarOrderList1 = orderPrivateCarClient.getPrivateCarOrderList1(user.getObjectId()); if(type==null || "".equals(type)){ for(Map t : logisticsOrderList1){ Map map = new HashMap<>(); map.put("lon", Double.valueOf(t.get("startLon").toString())); map.put("lat", Double.valueOf(t.get("startLat").toString())); list.add(map); } for(Map t : privateCarOrderList1){ Map map = new HashMap<>(); map.put("lon", Double.valueOf(t.get("startLon").toString())); map.put("lat", Double.valueOf(t.get("startLat").toString())); list.add(map); } }else if(type==1){ for(Map t : privateCarOrderList1){ Map map = new HashMap<>(); map.put("lon", Double.valueOf(t.get("startLon").toString())); map.put("lat", Double.valueOf(t.get("startLat").toString())); list.add(map); } }else { for(Map t : logisticsOrderList1){ Map map = new HashMap<>(); map.put("lon", Double.valueOf(t.get("startLon").toString())); map.put("lat", Double.valueOf(t.get("startLat").toString())); list.add(map); } } return list; } @ResponseBody @PostMapping("/getCompanyInfoByUserId") public Object getCompanyInfoByUserId(){ Integer id = 1; User user = userService.getById(id); companys = new ArrayList<>(); List ids = new ArrayList<>(); CompanyInfoRes tCompany = null; if(user.getRoleType() == 1 && user.getObjectId() == null){ tCompany = companyClient.queryById(1); }else{ tCompany = companyClient.queryById(user.getObjectId()); } TCompany tCompany1 = new TCompany(); BeanUtils.copyProperties(tCompany,tCompany1); ids.add(tCompany1); companys.addAll(ids); this.getCompanyIds(ids); return companys; } @ResponseBody @RequestMapping(value = "/getDriverInfo", method = RequestMethod.POST) public Object getDriverInfo(Integer driverId){ Map map = new HashMap<>(); DriverInfoRes tDriver = driverClient.getDriver(driverId); TCar tCar = tCarService.getById(tDriver.getCarId()); TCarBrand tCarBrand = null; TCarModel tCarModel = null; if(null != tCar){ tCarBrand = carBrandService.getById(tCar.getCarBrandId()); tCarModel = carModelService.getById(tCar.getCarModelId()); } Integer[] states = new Integer[]{2, 3, 4, 5, 6, 11}; // Wrapper state4 = new EntityWrapper().in("state", states).eq("driverId", driverId).eq("isDelete", 1); // List tOrderTaxis = tOrderTaxiService.selectList(state4); map.put("netcarDriver", tDriver); map.put("netcar", tCar); map.put("carBrand", null != tCarBrand ? tCarBrand.getName() : ""); map.put("carModel", null != tCarModel ? tCarModel.getName() : ""); // map.put("order", tOrderTaxis); return map; } public void getCompanyIds(List ids){ List ids_ = new ArrayList<>(); for(TCompany id : ids){ if(id.getId() == 1){ // List tCompanies = companyClient.selectList1(new QueryWrapper().eq("superiorId", id.getId()).or().isNull("superiorId").eq("state", 0).ne("flag", 3).ne("type", 1)); List tCompanies = companyClient.selectList2(id.getId()); ArrayList tCompanies1 = new ArrayList<>(); for (Company tCompany : tCompanies) { TCompany tCompany1 = new TCompany(); BeanUtils.copyProperties(tCompany,tCompany1); tCompanies1.add(tCompany1); } ids_.addAll(tCompanies1); companys.addAll(tCompanies1); }else{ // List tCompanies = companyClient.selectList3(new QueryWrapper().eq("superiorId", id.getId()).eq("state", 0).ne("flag", 3)); List tCompanies = companyClient.selectList3(id.getId()); ArrayList tCompanies1 = new ArrayList<>(); for (Company tCompany : tCompanies) { TCompany tCompany1 = new TCompany(); BeanUtils.copyProperties(tCompany,tCompany1); tCompanies1.add(tCompany1); } ids_.addAll(tCompanies1); companys.addAll(tCompanies1); } } if(ids_.size() == 0){ return; } this.getCompanyIds(ids_); } @ResponseBody @RequestMapping(value = "/queryOnlineDriver", method = RequestMethod.POST) public Object queryOnlineDriver(String name, String phone, Integer offset, Integer limit){ try { return driverClient.queryOnlineDriver(new QueryOnlineDriverReq(name, phone, offset, limit)); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } }