From e8044ee933b7e2f834855f28ea8575d82eb0eeac Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期五, 20 六月 2025 21:25:13 +0800 Subject: [PATCH] 提现管理 --- ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/taxi/TOrderTaxiController.java | 376 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 343 insertions(+), 33 deletions(-) diff --git a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/taxi/TOrderTaxiController.java b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/taxi/TOrderTaxiController.java index bf7ec19..1291846 100644 --- a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/taxi/TOrderTaxiController.java +++ b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/taxi/TOrderTaxiController.java @@ -6,23 +6,25 @@ import com.baomidou.mybatisplus.plugins.Page; import com.stylefeng.guns.core.base.controller.BaseController; import com.stylefeng.guns.core.common.constant.factory.PageFactory; +import com.stylefeng.guns.core.log.LogObjectHolder; import com.stylefeng.guns.core.shiro.ShiroKit; +import com.stylefeng.guns.core.util.DateUtil; +import com.stylefeng.guns.core.util.ExcelExportUtil; import com.stylefeng.guns.core.util.SinataUtil; import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; import com.stylefeng.guns.modular.system.util.*; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; import org.springframework.ui.Model; -import org.springframework.beans.factory.annotation.Autowired; -import com.stylefeng.guns.core.log.LogObjectHolder; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStreamReader; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.*; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; @@ -37,48 +39,37 @@ @RequestMapping("/tOrderTaxi") public class TOrderTaxiController extends BaseController { + public static List<Integer> orderIds = new ArrayList<>(); private String PREFIX = "/system/tOrderTaxi/"; - @Autowired private ITOrderTaxiService tOrderTaxiService; - + @Autowired + private ITPubTransactionDetailsService pubTransactionDetailsService; @Autowired private ITOrderPositionService tOrderPositionService; - @Autowired private ITDriverService tDriverService; - @Autowired private GDMapElectricFenceUtil gdMapElectricFenceUtil; - @Autowired private GDMapGeocodingUtil gdMapGeocodingUtil; - @Autowired private ITUserService itUserService; - @Autowired private PushUtil pushUtil; - @Autowired private ITCompanyCityService companyCityService; - @Autowired private ITSysPushOrderService pushOrderService; - @Autowired private RedisUtil redisUtil; - @Autowired private ITDriverService driverService; - @Autowired private ITSystemNoticeService systemNoticeService; - - public static List<Integer> orderIds = new ArrayList<>(); - @Value("${filePath}") private String filePath; + private ResultUtil resultUtil; /** * 跳转到出租车订单首页 @@ -100,10 +91,73 @@ * 跳转到修改出租车订单 */ @RequestMapping("/tOrderTaxi_update/{tOrderTaxiId}") - public String tOrderTaxiUpdate(@PathVariable Integer tOrderTaxiId, Model model) { + public String tOrderTaxiUpdate(@PathVariable Integer tOrderTaxiId, Model model) throws IOException { Map<String, Object> tOrderTaxi = tOrderTaxiService.getTaxiOrderDetailById(tOrderTaxiId); model.addAttribute("item",tOrderTaxi); + // 查询司机扣款 + List<TPubTransactionDetails> tPubTransactionDetails = pubTransactionDetailsService.selectList(new EntityWrapper<TPubTransactionDetails>() + .eq("userId", tOrderTaxi.get("driverId")) + .eq("orderId", tOrderTaxi.get("id")) + .eq("type", 1) + .eq("userType", 2)); + if(CollectionUtils.isEmpty(tPubTransactionDetails)){ + model.addAttribute("companyMoney",""); + model.addAttribute("driverMoney",""); + }else { + TPubTransactionDetails pubTransactionDetailCompany = tPubTransactionDetails.stream().filter(e -> e.getOrderType().equals(6)).findFirst().orElse(null); + if(Objects.nonNull(pubTransactionDetailCompany)){ + model.addAttribute("companyMoney",pubTransactionDetailCompany.getMoney()); + }else { + model.addAttribute("companyMoney",""); + } + TPubTransactionDetails pubTransactionDetailDriver = tPubTransactionDetails.stream().filter(e -> e.getOrderType().equals(2)).findFirst().orElse(null); + if(Objects.nonNull(pubTransactionDetailDriver)){ + model.addAttribute("driverMoney",pubTransactionDetailDriver.getMoney()); + }else { + model.addAttribute("driverMoney",""); + } + } + if(tOrderTaxi.get("payManner")!=null && Integer.parseInt(tOrderTaxi.get("payManner").toString()) == 1){ + model.addAttribute("payMannerStr","线上收款"); + }else { + model.addAttribute("payMannerStr","计费打表"); + } LogObjectHolder.me().set(tOrderTaxi); + try{ + //将数据存储到文件中 + File file = new File(filePath + tOrderTaxiId + "_2.txt"); + + //读取文件(字符流) + BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8")); + //循环取出数据 + String str = null; + StringBuffer sb = new StringBuffer(); + while ((str = in.readLine()) != null) { + sb.append(str); + } + List<TOrderPosition> list = JSONArray.parseArray(sb.toString(), TOrderPosition.class); + List<Map> maps = new ArrayList<>(); + for (TOrderPosition tOrderPosition : list) { + Map<String, String> map = new HashMap<>(); + map.put("lon",tOrderPosition.getLon()); + map.put("lat",tOrderPosition.getLat()); + maps.add(map); + } + +// resultUtil = ResultUtil.success(list); + // 将maps转化为jsonArray字符串 + // 使用 Gson 转换为 JSON 字符串 +// Gson gson = new Gson(); +// String jsonString = gson.toJson(maps); +// System.out.println(jsonString); + model.addAttribute("guiji",maps); + }catch (Exception e){ + e.printStackTrace(); + resultUtil = ResultUtil.runErr(); + model.addAttribute("guiji",""); + } + + return PREFIX + "tOrderTaxi_edit.html"; } @@ -122,11 +176,43 @@ * 跳转到出租车订单轨迹页面 */ @RequestMapping("/tOrderTaxi_trajectory/{tOrderTaxiId}") - public String tOrderTaxi_trajectory(@PathVariable Integer tOrderTaxiId, Model model) { + public String tOrderTaxi_trajectory(@PathVariable Integer tOrderTaxiId, Model model) throws IOException { model.addAttribute("tOrderTaxiId",tOrderTaxiId); + try{ + //将数据存储到文件中 + File file = new File(filePath + tOrderTaxiId + "_2.txt"); + + //读取文件(字符流) + BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8")); + //循环取出数据 + String str = null; + StringBuffer sb = new StringBuffer(); + while ((str = in.readLine()) != null) { + sb.append(str); + } + List<TOrderPosition> list = JSONArray.parseArray(sb.toString(), TOrderPosition.class); + List<Map> maps = new ArrayList<>(); + for (TOrderPosition tOrderPosition : list) { + Map<String, String> map = new HashMap<>(); + map.put("lon",tOrderPosition.getLon()); + map.put("lat",tOrderPosition.getLat()); + maps.add(map); + } +// resultUtil = ResultUtil.success(list); + // 将maps转化为jsonArray字符串 + // 使用 Gson 转换为 JSON 字符串 +// Gson gson = new Gson(); +// String jsonString = gson.toJson(maps); +// System.out.println(jsonString); + model.addAttribute("guiji",maps); + }catch (Exception e){ + e.printStackTrace(); + resultUtil = ResultUtil.runErr(); + model.addAttribute("guiji",""); + } return PREFIX + "tOrderTaxi_trajectory.html"; } - + /** * 获取出租车订单列表 */ @@ -152,6 +238,222 @@ page.setRecords(tOrderTaxiService.getTaxiOrderList(page,beginTime,endTime,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),orderNum,orderSource,userName,userPhone,passengers,passengersPhone,driver,state)); return super.packForBT(page); } + + /** + * 导出订单 + * @param insertTime + * @param orderNum + * @param orderSource + * @param userName + * @param userPhone + * @param passengers + * @param passengersPhone + * @param driver + * @param state + * @param request + * @param response + */ + @GetMapping("/export") + public void export(String insertTime, + String orderNum, + Integer orderSource, + String userName, + String userPhone, + String passengers, + String passengersPhone, + String driver, + Integer state, HttpServletRequest request, HttpServletResponse response){ + String beginTime = null; + String endTime = null; + if (SinataUtil.isNotEmpty(insertTime)){ + String[] timeArray = insertTime.split(" - "); + beginTime = timeArray[0]; + endTime = timeArray[1]; + } + Page<Map<String, Object>> page = new Page(1, 99999); + List<Map<String, Object>> taxiOrderList = tOrderTaxiService.getTaxiOrderList(page, beginTime, endTime, ShiroKit.getUser().getRoleType(), ShiroKit.getUser().getObjectId(), orderNum, orderSource, userName, userPhone, passengers, passengersPhone, driver, state); + + // 表格数据【封装】 + List<List<String>> dataList = new ArrayList<>(); + + // 列【封装】 + List<String> shellList = new ArrayList<String>(); + shellList.add("下单时间"); + shellList.add("订单编号"); + shellList.add("订单来源"); + shellList.add("乘车时间"); + shellList.add("下单用户昵称"); + shellList.add("下单用户手机"); + shellList.add("乘车用户姓名"); + shellList.add("乘车用户手机"); + shellList.add("起点"); + shellList.add("终点"); + shellList.add("接单司机"); + shellList.add("司机手机号"); + shellList.add("车辆所属机构"); + shellList.add("接单车辆"); + shellList.add("订单金额"); + shellList.add("司机抽成"); + shellList.add("状态"); + dataList.add(shellList); + + for (Map<String,Object> object : taxiOrderList){ + // 详细数据列【封装】 + shellList = new ArrayList<String>(); + if(SinataUtil.isNotEmpty(object.get("insertTime"))){ + shellList.add(DateUtil.formatDate(DateUtil.parse(object.get("insertTime").toString(),"YYYY-MM-dd HH:mm:ss.S"), "YYYY-MM-dd HH:mm")); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("orderNum"))){ + shellList.add(object.get("orderNum").toString()); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("orderSource"))){ + switch (object.get("orderSource").toString()){ + case "1": + shellList.add("APP下单"); + break; + case "2": + shellList.add("扫码下单"); + break; + case "3": + shellList.add("小程序下单"); + break; + case "4": + shellList.add("司机下单"); + break; + case "5": + shellList.add("调度下单"); + break; + case "6": + shellList.add("电话下单"); + break; + case "7": + shellList.add("95128电召"); + break; + } + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("travelTime"))){ + shellList.add(DateUtil.formatDate(DateUtil.parse(object.get("travelTime").toString(),"YYYY-MM-dd HH:mm:ss.S"), "YYYY-MM-dd HH:mm")); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("userName"))){ + shellList.add(object.get("userName").toString()); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("userPhone"))){ + shellList.add(object.get("userPhone").toString()); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("passengers"))){ + shellList.add(object.get("passengers").toString()); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("passengersPhone"))){ + shellList.add(object.get("passengersPhone").toString()); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("startAddress"))){ + shellList.add(object.get("startAddress").toString()); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("endAddress"))){ + shellList.add(object.get("endAddress").toString()); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("driver"))){ + shellList.add(object.get("driver").toString().split("-")[0]); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("driver"))){ + shellList.add(object.get("driver").toString().split("-")[1]); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("company"))){ + shellList.add(object.get("company").toString()); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("car"))){ + shellList.add(object.get("car").toString()); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("payMoney"))){ + shellList.add(object.get("payMoney").toString()); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("commission"))){ + shellList.add(object.get("commission").toString()); + }else{ + shellList.add("-"); + } + if(SinataUtil.isNotEmpty(object.get("state"))){ + switch (object.get("state").toString()){ + case "1": + shellList.add("待接单"); + break; + case "2": + shellList.add("待出发"); + break; + case "3": + shellList.add("待到达预约地点"); + break; + case "4": + shellList.add("待乘客上车"); + break; + case "5": + shellList.add("服务中"); + break; + case "6": + shellList.add("完成服务"); + break; + case "7": + shellList.add("待支付"); + break; + case "8": + shellList.add("待评价"); + break; + case "9": + shellList.add("已完成"); + break; + case "10": + shellList.add("已取消"); + break; + case "11": + shellList.add("改派中"); + break; + case "12": + shellList.add("取消待支付"); + break; + } + }else{ + shellList.add("-"); + } + dataList.add(shellList); + } + try { + // 调用工具类进行导出 + ExcelExportUtil.easySheet("出租车订单"+DateUtil.formatDate(new Date(), "YYYYMMddHHmmss"), "出租车订单", dataList,request, response); + + } catch (Exception e) { + e.printStackTrace(); + } + } /** * 选择司机列表 @@ -166,8 +468,6 @@ page.setRecords(tOrderTaxiService.getCanSelectTaxiDriverList(page,tOrderTaxi.getCompanyId(),name,phone)); return super.packForBT(page); } - - private ResultUtil resultUtil; /** * 获取订单轨迹 @@ -354,12 +654,12 @@ tOrderTaxi.setUserId(tUser.getId()); tOrderTaxi.setOrderNum(this.getOrderNum()); tOrderTaxi.setPlacementAddress(tOrderTaxi.getStartAddress()); - tOrderTaxi.setPlacementLon(Double.valueOf(s.get(0).split(",")[0])); - tOrderTaxi.setPlacementLat(Double.valueOf(s.get(0).split(",")[1])); - tOrderTaxi.setStartLon(Double.valueOf(s.get(0).split(",")[0])); - tOrderTaxi.setStartLat(Double.valueOf(s.get(0).split(",")[1])); - tOrderTaxi.setEndLon(Double.valueOf(e.get(0).split(",")[0])); - tOrderTaxi.setEndLat(Double.valueOf(e.get(0).split(",")[1])); + tOrderTaxi.setPlacementLon(Double.valueOf(s.get(0).split(",")[1])); + tOrderTaxi.setPlacementLat(Double.valueOf(s.get(0).split(",")[0])); + tOrderTaxi.setStartLon(Double.valueOf(s.get(0).split(",")[1])); + tOrderTaxi.setStartLat(Double.valueOf(s.get(0).split(",")[0])); + tOrderTaxi.setEndLon(Double.valueOf(e.get(0).split(",")[1])); + tOrderTaxi.setEndLat(Double.valueOf(e.get(0).split(",")[0])); tOrderTaxi.setMileage(0D); tOrderTaxi.setOrderMoney(new BigDecimal(0)); tOrderTaxi.setTravelMoney(new BigDecimal(0)); @@ -373,6 +673,7 @@ tOrderTaxi.setSubstitute(0); tOrderTaxi.setOrderSource(5); tOrderTaxi.setIsDelete(1); + tOrderTaxi.setPayManner(3); tOrderTaxiService.insert(tOrderTaxi); if(tOrderTaxi.getState() == 1){ //推送司机抢单 @@ -416,15 +717,22 @@ TSysPushOrder pushOrder = pushOrderService.querys(i, 2, query.getId()).get(0); //获取空闲司机 List<TDriver> list = driverService.queryIdleDriver(2, orderTaxi.getStartLon(), orderTaxi.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机 + System.out.println("空闲司机1"+list); if(list.size() > 0){ double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数 + System.out.println("空闲司机2"+driverProportion); + int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取) + System.out.println("空闲司机3"+lastIndex); lastIndex = lastIndex == 0 ? list.size() : lastIndex; list = list.subList(0, lastIndex);//获取空闲司机中占比数据 + System.out.println("空闲司机4"+list); for(TDriver driver : list){//开始进行推送 //查询是否在限制推单范围内 boolean bo = false; + System.out.println("integers"+integers); for(Integer integer : integers){ + System.out.println("距离"+integer); if(integer.compareTo(driver.getId()) == 0){ bo = true; break; @@ -433,7 +741,9 @@ if(bo){ continue; } + System.out.println("推送1"); pushUtil.pushOrderState(2, driver.getId(), orderTaxi.getId(), 2, orderTaxi.getState(), pushOrder.getPushTime()); + System.out.println("推送2"); } } Thread.sleep(pushOrder.getPushTime() * 1000);//设置等待时间 -- Gitblit v1.7.1