提交 d2412170 authored 作者: liuhaiquan's avatar liuhaiquan

修改自由车辆逻辑

上级 931af657
...@@ -27,7 +27,7 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe ...@@ -27,7 +27,7 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe
Optional<OrderGoodsTruckBind> getValidByOrderGoodsNoAndTruckNo(String truckNo); Optional<OrderGoodsTruckBind> getValidByOrderGoodsNoAndTruckNo(String truckNo);
Optional<List<OrderGoodsTruckBind>> getValidByTruckNo(String truckNo); Optional<List<OrderGoodsTruckBind>> getValidByTruckNo(String truckNo);
Optional<List<OrderGoodsTruckBind>> selectListByTruckNo(List<String> truckList); List<String> selectListByTruckNo(List<String> truckList);
void updateOrderGoodsBindStatus(String orderGoodsNo, Integer code); void updateOrderGoodsBindStatus(String orderGoodsNo, Integer code);
......
...@@ -2,7 +2,6 @@ package com.clx.performance.dao.impl; ...@@ -2,7 +2,6 @@ package com.clx.performance.dao.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.clx.performance.dao.OrderGoodsTruckBindDao; import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.enums.OrderGoodsTruckBindEnum; import com.clx.performance.enums.OrderGoodsTruckBindEnum;
import com.clx.performance.mapper.OrderGoodsTruckBindMapper; import com.clx.performance.mapper.OrderGoodsTruckBindMapper;
...@@ -75,10 +74,8 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM ...@@ -75,10 +74,8 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
@Override @Override
public Optional<List<OrderGoodsTruckBind>> selectListByTruckNo(List<String> truckList) { public List<String> selectListByTruckNo(List<String> truckList) {
return Optional.ofNullable(baseMapper.selectList(new QueryWrapper<OrderGoodsTruckBind>().lambda() return baseMapper.selectListByTruckNo(truckList);
.eq(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.NORMAL.getCode())
.in(OrderGoodsTruckBind::getTruckNo,truckList).select(OrderGoodsTruckBind::getOrderGoodsNo)));
} }
@Override @Override
......
package com.clx.performance.mapper; package com.clx.performance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.model.OrderGoodsDriverTruck;
import com.clx.performance.model.OrderGoodsTruckBind; import com.clx.performance.model.OrderGoodsTruckBind;
import com.clx.performance.sqlProvider.OrderGoodsTruckBindSqlProvider; import com.clx.performance.sqlProvider.OrderGoodsTruckBindSqlProvider;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
...@@ -27,7 +26,8 @@ public interface OrderGoodsTruckBindMapper extends BaseMapper<OrderGoodsTruckBin ...@@ -27,7 +26,8 @@ public interface OrderGoodsTruckBindMapper extends BaseMapper<OrderGoodsTruckBin
@Select("select truck_no from order_goods_truck_bind where order_goods_no=#{orderGoodsNo}") @Select("select truck_no from order_goods_truck_bind where order_goods_no=#{orderGoodsNo}")
List<Integer> getTrucksByOrderGoodsNo(@Param("orderGoodsNo") String orderGoodsNo); List<Integer> getTrucksByOrderGoodsNo(@Param("orderGoodsNo") String orderGoodsNo);
List<OrderGoodsDriverTruck> selectListByTruckNo(List<OrderGoodsDriverTruck> truckList); @SelectProvider(type = OrderGoodsTruckBindSqlProvider.class, method = "selectListByTruckNo")
List<String> selectListByTruckNo(List<String> truckList);
@SelectProvider(type = OrderGoodsTruckBindSqlProvider.class, method = "findUnreleasedTruck") @SelectProvider(type = OrderGoodsTruckBindSqlProvider.class, method = "findUnreleasedTruck")
......
package com.clx.performance.service.impl; package com.clx.performance.service.impl;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.order.enums.OrderEnum; import com.clx.order.enums.OrderEnum;
import com.clx.order.enums.ResultEnum; import com.clx.order.enums.VehicleUsageEnum;
import com.clx.order.feign.OrderFeign; import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignAddressVO; import com.clx.order.vo.feign.FeignAddressVO;
import com.clx.order.vo.feign.FeignOrderInfoVO; import com.clx.order.vo.feign.FeignOrderInfoVO;
import com.clx.performance.constant.RedisConstants;
import com.clx.performance.component.GoodsOrderTruckRecordComponent; import com.clx.performance.component.GoodsOrderTruckRecordComponent;
import com.clx.performance.constant.RedisConstants; import com.clx.performance.constant.RedisConstants;
import com.clx.performance.constant.RedissonConstants; import com.clx.performance.constant.RedissonConstants;
...@@ -46,7 +44,6 @@ import com.clx.performance.vo.pc.*; ...@@ -46,7 +44,6 @@ import com.clx.performance.vo.pc.*;
import com.clx.user.enums.driver.DriverInfoEnum; import com.clx.user.enums.driver.DriverInfoEnum;
import com.clx.user.vo.feign.DriverTruckInfoFeignVo; import com.clx.user.vo.feign.DriverTruckInfoFeignVo;
import com.clx.user.vo.feign.OwnerInfoFeignVO; import com.clx.user.vo.feign.OwnerInfoFeignVO;
import com.clx.user.vo.pc.driver.truck.DriverTruckVo;
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
import com.msl.common.enums.ResultCodeEnum; import com.msl.common.enums.ResultCodeEnum;
import com.msl.common.exception.ServiceSystemException; import com.msl.common.exception.ServiceSystemException;
...@@ -56,7 +53,6 @@ import com.msl.common.utils.LocalDateTimeUtils; ...@@ -56,7 +53,6 @@ import com.msl.common.utils.LocalDateTimeUtils;
import com.msl.common.utils.gps.GpsUtil; import com.msl.common.utils.gps.GpsUtil;
import com.msl.user.data.UserSessionData; import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil; import com.msl.user.utils.TokenUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -70,7 +66,6 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -70,7 +66,6 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.time.Duration;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
...@@ -385,8 +380,9 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -385,8 +380,9 @@ public class OrderChildServiceImpl implements OrderChildService {
// 更新货单数据 // 更新货单数据
updateOrderGoodsAmount(orderGoods, orderChild); updateOrderGoodsAmount(orderGoods, orderChild);
// 更新定向单状态 // 更新定向平台车状态,自由车状态不更新
updateOrderGoodsDirect(bind); updateOrderGoodsDirect(orderGoods,bind);
// 新增运单 // 新增运单
orderChildDao.saveEntity(orderChild); orderChildDao.saveEntity(orderChild);
...@@ -481,7 +477,7 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -481,7 +477,7 @@ public class OrderChildServiceImpl implements OrderChildService {
} }
// 更新定向派单 // 更新定向派单
updateOrderGoodsDirectReject(orderGoodsTruckBind); updateOrderGoodsDirectReject(orderGoods,orderGoodsTruckBind);
} }
@Override @Override
...@@ -1158,8 +1154,8 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1158,8 +1154,8 @@ public class OrderChildServiceImpl implements OrderChildService {
// 返回吨数 // 返回吨数
updateOrderGoodsAmountReturn(orderChild, orderGoods); updateOrderGoodsAmountReturn(orderChild, orderGoods);
// 取消定向 //取消车辆绑定
updateOrderGoodsDirectCancel(orderGoodsTruckBind); updateOrderGoodsDirectCancel(orderGoods,orderGoodsTruckBind);
orderChildDao.updateCancel(orderChild); orderChildDao.updateCancel(orderChild);
...@@ -1218,7 +1214,7 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1218,7 +1214,7 @@ public class OrderChildServiceImpl implements OrderChildService {
updateOrderGoodsAmountReturn(orderChild, orderGoods); updateOrderGoodsAmountReturn(orderChild, orderGoods);
// 取消定向 // 取消定向
updateOrderGoodsDirectCancel(orderGoodsTruckBind); updateOrderGoodsDirectCancel(orderGoods,orderGoodsTruckBind);
orderChildDao.updateCancel(orderChild); orderChildDao.updateCancel(orderChild);
...@@ -1455,11 +1451,13 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1455,11 +1451,13 @@ public class OrderChildServiceImpl implements OrderChildService {
/** /**
* 更新定向单状态 (接单) * 更新定向单状态 (接单)
*/ */
private void updateOrderGoodsDirect(OrderGoodsTruckBind orderGoodsTruckBind) { private void updateOrderGoodsDirect(OrderGoods orderGoods,OrderGoodsTruckBind orderGoodsTruckBind) {
if (orderGoodsTruckBind == null) { if (orderGoodsTruckBind == null) {
return; return;
} }
if(!Objects.equals(orderGoods.getVehicleUsage(), VehicleUsageEnum.Status.OWN.getCode())){
return;
}
orderGoodsTruckBind.setStatus(OrderGoodsTruckBind.Status.ORDER.getCode()); orderGoodsTruckBind.setStatus(OrderGoodsTruckBind.Status.ORDER.getCode());
orderGoodsTruckBindDao.updateStatus(orderGoodsTruckBind); orderGoodsTruckBindDao.updateStatus(orderGoodsTruckBind);
} }
...@@ -1467,7 +1465,11 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1467,7 +1465,11 @@ public class OrderChildServiceImpl implements OrderChildService {
/** /**
* 更新定向派单状态 (拒绝) * 更新定向派单状态 (拒绝)
*/ */
private void updateOrderGoodsDirectReject(OrderGoodsTruckBind orderGoodsTruckBind) { private void updateOrderGoodsDirectReject(OrderGoods orderGoods,OrderGoodsTruckBind orderGoodsTruckBind) {
if(!Objects.equals(orderGoods.getVehicleUsage(),VehicleUsageEnum.Status.OWN.getCode())){
//定向平台车辆取消绑定,自由车辆状态绑定状态不变
return;
}
orderGoodsTruckBind.setStatus(OrderGoodsTruckBind.Status.CANCEL.getCode()); orderGoodsTruckBind.setStatus(OrderGoodsTruckBind.Status.CANCEL.getCode());
orderGoodsTruckBindDao.updateStatus(orderGoodsTruckBind); orderGoodsTruckBindDao.updateStatus(orderGoodsTruckBind);
goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoodsTruckBind.getOrderGoodsNo(), orderGoodsTruckBind.getTruckNo()); goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoodsTruckBind.getOrderGoodsNo(), orderGoodsTruckBind.getTruckNo());
...@@ -1476,10 +1478,14 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1476,10 +1478,14 @@ public class OrderChildServiceImpl implements OrderChildService {
/** /**
* 更新定向派单状态 (取消) * 更新定向派单状态 (取消)
*/ */
private void updateOrderGoodsDirectCancel(OrderGoodsTruckBind orderGoodsTruckBind) { private void updateOrderGoodsDirectCancel(OrderGoods orderGoods,OrderGoodsTruckBind orderGoodsTruckBind) {
if (orderGoodsTruckBind == null) { if (orderGoodsTruckBind == null) {
return; return;
} }
if(!Objects.equals(orderGoods.getVehicleUsage(),VehicleUsageEnum.Status.OWN.getCode())){
//定向平台车辆取消绑定,自由车辆状态绑定状态不变
return;
}
orderGoodsTruckBind.setStatus(OrderGoodsTruckBind.Status.CANCEL.getCode()); orderGoodsTruckBind.setStatus(OrderGoodsTruckBind.Status.CANCEL.getCode());
orderGoodsTruckBindDao.updateStatus(orderGoodsTruckBind); orderGoodsTruckBindDao.updateStatus(orderGoodsTruckBind);
......
...@@ -170,7 +170,7 @@ public class OrderGoodsServiceImpl implements OrderGoodsService { ...@@ -170,7 +170,7 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
List<String> truckNoList = new ArrayList<>(); List<String> truckNoList = new ArrayList<>();
//查询当前用户是否是 //查询当前用户是否是
Long driverUserNo = orderGoodsListParam.getDriverUserNo(); Long driverUserNo = orderGoodsListParam.getDriverUserNo();
Result<List<String>> ownTruckByUserNo = userClxFeign.getOwnTruckByUserNo(driverUserNo); Result<List<String>> ownTruckByUserNo = userClxFeign.getOwnTruckByUserNo(driverUserNo);
log.info("通过用户编号:{} 查询本人车辆,查询结果:{}", driverUserNo, JSON.toJSONString(ownTruckByUserNo)); log.info("通过用户编号:{} 查询本人车辆,查询结果:{}", driverUserNo, JSON.toJSONString(ownTruckByUserNo));
...@@ -186,14 +186,13 @@ public class OrderGoodsServiceImpl implements OrderGoodsService { ...@@ -186,14 +186,13 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
log.warn("用户编号:{},查询车主车辆和作为司机的车辆全未查询到数据", driverUserNo); log.warn("用户编号:{},查询车主车辆和作为司机的车辆全未查询到数据", driverUserNo);
return new Page<>(); return new Page<>();
} }
Optional<List<OrderGoodsTruckBind>> orderGoodsDriverTrucks = orderGoodsTruckBindDao.selectListByTruckNo( //自有车辆的货单接单之后还可以再次看到
List<String> orderGoodsNoList = orderGoodsTruckBindDao.selectListByTruckNo(
truckNoList); truckNoList);
if (!orderGoodsDriverTrucks.isPresent() || orderGoodsDriverTrucks.get().isEmpty()) { if (CollectionUtils.isEmpty(orderGoodsNoList)) {
log.warn("用户编号:{},无专属单", driverUserNo); log.warn("用户编号:{},无专属单", driverUserNo);
return new Page<>(); return new Page<>();
} }
List<String> orderGoodsNoList = orderGoodsDriverTrucks.get().stream().map(OrderGoodsTruckBind::getOrderGoodsNo).collect(Collectors.toList());
return orderGoodsDao.exclusiveOrderPageGoodsList(orderGoodsListParam, orderGoodsNoList); return orderGoodsDao.exclusiveOrderPageGoodsList(orderGoodsListParam, orderGoodsNoList);
} }
} }
......
package com.clx.performance.sqlProvider; package com.clx.performance.sqlProvider;
import com.clx.order.enums.VehicleUsageEnum;
import com.clx.performance.enums.OrderGoodsTruckBindEnum; import com.clx.performance.enums.OrderGoodsTruckBindEnum;
import org.apache.ibatis.jdbc.SQL; import org.apache.ibatis.jdbc.SQL;
import java.util.ArrayList;
import java.util.List; import java.util.List;
public class OrderGoodsTruckBindSqlProvider { public class OrderGoodsTruckBindSqlProvider {
...@@ -33,5 +35,23 @@ public class OrderGoodsTruckBindSqlProvider { ...@@ -33,5 +35,23 @@ public class OrderGoodsTruckBindSqlProvider {
}}.toString(); }}.toString();
} }
public String selectListByTruckNo(List<String> truckList){
return new SQL(){{
SELECT(" a.order_goods_no ");
FROM("order_goods_truck_bind a");
LEFT_OUTER_JOIN("order_goods b on a.order_goods_no = b.order_goods_no");
WHERE("a.truck_no IN (" + String.join(",", truckList) + ")" );
WHERE("b.vehicle_usage = " + VehicleUsageEnum.Status.OWN.getCode() + " or a.`status` =" + OrderGoodsTruckBindEnum.Status.NORMAL.getCode());
}}.toString();
}
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("京A11111");
list.add("京A222");
String join = ;
System.out.println(join);
}
} }
package com.clx.performance.strategy; package com.clx.performance.strategy;
import com.clx.order.enums.VehicleUsageEnum;
import com.clx.performance.param.pc.OrderGoodsChildParams; import com.clx.performance.param.pc.OrderGoodsChildParams;
import com.clx.performance.param.pc.OrderGoodsParams; import com.clx.performance.param.pc.OrderGoodsParams;
import com.clx.order.enums.OrderStopEnum; import com.clx.order.enums.OrderStopEnum;
...@@ -12,15 +13,13 @@ import com.clx.performance.utils.SpringContextUtils; ...@@ -12,15 +13,13 @@ import com.clx.performance.utils.SpringContextUtils;
import com.msl.common.exception.ServiceSystemException; import com.msl.common.exception.ServiceSystemException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.amqp.core.Message; import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder; import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.HashSet; import java.util.*;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Slf4j @Slf4j
...@@ -48,7 +47,8 @@ public abstract class GoodsOrderStrategy { ...@@ -48,7 +47,8 @@ public abstract class GoodsOrderStrategy {
List<OrderGoodsChildParams> orderGoodsChildParams = orderGoodsParams.getOrderGoodsChildParams(); List<OrderGoodsChildParams> orderGoodsChildParams = orderGoodsParams.getOrderGoodsChildParams();
Set<String> set = new HashSet<>(); Set<String> set = new HashSet<>();
for (OrderGoodsChildParams item : orderGoodsChildParams) { for (OrderGoodsChildParams item : orderGoodsChildParams) {
if (CollectionUtils.isNotEmpty(item.getTruckList())) { //定向车自由车辆不做拦截操作
if (!StringUtils.equals(item.getVehicleUsage(),String.valueOf(VehicleUsageEnum.Status.OWN.getCode())) && CollectionUtils.isNotEmpty(item.getTruckList())) {
int lastSize = set.size() + item.getTruckList().size(); int lastSize = set.size() + item.getTruckList().size();
set.addAll(item.getTruckList()); set.addAll(item.getTruckList());
if (!Objects.equals(lastSize, set.size())) { if (!Objects.equals(lastSize, set.size())) {
...@@ -63,8 +63,7 @@ public abstract class GoodsOrderStrategy { ...@@ -63,8 +63,7 @@ public abstract class GoodsOrderStrategy {
if (CollectionUtils.isNotEmpty(binds)) { if (CollectionUtils.isNotEmpty(binds)) {
List<String> repeatBind = binds.stream().map(OrderGoodsTruckBind::getTruckNo).collect(Collectors.toList()); List<String> repeatBind = binds.stream().map(OrderGoodsTruckBind::getTruckNo).collect(Collectors.toList());
String trucks = String.join(", ", repeatBind); String trucks = String.join(", ", repeatBind);
throw new ServiceSystemException(ResultEnum.DATA_ERROR, "已被定向单绑定车辆:" + trucks); throw new ServiceSystemException(ResultEnum.DATA_ERROR, "已被定向单绑定车辆:" + trucks); }
}
} }
//根据不同的订单类型创建不同的货单 //根据不同的订单类型创建不同的货单
LocalDateTime sendLazyTime = goodsOrderProcess(orderGoodsParams, orderInfo, now); LocalDateTime sendLazyTime = goodsOrderProcess(orderGoodsParams, orderInfo, now);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论