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

修改自由车辆逻辑

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