From 1b6c4cd60f3882c400d30af367bd4c5960fbd4a1 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期一, 10 四月 2023 15:02:24 +0800 Subject: [PATCH] 优化管理 --- management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TComplaintMapper.xml | 2 management/guns-admin/src/main/webapp/WEB-INF/view/blackboardBlank.html | 958 +++++++++++++++++++++++++++++++++++++++++++-- management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TEditionController.java | 1 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAppUserController.java | 2 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml | 2 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java | 3 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TYouTuiController.java | 1 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/BlackboardController.java | 201 +++++++++ management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java | 60 ++ management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java | 3 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TRevenueMapper.xml | 1 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBranchOfficeServiceImpl.java | 1 management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tAppUser.html | 2 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java | 1 14 files changed, 1,173 insertions(+), 65 deletions(-) diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAppUserController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAppUserController.java index f23ebd0..7b9c86e 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAppUserController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAppUserController.java @@ -175,6 +175,7 @@ EntityWrapper<TAppUser> wrapper = tAppUserService.getUserListWrapper(createTime,nickname,phone,id,status); // 是否异常 wrapper.eq("is_exception",2); + wrapper.orderBy("createTime",false); List<TAppUser> tAppUsers = tAppUserService.selectList(wrapper); return tAppUserService.getTAppUserResp(tAppUsers); @@ -194,6 +195,7 @@ Integer status) { EntityWrapper<TAppUser> wrapper = tAppUserService.getUserListWrapper(createTime,nickname,phone,id,status); wrapper.ne("is_exception",2); + wrapper.orderBy("createTime",false); return tAppUserService.selectList(wrapper); } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java index c1adc1a..f139140 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java @@ -297,6 +297,7 @@ public Object list(String createTime,String phone,Integer status) { EntityWrapper<TDriver> wrapper = tDriverService.getPageList(createTime,phone,status); wrapper.ne("isException",2); + wrapper.orderBy("createTime",false); List<TDriver> tDrivers = tDriverService.selectList(wrapper); return tDriverService.getTDriverResp(tDrivers); } @@ -318,6 +319,7 @@ public Object exceptionList(String createTime,String phone,Integer status) { EntityWrapper<TDriver> wrapper = tDriverService.getPageList(createTime,phone,status); wrapper.eq("isException",2); + wrapper.orderBy("createTime",false); List<TDriver> tDrivers = tDriverService.selectList(wrapper); return tDriverService.getTDriverResp(tDrivers); } @@ -336,6 +338,7 @@ if(StringUtils.hasLength(driverId)){ wrapper.eq("inviterId",driverId); } + wrapper.orderBy("createTime",false); List<TDriver> list = tDriverService.selectList(wrapper); List<TDriverCommissionResp> commissionResp = tDriverService.getTDriverCommissionResp(list); for (TDriverCommissionResp tDriverCommissionResp : commissionResp) { diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TEditionController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TEditionController.java index 425112f..e14e2ac 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TEditionController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TEditionController.java @@ -77,6 +77,7 @@ wrapper.like("editionNo",editionNo); } wrapper.ne("status", StatusEnum.DELETE.getCode()); + wrapper.orderBy("createTime",false); return tEditionService.selectList(wrapper); } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java index 99cbd75..0033e18 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java @@ -59,6 +59,13 @@ */ @RequestMapping("/map") public String map(Integer agentId,Integer type,Model model) { + + Integer objectId = ShiroKit.getUser().getObjectId(); + Integer roleType = ShiroKit.getUser().getRoleType(); + if(roleType == 3 && Objects.nonNull(objectId)){ + agentId = objectId; + } + // 查询所有代理商 List<TAgent> agentList = tAgentService.selectList(new EntityWrapper<TAgent>() .ne("status", StatusEnum.DELETE.getCode()) @@ -115,6 +122,11 @@ @RequestMapping("/getMap") @ResponseBody public Object getMap(Integer agentId,Integer type,Model model) { + Integer objectId = ShiroKit.getUser().getObjectId(); + Integer roleType = ShiroKit.getUser().getRoleType(); + if(roleType == 3 && Objects.nonNull(objectId)){ + agentId = objectId; + } HashMap<String, Object> map = new HashMap<>(); // 查询所有代理商 List<TAgent> agentList = tAgentService.selectList(new EntityWrapper<TAgent>() @@ -173,9 +185,13 @@ .eq("serverStatus", 2)); map.put("onLineDriverCount",onLineDriver.size()); - tOrderService.getDataStatisticsCountByIdsGetMap(ids,map); + + List<TAgent> tAgentAllList = tAgentService.selectList(new EntityWrapper<TAgent>()); + List<Integer> allIds = tAgentAllList.stream().map(TAgent::getId).collect(Collectors.toList()); + tOrderService.getDataStatisticsCountByIdsGetMap(allIds,map); + // 查询服务中的订单列表 - List<TOrderServerResp> orderServerRespList = tOrderService.getDataStatisticsServerListByIds(ids); + List<TOrderServerResp> orderServerRespList = tOrderService.getDataStatisticsServerListByIds(allIds); // 查询司机 for (TOrderServerResp tOrderServerResp : orderServerRespList) { TDriver tDriver = tDriverService.selectById(tOrderServerResp.getDriverId()); @@ -184,7 +200,7 @@ } map.put("serverList",orderServerRespList); // 查询今天所有订单 - List<TOrder> allList = tOrderService.getDataStatisticsAllListByIds(ids,type); + List<TOrder> allList = tOrderService.getDataStatisticsAllListByIds(allIds,type); List<List<String>> list = new ArrayList<>(allList.size()); for (TOrder tOrder : allList) { List<String> obj = new ArrayList<>(3); @@ -215,6 +231,11 @@ @RequestMapping("/getServerOrder") @ResponseBody public Object getServerOrder(Integer agentId,Model model) { + Integer objectId = ShiroKit.getUser().getObjectId(); + Integer roleType = ShiroKit.getUser().getRoleType(); + if(roleType == 3 && Objects.nonNull(objectId)){ + agentId = objectId; + } HashMap<String, Object> map = new HashMap<>(); if(Objects.nonNull(agentId)){ // 查询服务中的订单列表 @@ -227,8 +248,7 @@ } map.put("serverList",orderServerRespList); }else { - List<TAgent> tAgentList = tAgentService.selectList(new EntityWrapper<TAgent>() - .eq("provinceCode", "440000")); + List<TAgent> tAgentList = tAgentService.selectList(new EntityWrapper<TAgent>()); List<Integer> ids = tAgentList.stream().map(TAgent::getId).collect(Collectors.toList()); // 查询服务中的订单列表 List<TOrderServerResp> orderServerRespList = tOrderService.getDataStatisticsServerListByIds(ids); @@ -248,6 +268,11 @@ */ @RequestMapping("/statistics") public String statistics(Integer agentId,String dayDate,String yearDate,String monthDate,Integer type,Model model) { + Integer objectId = ShiroKit.getUser().getObjectId(); + Integer roleType = ShiroKit.getUser().getRoleType(); + if(roleType == 3 && Objects.nonNull(objectId)){ + agentId = objectId; + } if(Objects.isNull(type)){ type = 1; } @@ -317,6 +342,11 @@ @RequestMapping("/statisticsByAgentId") @ResponseBody public Map<String, Object> statisticsByAgentId(Integer agentId, String dayDate, String yearDate, String monthDate, Integer type, Model model) { + Integer objectId = ShiroKit.getUser().getObjectId(); + Integer roleType = ShiroKit.getUser().getRoleType(); + if(roleType == 3 && Objects.nonNull(objectId)){ + agentId = objectId; + } Map<String, Object> map = new HashMap<>(); if(Objects.nonNull(agentId)){ // 统计代理商 @@ -350,6 +380,11 @@ @RequestMapping("/statisticsMonthByAgentId") @ResponseBody public Map<String, Object> statisticsMonthByAgentId(Integer agentId, String dayDate,Model model) { + Integer objectId = ShiroKit.getUser().getObjectId(); + Integer roleType = ShiroKit.getUser().getRoleType(); + if(roleType == 3 && Objects.nonNull(objectId)){ + agentId = objectId; + } dayDate = new SimpleDateFormat("yyyy-MM").format(new Date()); Map<String, Object> map = new HashMap<>(); if(Objects.nonNull(agentId)){ @@ -372,6 +407,11 @@ @RequestMapping("/statisticsYearByAgentId") @ResponseBody public Map<String, Object> statisticsYearByAgentId(Integer agentId, String yearDate,Model model) { + Integer objectId = ShiroKit.getUser().getObjectId(); + Integer roleType = ShiroKit.getUser().getRoleType(); + if(roleType == 3 && Objects.nonNull(objectId)){ + agentId = objectId; + } if(!StringUtils.hasLength(yearDate)){ yearDate = new SimpleDateFormat("yyyy").format(new Date()); } @@ -395,6 +435,11 @@ @RequestMapping("/statisticsOrderByAgentId") @ResponseBody public Map<String, Object> statisticsOrderByAgentId(Integer agentId, String monthDate,Integer type,Model model) { + Integer objectId = ShiroKit.getUser().getObjectId(); + Integer roleType = ShiroKit.getUser().getRoleType(); + if(roleType == 3 && Objects.nonNull(objectId)){ + agentId = objectId; + } if(Objects.isNull(type)){ type = 1; } @@ -434,6 +479,11 @@ @RequestMapping("/statisticsDriverByAgentId") @ResponseBody public Map<String, Object> statisticsDriverByAgentId(Integer agentId,Model model) { + Integer objectId = ShiroKit.getUser().getObjectId(); + Integer roleType = ShiroKit.getUser().getRoleType(); + if(roleType == 3 && Objects.nonNull(objectId)){ + agentId = objectId; + } Map<String, Object> map = new HashMap<>(); if(Objects.nonNull(agentId)){ // 统计司机数 diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java index 31bf8a2..dd26dcb 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java @@ -150,6 +150,7 @@ if(Objects.nonNull(userId)){ wrapper.eq("user_id",userId); } + wrapper.orderBy("createTime",false); return tOrderService.selectList(wrapper); } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TYouTuiController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TYouTuiController.java index de7f098..37d17bb 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TYouTuiController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TYouTuiController.java @@ -83,6 +83,7 @@ wrapper.between("createTime",startTime,endTime); } wrapper.ne("status", StatusEnum.DELETE.getCode()); + wrapper.orderBy("createTime",false); return tYouTuiService.selectList(wrapper); } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/BlackboardController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/BlackboardController.java index 4e8a24a..6b07807 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/BlackboardController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/BlackboardController.java @@ -3,10 +3,14 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.stylefeng.guns.core.base.controller.BaseController; import com.stylefeng.guns.core.shiro.ShiroKit; -import com.stylefeng.guns.core.util.DateUtil; import com.stylefeng.guns.core.util.SinataUtil; +import com.stylefeng.guns.core.util.ToolUtil; +import com.stylefeng.guns.modular.system.controller.resp.TOrderServerResp; +import com.stylefeng.guns.modular.system.enums.StatusEnum; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; +import com.stylefeng.guns.modular.system.util.DateUtil; +import com.stylefeng.guns.modular.system.util.RedisUtil; import com.stylefeng.guns.modular.system.util.ResultUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -17,7 +21,9 @@ import org.springframework.web.bind.annotation.ResponseBody; import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.*; +import java.util.stream.Collectors; /** * 总览信息 @@ -43,6 +49,18 @@ @Autowired private ITCompanyService companyService; + @Autowired + private ITAgentService tAgentService; + @Autowired + private ITDriverService tDriverService; + @Autowired + private ITOrderService tOrderService; + @Autowired + private ITRevenueService tRevenueService; + @Autowired + private ITDriverWorkService tDriverWorkService; + @Autowired + private RedisUtil redisUtil; private ResultUtil resultUtil; @@ -50,7 +68,7 @@ * 跳转到黑板 */ @RequestMapping("") - public String blackboard(Model model,Integer type) { + public String blackboard(Model model,Integer type,Integer agentId,String dayDate,String yearDate,String monthDate) { //查询当前用户是否有"首页"菜单的权限 Integer id = ShiroKit.getUser().getId(); User user = userService.selectById(id); @@ -59,17 +77,178 @@ return "/home.html"; } else { //查询登录次数 - int count = loginLogService.selectCount(new EntityWrapper<LoginLog>().eq("userid", ShiroKit.getUser().getId())); - model.addAttribute("loginNum", count); +// int count = loginLogService.selectCount(new EntityWrapper<LoginLog>().eq("userid", ShiroKit.getUser().getId())); +// model.addAttribute("loginNum", count); +// +// Role role = roleService.selectById(user.getRoleid()); +// Dept dept = deptService.selectById(user.getDeptid()); +// +// model.addAttribute("deptName",dept==null?"顶级":dept.getFullname()); +// model.addAttribute("roleName", role.getName()); +// model.addAttribute("userName", user.getName()); +// model.addAttribute("date", DateUtil.getTime(new Date())); +// model.addAttribute("user", user); + if(Objects.isNull(type)){ + type = 1; + } + Integer objectId = ShiroKit.getUser().getObjectId(); + Integer roleType = ShiroKit.getUser().getRoleType(); + if(roleType != 1){ + if(roleType == 3 && Objects.nonNull(objectId)){ + // 查询所有代理商 + List<TAgent> agentList = tAgentService.selectList(new EntityWrapper<TAgent>() + .ne("status", StatusEnum.DELETE.getCode()) + .ne("principal","") + .eq("id",objectId)); + model.addAttribute("agentList",agentList); + agentId = objectId; + } + }else { + // 查询所有代理商 + List<TAgent> agentList = tAgentService.selectList(new EntityWrapper<TAgent>() + .ne("status", StatusEnum.DELETE.getCode()) + .ne("principal","")); + model.addAttribute("agentList",agentList); + } + model.addAttribute("txt",new SimpleDateFormat("yyyy年MM月dd日").format(new Date()) + DateUtil.getWeekDay(new Date()) + ",欢迎" + + Objects.requireNonNull(ShiroKit.getUser()).getName() + "登录"); + Map<String, Object> map = new HashMap<>(); + if(Objects.nonNull(agentId)){ + // 统计代理商 + tAgentService.getDataStatistics(agentId,model,map); - Role role = roleService.selectById(user.getRoleid()); - Dept dept = deptService.selectById(user.getDeptid()); + // 统计司机数 + tDriverService.getDataStatistics(agentId,model,map); - model.addAttribute("deptName",dept==null?"顶级":dept.getFullname()); - model.addAttribute("roleName", role.getName()); - model.addAttribute("userName", user.getName()); - model.addAttribute("date", DateUtil.getTime(new Date())); - model.addAttribute("user", user); + // 订单统计本月 + tOrderService.getStatisticsOrderByMonth(agentId,dayDate,model,map); + + // 订单统计,每年按月份 + tOrderService.getDataStatisticsByYear(agentId,yearDate,model,map); + + // 业绩排名 performanceTable + if (1 == type){ + // 单量 + tOrderService.getDataStatisticsOrderCount(agentId,monthDate,model,map); + }else { + // 收入、佣金 + tRevenueService.getDataStatisticsIncomeOrCommission(agentId,monthDate,type,model,map); + } + + // 查询统计在线司机,待接单,服务中,已完成,已取消 + List<TDriver> onLineDriver = tDriverService.selectList(new EntityWrapper<TDriver>() + .eq("agentId", agentId) + .eq("serverStatus", 2)); + model.addAttribute("onLineDriverCount",onLineDriver.size()); + tOrderService.getDataStatisticsCount(agentId,model); + // 查询服务中的订单列表 + List<TOrderServerResp> orderServerRespList = tOrderService.getDataStatisticsServerList(agentId); + // 查询司机 + for (TOrderServerResp tOrderServerResp : orderServerRespList) { + TDriver tDriver = tDriverService.selectById(tOrderServerResp.getDriverId()); + tOrderServerResp.setAvatar(tDriver.getAvatar()); + tOrderServerResp.setDriverName(tDriver.getName()); + } + model.addAttribute("serverList",orderServerRespList); + // 查询今天所有订单 + List<TOrder> allList = tOrderService.getDataStatisticsAllList(agentId,type); + List<List<String>> list = new ArrayList<>(allList.size()); + for (TOrder tOrder : allList) { + List<String> obj = new ArrayList<>(3); + obj.add(tOrder.getStartLng()); + obj.add(tOrder.getStartLat()); + obj.add(String.valueOf(tOrder.getState())); + list.add(obj); + } + model.addAttribute("allList",list); + List<List<String>> list1 = new ArrayList<>(allList.size()); + for (TDriver tDriver : onLineDriver) { + List<String> obj = new ArrayList<>(3); + String value = redisUtil.getValue("DRIVER" + tDriver.getId()); + if(ToolUtil.isEmpty(value)){ + continue; + } + obj.add(value.split(",")[0]);// 经度 + obj.add(value.split(",")[1]);// 纬度 + obj.add(String.valueOf(tDriver.getServerStatus()));// 服务状态 + list1.add(obj); + } + // 拿到所有在线司机地址 + model.addAttribute("onLineDriver",list1); + + }else { + // 查询广东全区域数据 查询广东所有的代理商 + List<TAgent> tAgentList = tAgentService.selectList(new EntityWrapper<TAgent>() + .eq("provinceCode", "440000")); + List<Integer> ids = tAgentList.stream().map(TAgent::getId).collect(Collectors.toList()); + // 统计代理商 + tAgentService.getDataStatisticsByIds(ids,model,map); + + // 统计司机数 + tDriverService.getDataStatisticsByIds(ids,model,map); + + // 订单统计本月 + tOrderService.getStatisticsOrderByMonthIds(ids,dayDate,model,map); + + // 订单统计,每年按月份 + tOrderService.getDataStatisticsByYearByIds(ids,yearDate,model,map); + + // 业绩排名 performanceTable + if (1 == type){ + // 单量 + tOrderService.getDataStatisticsOrderCountByIds(ids,monthDate,model,map); + }else { + // 收入、佣金 + tRevenueService.getDataStatisticsIncomeOrCommissionByIds(ids,monthDate,type,model,map); + } + + // 查询统计在线司机,待接单,服务中,已完成,已取消 + List<TDriver> onLineDriver = tDriverService.selectList(new EntityWrapper<TDriver>() + .in("agentId", ids) + .eq("serverStatus", 2)); + + model.addAttribute("onLineDriverCount",onLineDriver.size()); + + List<TAgent> tAgentAllList = tAgentService.selectList(new EntityWrapper<TAgent>()); + List<Integer> allIds = tAgentAllList.stream().map(TAgent::getId).collect(Collectors.toList()); + + tOrderService.getDataStatisticsCountByIds(allIds,model); + // 查询服务中的订单列表 所有 + List<TOrderServerResp> orderServerRespList = tOrderService.getDataStatisticsServerListByIds(allIds); + // 查询司机 + for (TOrderServerResp tOrderServerResp : orderServerRespList) { + TDriver tDriver = tDriverService.selectById(tOrderServerResp.getDriverId()); + tOrderServerResp.setAvatar(tDriver.getAvatar()); + tOrderServerResp.setDriverName(tDriver.getName()); + } + model.addAttribute("serverList",orderServerRespList); + // 查询今天所有订单 所有 + List<TOrder> allList = tOrderService.getDataStatisticsAllListByIds(allIds,type); + List<List<String>> list = new ArrayList<>(allList.size()); + for (TOrder tOrder : allList) { + List<String> obj = new ArrayList<>(3); + obj.add(tOrder.getStartLng()); + obj.add(tOrder.getStartLat()); + obj.add(String.valueOf(tOrder.getState())); + list.add(obj); + } + model.addAttribute("allList",list); + List<List<String>> list1 = new ArrayList<>(allList.size()); + for (TDriver tDriver : onLineDriver) { + List<String> obj = new ArrayList<>(3); + String value = redisUtil.getValue("DRIVER" + tDriver.getId()); + if(ToolUtil.isEmpty(value)){ + continue; + } + obj.add(value.split(",")[0]);// 经度 + obj.add(value.split(",")[1]);// 纬度 + obj.add(String.valueOf(tDriver.getServerStatus()));// 服务状态 + list1.add(obj); + } + // 拿到所有在线司机地址 + model.addAttribute("onLineDriver",list1); + + } return "/blackboardBlank.html"; } } diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TComplaintMapper.xml b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TComplaintMapper.xml index d31d259..a53f68d 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TComplaintMapper.xml +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TComplaintMapper.xml @@ -50,7 +50,7 @@ AND d.agentId = #{objectId} </if> </where> - ORDER BY c.state + ORDER BY c.state,c.createTime DESC </select> </mapper> diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml index 1790a30..b610408 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderMapper.xml @@ -109,7 +109,7 @@ AND o.agentId = #{objectId} </if> </where> - ORDER BY o.createTime + ORDER BY o.createTime DESC </select> <select id="getDataStatisticsByYear" resultType="com.stylefeng.guns.modular.system.controller.resp.DataStatisticsOrderYearResp"> SELECT date_format(createTime, '%m') AS `month`,COUNT(id) AS orderCount diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TRevenueMapper.xml b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TRevenueMapper.xml index 4d42051..d5a5bd9 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TRevenueMapper.xml +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TRevenueMapper.xml @@ -101,6 +101,7 @@ AND t.agentId = #{objectId} </if> </where> + ORDER BY t.businessTime DESC </select> <select id="commissionOrBalanceDetail" resultType="com.stylefeng.guns.modular.system.controller.resp.RevenueExpenditureResp"> SELECT diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java index 3ba17f6..3a4712f 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAgentServiceImpl.java @@ -77,6 +77,7 @@ wrapper.eq("id",ShiroKit.getUser().getObjectId()); } wrapper.ne("status", StatusEnum.DELETE.getCode()); + wrapper.orderBy("createTime",false); return wrapper; } @@ -107,7 +108,7 @@ && Objects.nonNull(order.getCouponId()) && order.getAgentId().equals(tAgent.getId())).collect(Collectors.toList()); model.addAttribute("usedCoupon",usedCoupon.size()); // 已使用优惠券金额求和,已使用优惠券id - List<Integer> usedCouponId = usedCoupon.stream().map(TOrder::getCouponId).collect(Collectors.toList()); +// List<Integer> usedCouponId = usedCoupon.stream().map(TOrder::getCouponId).collect(Collectors.toList()); // if(CollectionUtils.isEmpty(usedCouponId)){ // // 如果优惠券为空 // model.addAttribute("couponPriceSum", BigDecimal.ZERO); diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBranchOfficeServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBranchOfficeServiceImpl.java index d5bb0f3..a82dbcc 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBranchOfficeServiceImpl.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TBranchOfficeServiceImpl.java @@ -128,6 +128,7 @@ wrapper.eq("status",status); } wrapper.ne("status", StatusEnum.DELETE.getCode()); + wrapper.orderBy("createTime",false); // 判断代理商 分公司 Integer roleType = Objects.requireNonNull(ShiroKit.getUser()).getRoleType(); Integer objectId = Objects.requireNonNull(ShiroKit.getUser()).getObjectId(); diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/blackboardBlank.html b/management/guns-admin/src/main/webapp/WEB-INF/view/blackboardBlank.html index 816af83..f79cdf6 100644 --- a/management/guns-admin/src/main/webapp/WEB-INF/view/blackboardBlank.html +++ b/management/guns-admin/src/main/webapp/WEB-INF/view/blackboardBlank.html @@ -1,59 +1,927 @@ @layout("/common/_container.html"){ -<style> - .contact-box { - background: unset; - border: unset; - } - strong{ - line-height: 23px; - } -</style> - -<div class="wrapper wrapper-content animated fadeInRight"> +<div class="container-fluid" style="padding: 0 !important;"> <div class="row"> - <div class="col-sm-6"> - <div class="contact-box"> - <div class="col-sm-4"> - <div class="text-center"> - @if(user.avatar!=null){ - <img alt="image" class="img-circle " src="${user.avatar}" style="width: 120px;height: 120px " > - @} - @if(user.avatar==null){ - <img alt="image" class="img-circle " src="${ctxPath}/static/img/login-background.jpg" style="width: 120px;height: 120px" > - @} + <div class="col-sm-12"> + <div class="row" style="border-style: none none solid; border-color: #e7eaec; border-width: 1px 0px;"> + <ul class="breadcrumb" style="height: 45px; line-height: 45px; padding-left: 20px;"> + <li><a href="#" class="statistics">运营数据总览</a></li> + <li><a href="#" class="map">车辆地图总览</a></li> + <li><a href="#" class="order">订单热点图</a></li> + </ul> + </div> - <div class="m-t-xs font-bold">${deptName}</div> + <div class="row content" id="statisticsDiv"> + <div class="initialLevel col-sm-12 control-label form-group" style="cursor: pointer;text-align: left;"> + <div class="initialLevel col-sm-3 control-label form-group" > + <span class="control-label" style="font-size: 30px">今天</span> </div> </div> - <div class="col-sm-8"> - <h3><strong>${user.name}</strong></h3> - <p><i class="fa fa-user-secret"></i> ${roleName}</p> - <address> - <strong>E-mail:${user.email}</strong><br> - <strong>Tel:${user.phone}</strong><br> - <strong>登录次数:${loginNum}次</strong><br> - <strong>登录时间:${date}</strong><br> - </address> + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="initialLevel col-sm-8 control-label form-group" style="cursor: pointer;text-align: left;" > + <label>${txt}</label> + </div> + <div class="initialLevel col-sm-4 form-group" style="cursor: pointer;text-align: right;" > + <label class="col-sm-2">代理商</label> + <select class="col-sm-2 " id="agentName" style="width: 200px;height: 33px" name="agentName"> + <option value="">请选择</option> + @for(i in agentList){ + <option value="${i.id}">${i.principal}</option> + @} + </select> + </div> </div> - <div class="clearfix"></div> + <div class="initialLevel col-sm-12 control-label form-group" > + <div class="initialLevel col-sm-3 control-label form-group" style="border: 1px solid;border-color: #c2ccd1;height: 130px"> + <br/> + <div class="ibox float-e-margins"> + <div class="col-sm-3" ><br/> + <label style="font-size: 16px">代理商</label><br/> + <img src="https://newok.oss-cn-shenzhen.aliyuncs.com/img/0e257d6fe5af4275919d039b40e30e19.png"> + </div> + <div class="initialLevel col-sm-9 control-label form-group" > + <div> + <div class="col-sm-8" style="font-size: 16px">总数</div> + <div class="col-sm-1" id="agentTotal">${agentTotal}</div> + </div><br/> + <div id="pro1" style="height: 20px"></div><br/> + <div> + <div class="col-sm-8" style="font-size: 16px">近一月新增</div> + <div class="col-sm-1" id="agentMonthTotal">${agentMonthTotal}</div> + </div><br/> + <div id="pro2" style="height: 20px"></div> + </div> + </div> + </div> + <div class="col-sm-1"></div> + <div class="initialLevel col-sm-3 control-label form-group" style="border: 1px solid;border-color: #c2ccd1;height: 130px"> + <br/> + <div class="ibox float-e-margins"> + <div class="col-sm-3" ><br/> + <label style="font-size: 16px">司机</label><br/> + <img src="https://newok.oss-cn-shenzhen.aliyuncs.com/img/0e257d6fe5af4275919d039b40e30e19.png" > + </div> + <div class="initialLevel col-sm-9 control-label form-group" > + <div> + <div class="col-sm-8" style="font-size: 16px">总数</div> + <div class="col-sm-1" id="driverTotal">${driverTotal}</div> + </div><br/> + <div id="pro3" style="height: 20px"></div><br/> + <div> + <div class="col-sm-8" style="font-size: 16px">近一月新增</div> + <div class="col-sm-1" id="driverMonthTotal">${driverMonthTotal}</div> + </div><br/> + <div id="pro4" style="height: 20px"></div> + </div> + </div> + </div> + <div class="col-sm-1"></div> + <div class="initialLevel col-sm-4 control-label form-group" style="border: 1px solid;border-color: #c2ccd1;height: 600px"><br/> + <div> + <div class="initialLevel col-sm-4 control-label form-group" > + <label style="font-size: 20px">业绩排名</label> + </div> + <div class="col-sm-2"></div> + <div class="initialLevel col-sm-6 control-label form-group" > + <div style="font-size: 0px;width: 100%"> + <button id="btn1" onclick="queryOrderCount()">单量</button> + <button id="btn2" onclick="queryIncome()">收入</button> + <button id="btn3" onclick="queryCommission()">佣金</button> + </div> + <div> + <input type="text" class="form-control layer-date" placeholder="请选择" id="insertTimeMonth"> + </div> + </div> + </div> + <div id="performanceResp"> + </div> + </div> + </div> + <div class="initialLevel col-sm-12 control-label form-group" ><br/><br/> + <div class="initialLevel col-sm-3 control-label form-group" style="border: 1px solid;border-color: #c2ccd1;margin-top: -400px;height: 300px"> + <br/> + <div class="col-sm-5" > + <label style="font-size: 16px">订单统计(本月)</label> + </div> + <div class="col-sm-3"></div> + <div class="initialLevel col-sm-4 control-label form-group" style="text-align: right" > + </div> + <div id="chart2" style="height: 90%;width: 100%"></div> + </div> + <div class="col-sm-1"></div> + <div class="initialLevel col-sm-3 control-label form-group" style="border: 1px solid;border-color: #c2ccd1;margin-top: -400px;margin-left: 25%;height: 300px"> + <br/> + <div> + <div class="col-sm-5" > + <label style="font-size: 16px">订单统计(年份)</label> + </div> + <div class="col-sm-3"></div> + <div class="initialLevel col-sm-4 control-label form-group" style="text-align: right"> + <input type="text" class="form-control layer-date" placeholder="请选择" id="insertTime"> + </div> + </div><br/> + <div id="chart1" style="height: 90%;width: 100%"></div> + </div> + + <div class="initialLevel col-sm-4 control-label form-group" > + </div> + + </div> </div> + + <div class="row content" id="mapDiv"> + <div class="initialLevel col-sm-12 control-label form-group" style="cursor: pointer;text-align: left;"> + <div class="initialLevel col-sm-2 control-label form-group" > + <select class="input-group" id="agentId" style="width: 200px;height: 34px" name="agentId"> + <option value="">请选择代理商</option> + @for(i in agentList){ + <option value="${i.id}">${i.principal}</option> + @} + </select> + </div> + <div class="initialLevel col-sm-2 control-label form-group" > + <#button name="搜索" icon="fa-search" clickFun="getData()"/> + <#button name="重置" icon="fa-trash" clickFun="reset()" space="true"/> + </div> + </div> + <div class="col-sm-12" > + <input hidden id="onLineDriver" value="${onLineDriver}"> + <div class="initialLevel col-sm-12 control-label form-group" style="cursor: pointer;text-align: left;"> + <div class="initialLevel col-sm-12 control-label form-group" > + <div id="container" ></div> + <div id="panel" ></div> + </div> + </div> + + <div class="initialLevel col-sm-12 control-label form-group" style="cursor: pointer;text-align: left;"> + <div class="initialLevel col-sm-2 control-label form-group" > + <label>在线司机:</label> + <label id="onLineDriverCount">${onLineDriverCount}</label> + <label>人</label> + </div> + </div> + </div> + </div> + + <div class="row content" id="orderDiv"> + <div class="initialLevel col-sm-12 control-label form-group" style="cursor: pointer;text-align: left;"> + <div class="initialLevel col-sm-2 control-label form-group" > + <select class="input-group" id="orderType" style="width: 180px;height: 33px" name="orderType"> + <option value="">请选择订单类型</option> + <option value="1">未接单</option> + <option value="2">服务中</option> + <option value="3">已完成</option> + <option value="4">已取消</option> + </select> + </div> + <div class="initialLevel col-sm-2 control-label form-group" > + <#button name="搜索" icon="fa-search" clickFun="getDataOrder()"/> + <#button name="重置" icon="fa-trash" clickFun="resetOrder()" space="true"/> + </div> + </div> + <div class="col-sm-10" > + <input hidden id="allList" value="${allList}"> + <div class="initialLevel col-sm-12 control-label form-group" style="cursor: pointer;text-align: left;"> + <div class="initialLevel col-sm-12 control-label form-group" > + <div id="containerOrder" ></div> + <div id="panelOrder" ></div> + </div> + </div> + + <div class="initialLevel col-sm-12 control-label form-group" style="cursor: pointer;text-align: left;"> + <div class="initialLevel col-sm-2 control-label form-group" > + <label>未接单</label> + <label id="pendingOrderCount">${pendingOrderCount}</label> + </div> + <div class="initialLevel col-sm-2 control-label form-group" > + <label>服务中</label> + <label id="serverCount">${serverCount}</label> + </div> + <div class="initialLevel col-sm-2 control-label form-group" > + <label>已完成</label> + <label id="finishCount">${finishCount}</label> + </div> + <div class="initialLevel col-sm-2 control-label form-group" > + <label>已取消</label> + <label id="cancelCount">${cancelCount}</label> + </div> + </div> + </div> + <div class="col-sm-2"> + <div class="ibox float-e-margins"> + <div class="ibox-content"> + <div class="form-horizontal" id="serverOrder" style="overflow:scroll;width: 100%; height:650px;"> + </div> + </div> + </div> + </div> + </div> + </div> </div> </div> -<script> - $(document).ready(function () { - $('.contact-box').each(function () { - animationHover(this, 'pulse'); - }); - $(".row").css({ - height: window.innerHeight+"px", - display:"flex", - alignItems: "center", - justifyContent: "center", - }) - }); -</script> <script type="text/javascript" src="http://tajs.qq.com/stats?sId=9051096" charset="UTF-8"></script> +<script src="${ctxPath}/static/modular/system/tCoupon/tAgent_info.js"></script> +<script src="${ctxPath}/static/modular/system/tCoupon/tAgent.js"></script> + +<link rel="stylesheet" href="${ctxPath}/static/css/plugins/lineProgressbar/jquery.lineProgressbar.css"> +<script src="${ctxPath}/static/js/plugins/lineProgressbar/jquery.lineProgressbar.js"></script> + +<script src="${ctxPath}/static/modular/system/tHomePage/tOrder.js"></script> +<script src="https://webapi.amap.com/loader.js"></script> + +<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script> + +<style> + .name1{ + width:25%; + font-size:2px + } + #container { + background-color: white; + height: 620px; + width: 100%; + flex-grow: initial; + flex-shrink: initial; + flex-basis: initial; + align-self: initial; + } + #panel { + position: fixed; + background-color: white; + max-height: 90%; + overflow-y: auto; + top: 10px; + right: 10px; + width: 280px; + } + #containerOrder { + background-color: white; + height: 620px; + width: 100%; + flex-grow: initial; + flex-shrink: initial; + flex-basis: initial; + align-self: initial; + } + #panelOrder { + position: fixed; + background-color: white; + max-height: 90%; + overflow-y: auto; + top: 10px; + right: 10px; + width: 280px; + } + #panel .amap-call { + background-color: #009cf9; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } + #panel .amap-lib-driving { + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + overflow: hidden; + } + img{ + height: 30px; + width: 30px; + } + #chart1 { + position: relative; + height: 100vh; + overflow: hidden; + } + button{ + width: 70px; + height: 25px; + margin-bottom: 5px; + } + #btn1{ + border-top-left-radius: 5px; + border-bottom-left-radius: 5px; + font-size: 1px; + } + #btn2{ + font-size: 1px; + } + #btn3{ + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; + font-size: 1px; + } + .orderTh{ + text-align: center; + } + .orderTd{ + width:100px; + height:40px + } +</style> +<script type="text/javascript"> + + $(function (){ + + $('#mapDiv').hide() + $('#orderDiv').hide() + loading() + orderByMonth(new Date().getMonth() + 1) + orderByYear(new Date().getFullYear()) + queryOrderCount() + + var first = $('.breadcrumb').children('li:first').children('a'); + first.css({ + 'color': '#AB2626' + }) + var className = first.attr('class'); + $('.content').hide(); + $('#' + className + 'Div').show(); + + $('.breadcrumb').find('a').on('click', function () { + $('.breadcrumb').children('li').each(function () { + $(this).children('a').removeAttr('style'); + }) + + $(this).css({ + 'color': '#AB2626' + }); + var className = $(this).attr('class'); + $('.content').hide(); + $('#' + className + "Div").show(); + switch (className) { + case "statistics": + $('#mapDiv').hide() + $('#orderDiv').hide() + loading() + orderByMonth(new Date().getMonth() + 1) + orderByYear(new Date().getFullYear()) + queryOrderCount() + break; + case "map": + map(""); + break; + case "order": + mapOrder(""); + getOrderData(); + break; + } + + }) + // $('#mapDiv').hide() + // $('#orderDiv').hide() + // loading() + // orderByMonth(new Date().getMonth() + 1) + // orderByYear(new Date().getFullYear()) + // queryOrderCount() + }) + + function selectYear(e){ + orderByYear(e) + } + function selectMonth(e){ + // 查询排行榜 + if($('#btn1').val() != null && $('#btn1').val() != ''){ + console.log(11111) + getOrder($('#btn1').val(),e) + } + if($('#btn2').val() != null && $('#btn2').val() != ''){ + console.log(22222) + getOrder($('#btn2').val(),e) + } + if($('#btn3').val() != null && $('#btn3').val() != ''){ + console.log(33333) + getOrder($('#btn3').val(),e) + } + } + laydate.render({ + elem: '#insertTime', + range: false, + type: "year", + change:function(value,date) { + selectYear(value)// change 每点一次都会监听一遍 + } + }); + laydate.render({ + elem: '#insertTimeMonth', + range: false, + type: "month", + change:function(value,date) { + selectMonth(value)// change 每点一次都会监听一遍 + } + }); + + // 进度条加载 + function loading(){ + var options = $.extend({ + percentage : $('#agentTotal').text(), + ShowProgressCount: false, + duration: 10, + + // Styling Options + fillBackgroundColor: '#3498db', + backgroundColor: '#EEEEEE', + radius: '10px', + height: '20px', + width: '80%' + }); + $('#pro1').LineProgressbar(options); + var options = $.extend({ + percentage : $('#agentMonthTotal').text(), + ShowProgressCount: false, + duration: 10, + + // Styling Options + fillBackgroundColor: '#3498db', + backgroundColor: '#EEEEEE', + radius: '10px', + height: '20px', + width: '80%' + }); + $('#pro2').LineProgressbar(options); + var options = $.extend({ + percentage : $('#driverTotal').text(), + ShowProgressCount: false, + duration: 10, + + // Styling Options + fillBackgroundColor: '#3498db', + backgroundColor: '#EEEEEE', + radius: '10px', + height: '20px', + width: '80%' + }); + $('#pro3').LineProgressbar(options); + var options = $.extend({ + percentage : $('#driverMonthTotal').text(), + ShowProgressCount: false, + duration: 10, + + // Styling Options + fillBackgroundColor: '#3498db', + backgroundColor: '#EEEEEE', + radius: '10px', + height: '20px', + width: '80%' + }); + $('#pro4').LineProgressbar(options); + } + + // 单量 + function queryOrderCount(){ + $('#btn1').css("backgroundColor","dodgerblue") + $('#btn1').css("borderColor","dodgerblue") + $('#btn1').css("color","#FFFFFF") + $('#btn2').css("backgroundColor","#FFFFFF") + $('#btn2').css("borderColor","dodgerblue") + $('#btn2').css("color","black") + $('#btn3').css("backgroundColor","#FFFFFF") + $('#btn3').css("borderColor","dodgerblue") + $('#btn3').css("color","black") + $('#btn1').val(1) + $('#btn2').val('') + $('#btn3').val('') + getOrder($('#btn1').val(),$('#insertTimeMonth').val()) + } + // 收入 + function queryIncome(){ + $('#btn1').css("backgroundColor","#FFFFFF") + $('#btn1').css("borderColor","dodgerblue") + $('#btn1').css("color","black") + $('#btn2').css("backgroundColor","dodgerblue") + $('#btn2').css("borderColor","dodgerblue") + $('#btn2').css("color","#FFFFFF") + $('#btn3').css("backgroundColor","#FFFFFF") + $('#btn3').css("borderColor","dodgerblue") + $('#btn3').css("color","black") + $('#btn1').val('') + $('#btn2').val(2) + $('#btn3').val('') + getOrder($('#btn2').val(),$('#insertTimeMonth').val()) + } + // 佣金 + function queryCommission(){ + $('#btn1').css("backgroundColor","#FFFFFF") + $('#btn1').css("borderColor","dodgerblue") + $('#btn1').css("color","black") + $('#btn2').css("backgroundColor","#FFFFFF") + $('#btn2').css("borderColor","dodgerblue") + $('#btn2').css("color","black") + $('#btn3').css("backgroundColor","dodgerblue") + $('#btn3').css("borderColor","dodgerblue") + $('#btn3').css("color","#FFFFFF") + $('#btn1').val('') + $('#btn2').val('') + $('#btn3').val(3) + getOrder($('#btn3').val(),$('#insertTimeMonth').val()) + } + + // 通过年查询订单数量(查询每月) + function orderByYear(e){ + var dom = document.getElementById('chart1'); + var ajax = new $ax(Feng.ctxPath+"/tHomePage/statisticsYearByAgentId",function(data){ + data = data.yearResp + var myChart = echarts.init(dom, null, { + renderer: 'canvas', + useDirtyRect: false + }); + var option; + option = { + tooltip: { + trigger: 'axis', //坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用 + axisPointer: {// 坐标轴指示器,坐标轴触发有效 + type: 'line' // 默认为直线,可选为:'line' | 'shadow' + }, + formatter: '日期: {b} <br/>订单数量 : {c}' + }, + xAxis: { + type: 'category', + data: [data[0].month+'月',data[1].month+'月', data[2].month+'月', data[3].month+'月',data[4].month+'月',data[5].month+'月',data[6].month+'月',data[7].month+'月',data[8].month+'月',data[9].month+'月',data[10].month+'月',data[11].month+'月'] + }, + yAxis: { + type: 'value' + }, + series: [ + { + data: [data[0].orderCount,data[1].orderCount, data[2].orderCount, data[3].orderCount,data[4].orderCount,data[5].orderCount,data[6].orderCount,data[7].orderCount,data[8].orderCount,data[9].orderCount,data[10].orderCount,data[11].orderCount], + type: 'line', + color: '#00b7ee' + } + ] + }; + option && myChart.setOption(option); + }, function (data) { + }); + ajax.set("agentId",$("#agentName").val()); + if(e==''){ + ajax.set("yearDate",$("#year").val()); + }else{ + ajax.set("yearDate",e); + } + + ajax.start(); + } + + // 通过本月查询订单数量(查询本月每天) + function orderByMonth(){ + var dom = document.getElementById('chart2'); + var ajax = new $ax(Feng.ctxPath+"/tHomePage/statisticsMonthByAgentId",function(data){ + data = data.monthResp + var mon = new Date().getMonth()+1; + if(mon < 10){ + mon = '0'+mon; + } + var yResp = []; + var xResp = []; + for (var i =0;i<data.length;i++){ + yResp.push({ + value:data[i].orderCount, + }) + xResp.push({ + value:mon+'-'+data[i].month, + }) + } + var myChart = echarts.init(dom, null, { + renderer: 'canvas', + useDirtyRect: false + }); + var option; + option = { + tooltip: { + trigger: 'axis', //坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用 + axisPointer: {// 坐标轴指示器,坐标轴触发有效 + type: 'line' // 默认为直线,可选为:'line' | 'shadow' + }, + formatter: '日期: {b} <br/>订单数量 : {c}' + }, + + xAxis: { + type: 'category', + data: xResp + }, + yAxis: { + type: 'value' + }, + series: [ + { + data: yResp, + type: 'line', + color: '#00b7ee' + } + ] + }; + option && myChart.setOption(option); + }, function (data) { + }); + ajax.set("agentId",$("#agentName").val()); + ajax.start(); + } + + function getOrder(type,e){ + $.ajax({ + url: Feng.ctxPath + '/tHomePage/statisticsOrderByAgentId', + type: 'POST', + data: { + agentId: $("#agentName").val(), + monthDate: e, + type: type + }, + success: function (res) { + var str = '<table border="1" style="border: #c2ccd1;border-radius: 1px;height: 90%;width: 100%;text-align:center;table-layout:fixed;tword-break:break-all;">\n' + + ' <tr style="text-align: center;width:100px;height:40px">\n' + + ' <th class="orderTh">排名</th>\n' + + ' <th class="orderTh">时间</th>\n' + + ' <th class="orderTh">姓名</th>\n'; + if(type == 1){ + str += ' <th class="orderTh">单量</th>\n' + + ' </tr>'; + } + if(type == 2){ + str += ' <th class="orderTh">收入</th>\n' + + ' </tr>'; + } + if(type == 3){ + str += ' <th class="orderTh">佣金</th>\n' + + ' </tr>'; + } + if(!$.isEmptyObject(res)){ + var order = res.performanceResp + if(order.length > 0){ + for(var i in order){ + var a=parseInt(i)+1 + str += + '<tr><td class="orderTd">' + a + '</td><td class="orderTd">' + order[i].monthTime + '</td><td class="orderTd">' + order[i].userName + '</td><td class="orderTd">' + order[i].amount + '</td></tr>'; + } + } + } + str += '</table>'; + $('#performanceResp').html(''); + $('#performanceResp').html(str); + } + }); + } + + // 动态查询代理商司机数量 + function getInfo(){ + var ajax = new $ax(Feng.ctxPath+"/tHomePage/statisticsDriverByAgentId",function(data){ + $("#agentTotal").text(data.agentTotal) + $("#agentMonthTotal").text(data.agentMonthTotal) + $("#driverTotal").text(data.driverTotal) + $("#driverMonthTotal").text(data.driverMonthTotal) + loading() + }, function (data) { + }); + ajax.set("agentId",$("#agentName").val()); + ajax.start(); + } + + // 代理商选择事件 + $('#agentName').change(function(){ + // 查询代理商 查询司机 + getInfo() + // 查询月度报表 + orderByMonth() + // 通过年查询订单报表 + orderByYear($('#insertTime').val()) + // 查询排行榜 + if($('#btn1').val() != null && $('#btn1').val() != ''){ + console.log(111) + getOrder($('#btn1').val(),$('#insertTimeMonth').val()) + } + if($('#btn2').val() != null && $('#btn2').val() != ''){ + console.log(222) + getOrder($('#btn2').val(),$('#insertTimeMonth').val()) + } + if($('#btn3').val() != null && $('#btn3').val() != ''){ + console.log(333) + getOrder($('#btn3').val(),$('#insertTimeMonth').val()) + } + }) + + + + + function getData(){ + var ajax = new $ax(Feng.ctxPath + "/tHomePage/getMap", function (data) { + document.getElementById("onLineDriverCount").innerText=data.onLineDriverCount + document.getElementById("pendingOrderCount").innerText=data.pendingOrderCount + document.getElementById("serverCount").innerText=data.serverCount + document.getElementById("finishCount").innerText=data.finishCount + document.getElementById("cancelCount").innerText=data.cancelCount + $('#allList').val(data.allList); + console.log(data.allList) + map(data.allList) + getOrderData() + + }, function (data) { + }); + ajax.set("agentId",$("#agentId").val()); + ajax.set("type",$("#orderType").val()); + ajax.start(); + } + function reset(){ + $("#agentId").val('') + $("#orderType").val('') + var ajax = new $ax(Feng.ctxPath + "/tHomePage/getMap", function (data) { + document.getElementById("onLineDriverCount").innerText=data.onLineDriverCount + document.getElementById("pendingOrderCount").innerText=data.pendingOrderCount + document.getElementById("serverCount").innerText=data.serverCount + document.getElementById("finishCount").innerText=data.finishCount + document.getElementById("cancelCount").innerText=data.cancelCount + $('#allList').val(data.allList); + map(data.allList) + getOrderData() + }, function (data) { + }); + ajax.set("agentId",$("#agentId").val()); + ajax.set("type",$("#orderType").val()); + ajax.start(); + } + + function getDataOrder(){ + var ajax = new $ax(Feng.ctxPath + "/tHomePage/getMap", function (data) { + document.getElementById("onLineDriverCount").innerText=data.onLineDriverCount + document.getElementById("pendingOrderCount").innerText=data.pendingOrderCount + document.getElementById("serverCount").innerText=data.serverCount + document.getElementById("finishCount").innerText=data.finishCount + document.getElementById("cancelCount").innerText=data.cancelCount + $('#allList').val(data.allList); + console.log(data.allList) + mapOrder(data.allList) + getOrderData() + + }, function (data) { + }); + ajax.set("agentId",$("#agentId").val()); + ajax.set("type",$("#orderType").val()); + ajax.start(); + } + function resetOrder(){ + $("#agentId").val('') + $("#orderType").val('') + var ajax = new $ax(Feng.ctxPath + "/tHomePage/getMap", function (data) { + document.getElementById("onLineDriverCount").innerText=data.onLineDriverCount + document.getElementById("pendingOrderCount").innerText=data.pendingOrderCount + document.getElementById("serverCount").innerText=data.serverCount + document.getElementById("finishCount").innerText=data.finishCount + document.getElementById("cancelCount").innerText=data.cancelCount + $('#allList').val(data.allList); + mapOrder(data.allList) + getOrderData() + }, function (data) { + }); + ajax.set("agentId",$("#agentId").val()); + ajax.set("type",$("#orderType").val()); + ajax.start(); + } + + + function map(e){ + window._AMapSecurityConfig = { + securityJsCode:'b62d9146929db08c4c2f4537d045320d', + }; + laydate.render({ + elem: '#createTime', + type: 'date', + range: true + }); + + AMapLoader.reset() // 需要把这个reset一下 + AMapLoader.load({ + "key": "1d43098bcd98ab124623e7e4bcc9595e", // 申请好的Web端开发者Key,首次调用 load 时必填 + "version": "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15 + "plugins": ['AMap.Driving'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等 + "AMapUI": { // 是否加载 AMapUI,缺省不加载 + "version": '1.1', // AMapUI 版本 + "plugins":['overlay/SimpleMarker'], // 需要加载的 AMapUI ui插件 + }, + "Loca":{ // 是否加载 Loca, 缺省不加载 + "version": '2.0' // Loca 版本 + }, + }).then((AMap)=>{ + //初始化地图对象,加载地图 + var map = new AMap.Map('container', { + viewMode: '2D', // 默认使用 2D 模式,如果希望使用带有俯仰角的 3D 模式,请设置 viewMode: '3D', + zoom:10, //初始化地图层级 + center: [104.043246,30.641849] //初始化地图中心点 + }); + // map.clearMap(); // 清除地图覆盖物 + // 经纬度坐标数组 + const onLineDriver = $('#onLineDriver').val(); + var list1 = JSON.stringify(onLineDriver) + const jsonArr = JSON.parse(list1) + const jsonArr1 = JSON.parse(jsonArr); + console.log(jsonArr1) + M = jsonArr1; + M.forEach(function(marker) { + new AMap.Marker({ + map: map, + icon: marker[2]==1?'//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-5.png':'//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-6.png', + position: [marker[0], marker[1]], + offset: new AMap.Pixel(-13, -30) + }); + }); + + // var center = map.getCenter(); + // var centerText = '当前中心点坐标:' + center.getLng() + ',' + center.getLat(); + // 添加事件监听, 使地图自适应显示到合适的范围 + AMap.event.addDomListener(document.getElementById('container'), 'click', function() { + var newCenter = map.setFitView(); + }); + }).catch((e)=>{ + console.error(e); //加载错误提示 + }); + } + + function mapOrder(e){ + window._AMapSecurityConfig = { + securityJsCode:'b62d9146929db08c4c2f4537d045320d', + }; + AMapLoader.reset() // 需要把这个reset一下 + AMapLoader.load({ + "key": "1d43098bcd98ab124623e7e4bcc9595e", // 申请好的Web端开发者Key,首次调用 load 时必填 + "version": "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15 + "plugins": ['AMap.Driving'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等 + "AMapUI": { // 是否加载 AMapUI,缺省不加载 + "version": '1.1', // AMapUI 版本 + "plugins":['overlay/SimpleMarker'], // 需要加载的 AMapUI ui插件 + }, + "Loca":{ // 是否加载 Loca, 缺省不加载 + "version": '2.0' // Loca 版本 + }, + }).then((AMap)=>{ + //初始化地图对象,加载地图 + var map = new AMap.Map('containerOrder', { + viewMode: '2D', // 默认使用 2D 模式,如果希望使用带有俯仰角的 3D 模式,请设置 viewMode: '3D', + zoom:10, //初始化地图层级 + center: [104.043246,30.641849] //初始化地图中心点 + }); + // map.clearMap(); // 清除地图覆盖物 + // 经纬度坐标数组 + var allList; + if(e==""){ + allList = $('#allList').val(); + console.log(1111111111) + var list = JSON.stringify(allList) + console.log(2222222222) + const jsonArray = JSON.parse(list) + console.log(3333333333333) + const jsonArray1 = JSON.parse(jsonArray); + console.log(jsonArray1) + M = jsonArray1; + }else{ + M=e; + } + console.log(M) + M.forEach(function(marker) { + new AMap.Marker({ + map: map, + icon: marker[2]==301?'//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-1.png':((marker[2]==109||marker[2]==107||marker[2]==108)?'//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-2.png': + (marker[2]==101?'//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-3.png':'//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-4.png') + ), + position: [marker[0], marker[1]], + offset: new AMap.Pixel(-13, -30) + }); + }); + // var center = map.getCenter(); + // var centerText = '当前中心点坐标:' + center.getLng() + ',' + center.getLat(); + // 添加事件监听, 使地图自适应显示到合适的范围 + AMap.event.addDomListener(document.getElementById('containerOrder'), 'click', function() { + var newCenter = map.setFitView(); + }); + }).catch((e)=>{ + console.error(e); //加载错误提示 + }); + } + + function getOrderData(){ + $.ajax({ + url: Feng.ctxPath + '/tHomePage/getServerOrder', + type: 'POST', + data: { + agentId: $("#agentId").val() + }, + success: function (res) { + var order = res.serverList + var str = '<table><tr><h3>服务中</h3></tr><hr/><br>'; + if(order.length > 0){ + for(var i in order){ + console.log(order[i].startTime) + str += + '<tr><img src=' + order[i].avatar + ' style="height: 40px;width: 40px"></img>' + order[i].driverName +'</tr><br>' + + '<table><tr><td class="name1">驾龄</td><td class="name1">' + order[i].drivingExperience + '年'+'</td><td class="name1">代驾次数</td><td class="name1">' + order[i].valetDrivingCount + '次'+'</td></tr><br></table>' + + '<table><br><tr><td class="name1">出行时间</td><td class="name1">' + order[i].startTime + '</td></tr>' + + '<tr><td class="name1">起点</td><td class="name1">' + order[i].startAddress + '</td></tr>' + + '<tr><td class="name1">终点</td><td class="name1">' + order[i].endAddress + '</td></tr></table><br>' + + '<table><tr><td class="name1">预估费用</td><td class="name1">' + order[i].estimatedPrice + '元'+'</td><td class="name1">行驶里程</td><td class="name1">' + order[i].mileageTraveled + '公里'+'</td></tr>' + + '<tr><td class="name1">等待时间</td><td class="name1">' + order[i].waitTime + '分钟'+'</td><td class="name1">行驶时间</td><td class="name1">' + order[i].goTime + '分钟'+'</td></tr></table><hr/>'; + } + } + str += '</table>'; + $('#serverOrder').html(str); + } + }); + } + +</script> @} diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tAppUser.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tAppUser.html index 8b60e4a..d1c0757 100644 --- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tAppUser.html +++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAppUser/tAppUser.html @@ -36,7 +36,7 @@ @if(shiro.hasPermission("/tAppUser/export-userInfo")){ <#button name="导出" icon="" clickFun="TAppUser.export()"/> @} - @if(shiro.hasPermission("/tAppUser/add")){ + @if(shiro.hasPermission("/tAppUser/tAppUser_exception")){ <#button name="异常" icon="" clickFun="TAppUserException.tAppUserException()"/> @} @if(shiro.hasPermission("/tAppUser/sendCoupon")){ -- Gitblit v1.7.1