From 8580866e175ad0050ee9c5ea3f757856fc242c39 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期五, 09 五月 2025 10:50:17 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/CallingAreaMapper.java | 12 +++ UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/CallingArea.java | 62 +++++++++++++++ UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICallingAreaService.java | 20 +++++ UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/controller/TaxiCallbackController.java | 44 +++++++---- UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java | 1 UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICompanyCityService.java | 3 UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CallingAreaServiceImpl.java | 25 ++++++ UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java | 17 ++++ UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CompanyCityServiceImpl.java | 13 +++ 9 files changed, 181 insertions(+), 16 deletions(-) diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/CallingAreaMapper.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/CallingAreaMapper.java new file mode 100644 index 0000000..f34e070 --- /dev/null +++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/CallingAreaMapper.java @@ -0,0 +1,12 @@ +package com.stylefeng.guns.modular.system.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.stylefeng.guns.modular.system.model.CallingArea; +import com.stylefeng.guns.modular.system.model.OpenCity; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface CallingAreaMapper extends BaseMapper<CallingArea> { + +} diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/CallingArea.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/CallingArea.java new file mode 100644 index 0000000..f7c0ffd --- /dev/null +++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/CallingArea.java @@ -0,0 +1,62 @@ +package com.stylefeng.guns.modular.system.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; + +/** + * 电召区域 + */ +@TableName("t_calling_area") +public class CallingArea { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + @TableField("id") + private Integer id; + /** + * 区域 1.咸安 2.通山 3.崇阳 5.通城 6.赤壁 7.嘉鱼 + */ + @TableField("area") + private String area; + /** + * 区域code + */ + @TableField("areaCode") + private String areaCode; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getArea() { + return area; + } + + public void setArea(String area) { + this.area = area; + } + + public String getAreaCode() { + return areaCode; + } + + public void setAreaCode(String areaCode) { + this.areaCode = areaCode; + } + + @Override + public String toString() { + return "CallingArea{" + + "id=" + id + + ", area='" + area + '\'' + + ", areaCode='" + areaCode + '\'' + + '}'; + } +} diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICallingAreaService.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICallingAreaService.java new file mode 100644 index 0000000..ca45779 --- /dev/null +++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICallingAreaService.java @@ -0,0 +1,20 @@ +package com.stylefeng.guns.modular.system.service; + +import com.baomidou.mybatisplus.service.IService; +import com.stylefeng.guns.modular.system.model.CallingArea; +import com.stylefeng.guns.modular.system.model.Notice; + +import java.util.List; +import java.util.Map; + +/** + * <p> + * 通知表 服务类 + * </p> + * + * @author stylefeng123 + * @since 2018-02-22 + */ +public interface ICallingAreaService extends IService<CallingArea> { + +} diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICompanyCityService.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICompanyCityService.java index 8719561..260797d 100644 --- a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICompanyCityService.java +++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICompanyCityService.java @@ -4,6 +4,8 @@ import com.stylefeng.guns.modular.system.model.Company; import com.stylefeng.guns.modular.system.model.CompanyCity; +import java.util.List; + public interface ICompanyCityService extends IService<CompanyCity> { @@ -24,4 +26,5 @@ * @throws Exception */ Company query(String code) throws Exception; + List<Company> queryCall(String code) throws Exception; } diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java index 6f879e7..96acd4e 100644 --- a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java +++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java @@ -20,6 +20,7 @@ */ List<Driver> queryIdleDriver(Integer type, Double lon, Double lat, Double distance, Integer companyId) throws Exception; List<Driver> queryIdleDriverAll(Integer type, Double lon, Double lat, Double distance, Integer companyId) throws Exception; + List<Driver> queryIdleDriverAllCall(Integer type, Double lon, Double lat, Double distance, List<Integer> companyIds) throws Exception; /** diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CallingAreaServiceImpl.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CallingAreaServiceImpl.java new file mode 100644 index 0000000..4f58b21 --- /dev/null +++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CallingAreaServiceImpl.java @@ -0,0 +1,25 @@ +package com.stylefeng.guns.modular.system.service.impl; + +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.stylefeng.guns.modular.system.dao.CallingAreaMapper; +import com.stylefeng.guns.modular.system.dao.NoticeMapper; +import com.stylefeng.guns.modular.system.model.CallingArea; +import com.stylefeng.guns.modular.system.model.Notice; +import com.stylefeng.guns.modular.system.service.ICallingAreaService; +import com.stylefeng.guns.modular.system.service.INoticeService; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +/** + * <p> + * 通知表 服务实现类 + * </p> + * + * @author stylefeng123 + * @since 2018-02-22 + */ +@Service +public class CallingAreaServiceImpl extends ServiceImpl<CallingAreaMapper, CallingArea> implements ICallingAreaService { +} diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CompanyCityServiceImpl.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CompanyCityServiceImpl.java index d8c87a5..d1e4ff8 100644 --- a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CompanyCityServiceImpl.java +++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CompanyCityServiceImpl.java @@ -68,4 +68,17 @@ } return null; } + /** + * 根据行政编号获取所属企业 + * @param code + * @return + * @throws Exception + */ + @Override + public List<Company> queryCall(String code) throws Exception { + String province = code.substring(0, 2) + "0000"; + String city = code.substring(0, 4) + "00"; + List<Company> query = companyMapper.query(province, city, code); + return query; + } } diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java index 2161e58..5a77d5b 100644 --- a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java +++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java @@ -14,11 +14,13 @@ import com.stylefeng.guns.modular.system.warpper.BaseWarpper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; @Service public class DriverServiceImpl extends ServiceImpl<DriverMapper, Driver> implements IDriverService { @@ -89,6 +91,21 @@ return list; } + @Override + public List<Driver> queryIdleDriverAllCall(Integer type, Double lon, Double lat, Double distance, List<Integer> companyIds) throws Exception { + if(CollectionUtils.isEmpty(companyIds)){ + System.err.println("-----未查询到该区域分公司进行推单------"); + return new ArrayList<>(); + } + companyIds = companyIds.stream().distinct().collect(Collectors.toList()); + List<Driver> allDrivers = new ArrayList<>(); + for (Integer companyId : companyIds) { + List<Driver> drivers = driverMapper.queryIdleDriver(type, companyId); + allDrivers.addAll(drivers); + } + System.err.println("-----符合条件的司机"+allDrivers); + return allDrivers; + } /** diff --git a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/controller/TaxiCallbackController.java b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/controller/TaxiCallbackController.java index aa82144..b0106f4 100644 --- a/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/controller/TaxiCallbackController.java +++ b/UserOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/controller/TaxiCallbackController.java @@ -1,14 +1,9 @@ package com.stylefeng.guns.modular.taxi.controller; import cn.hutool.json.JSONObject; -import com.stylefeng.guns.modular.system.model.Company; -import com.stylefeng.guns.modular.system.model.Driver; -import com.stylefeng.guns.modular.system.model.PushOrder; -import com.stylefeng.guns.modular.system.model.UserInfo; -import com.stylefeng.guns.modular.system.service.ICompanyService; -import com.stylefeng.guns.modular.system.service.IDriverService; -import com.stylefeng.guns.modular.system.service.IPushOrderService; -import com.stylefeng.guns.modular.system.service.IUserInfoService; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.stylefeng.guns.modular.system.model.*; +import com.stylefeng.guns.modular.system.service.*; import com.stylefeng.guns.modular.system.util.PushUtil; import com.stylefeng.guns.modular.system.util.ResultUtil; import com.stylefeng.guns.modular.system.util.SignVerificationUtil; @@ -25,6 +20,8 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; /** * 支付回调控制器 @@ -46,6 +43,10 @@ private OrderTaxiMapper orderTaxiMapper; @Autowired private IUserInfoService userInfoService; + @Autowired + private ICallingAreaService callingAreaService; + @Autowired + private ICompanyCityService companyCityService; @ResponseBody @PostMapping("/callback") @ApiOperation(value = "AI回调", tags = {"AI回调"}, notes = "") @@ -66,10 +67,11 @@ // 遍历列表以获取每个结果的地址信息 OrderTaxi orderTaxi = new OrderTaxi(); - String audioPath = req.getStr("audioPath"); String phone = req.getStr("phone"); JSONObject outputParam = req.getJSONObject("outputParam"); String area = outputParam.getStr("area"); + + System.err.println("phone++++"+phone); String downloadUrl = "" ; @@ -91,8 +93,15 @@ } catch (Exception e) { throw new RuntimeException(e); } - // 打印或处理地址信息 - System.out.println("地址信息:" + area); + // 查询电召区域 + CallingArea callingArea = callingAreaService.selectOne(new EntityWrapper<CallingArea>().eq("areaCode", area)); + if(Objects.nonNull(callingArea)){ + // 打印或处理地址信息 + System.out.println("地址信息:" + callingArea.getArea()); + orderTaxi.setStartAddress(callingArea.getArea()); + }else { + return ResultUtil.error("电召未开通该区域城市"); + } //创建订单 orderTaxi.setAudioLinkUrl(downloadUrl); orderTaxi.setInsertTime(new Date()); @@ -103,7 +112,6 @@ orderTaxi.setPassengersPhone(phone); orderTaxi.setTravelTime(new Date()); orderTaxi.setOrderType(1); - orderTaxi.setStartAddress(area); orderTaxiMapper.insert(orderTaxi); new Thread(new Runnable() { @Override @@ -117,7 +125,7 @@ if(orderTaxi.getState() == 1){ //推送司机抢单 try { - this.pushOrder(orderTaxi); + this.pushOrder(orderTaxi,callingArea); }catch (Exception e){ } } @@ -132,7 +140,7 @@ } public static List<Integer> orderIds = new ArrayList<>(); - public void pushOrder(OrderTaxi orderTaxi) throws Exception{ + public void pushOrder(OrderTaxi orderTaxi,CallingArea callingArea) throws Exception{ new Thread(new Runnable() { @Override public void run() { @@ -140,16 +148,20 @@ orderIds.add(orderTaxi.getId());//添加记录,防止调用接口重复提醒无人接单 Company query = companyService.selectById(1);//获取起点所属分公司 List<PushOrder> querys = pushOrderService.querys(null, 2, query.getId());//获取需要推送的次数 + // 优先查询区域 + List<Company> companys = companyCityService.queryCall(callingArea.getAreaCode()); + System.err.println("根据区域查询出来的分公司======"+companys); + List<Integer> companyIds = companys.stream().map(Company::getId).collect(Collectors.toList()); for(int i = 1; i <= querys.size(); i++){ PushOrder pushOrder = pushOrderService.querys(i, 2, query.getId()).get(0); //获取空闲司机 - List<Driver> list = driverService.queryIdleDriverAll(2, orderTaxi.getStartLon(), orderTaxi.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机 + List<Driver> list = driverService.queryIdleDriverAllCall(2, orderTaxi.getStartLon(), orderTaxi.getStartLat(), pushOrder.getPushDistance(), companyIds);//所有附近空闲司机 +// List<Driver> list = driverService.queryIdleDriverAll(2, orderTaxi.getStartLon(), orderTaxi.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机 if(list.size() > 0){ double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数 int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取) list = list.subList(0, lastIndex);//获取空闲司机中占比数据 for(Driver driver : list){//开始进行推送 - pushUtil.pushOrderStateVedio(2, driver.getId(), orderTaxi.getId(), 2, orderTaxi.getState(), pushOrder.getPushTime(),orderTaxi.getAudioLinkUrl()); } } -- Gitblit v1.7.1