提交 e3a2d699 authored 作者: 刘海泉's avatar 刘海泉

取消定向车辆的逻辑

上级 75b8ddd8
......@@ -69,4 +69,6 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe
void batchUpdateBindTruckList(String orderGoodsNo, Integer code, List<String> truckNo);
List<OrderGoodsTruckBind> queryNotOrderTruck(List<String> cancelTruckBindOrderGoodsNoList);
void batchCancelTruckList(List<OrderGoodsTruckBind> updateList);
}
......@@ -231,4 +231,9 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
return baseMapper.selectList(lQrWrapper().in(OrderGoodsTruckBind::getOrderGoodsNo, cancelTruckBindOrderGoodsNoList)
.eq(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.NORMAL.getCode()));
}
@Override
public void batchCancelTruckList(List<OrderGoodsTruckBind> updateList) {
baseMapper.batchCancelTruckList(updateList);
}
}
......@@ -38,4 +38,8 @@ public interface OrderGoodsTruckBindMapper extends BaseMapper<OrderGoodsTruckBin
@SelectProvider(type = OrderGoodsTruckBindSqlProvider.class, method = "queryOrderGoodsTruckNum")
List<OrderGoodsBindTruckNumDTO> queryOrderGoodsTruckNum(List<String> fleetNoList);
@SelectProvider(type = OrderGoodsTruckBindSqlProvider.class, method = "batchCancelTruckList")
void batchCancelTruckList(List<OrderGoodsTruckBind> updateList);
}
\ No newline at end of file
package com.clx.performance.service;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildLog;
import java.util.List;
......@@ -15,5 +16,5 @@ public interface OrderChildLogService {
void saveBatchOrderChildLog(List<OrderChildLog> logs);
void batchSaveCarrierOrderChildLogs(List<OrderChildLog> logs);
void batchSaveCarrierOrderChildLogs(List<OrderChild> canCancelOrderChildList,Long userNo,String userName);
}
......@@ -2,12 +2,14 @@ package com.clx.performance.service.impl;
import com.clx.performance.dao.OrderChildLogDao;
import com.clx.performance.enums.OrderChildLogEnum;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildLog;
import com.clx.performance.service.OrderChildLogService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Slf4j
......@@ -54,7 +56,20 @@ public class OrderChildLogServiceImpl implements OrderChildLogService {
}
@Override
public void batchSaveCarrierOrderChildLogs(List<OrderChildLog> logs) {
public void batchSaveCarrierOrderChildLogs(List<OrderChild> canCancelOrderChildList,Long userNo,String userName) {
List<OrderChildLog> logs = new ArrayList<>();
OrderChildLog orderChildLog;
for (OrderChild child : canCancelOrderChildList) {
orderChildLog = new OrderChildLog();
orderChildLog.setChildNo(child.getChildNo());
orderChildLog.setType(OrderChildLogEnum.Type.PLATFORM_CANCEL.getCode());
orderChildLog.setRemark(OrderChildLogEnum.Type.PLATFORM_CANCEL.getMsg());
orderChildLog.setCreateType(OrderChildLogEnum.CreateType.PLATFORM.getCode());
orderChildLog.setCreateBy(userNo);
orderChildLog.setCreateName(userName);
logs.add(orderChildLog);
}
orderChildLogDao.saveBatchList(logs);
}
}
......@@ -240,6 +240,8 @@ public class OrderChildServiceImpl implements OrderChildService {
private Environment environment;
@Autowired
private DocumentFeign documentFeign;
@Autowired
private OrderWeightService orderWeightService;
@PostConstruct
public void init(){
......@@ -412,18 +414,8 @@ public class OrderChildServiceImpl implements OrderChildService {
}
}
// 库存验证
if (orderGoods.getResidueTransportWeight().compareTo(new BigDecimal("35")) < 0) {
throw new ServiceSystemException(PerformanceResultEnum.ORDER_WEIGHT_LACK);
}
// if (orderGoods.getResidueTransportWeight().compareTo(truckLoad) < 0) {throw new ServiceSystemException
// (PerformanceResultEnum.ORDER_WEIGHT_LACK);}
// 订单数量限制
// 订单已拉运吨数
BigDecimal alreadyTransportWeight = orderGoodsDao.sumAlreadyTransportWeightByOrderNo(orderGoods.getOrderNo());
if (alreadyTransportWeight.compareTo(orderInfo.getTransportWeight().subtract(new BigDecimal("35"))) > 0){
// 验证是否有足量去接该运单
if(judgeNotEnoughWeightOrdered(orderGoods.getResidueTransportWeight(),orderInfo.getOrderNo())){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_WEIGHT_LACK);
}
......@@ -549,6 +541,18 @@ public class OrderChildServiceImpl implements OrderChildService {
return result;
}
//判断当前运单的吨数,货单剩余量是否足够,不足够直接拦截,足够需要判断订单是否还有拉运量
public boolean judgeNotEnoughWeightOrdered(BigDecimal orderGoodsResidueWeight,String orderNo){
//货单无剩余量
if(orderGoodsResidueWeight.compareTo(BigDecimal.ZERO) <= 0 ){
return true;
}
//订单无剩余量
BigDecimal orderResidueWeight = orderWeightService.getOrderResidueWeight(orderNo);
return orderResidueWeight.compareTo(BigDecimal.ZERO) <= 0;
}
/**
* @Author kavin
* @Description 计算接单时,车辆距离发货地和收货地的用时时间
......@@ -3065,25 +3069,15 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setStatus(OrderChildEnum.Status.PLATFORM_CANCEL.getCode());
});
//取消运单
orderChildDao.batchUpdateCancel(canCancelOrderChildList);
// 取消定向
batchUpdateOrderGoodsDirectCancel(canCancelOrderChildList);
List<OrderChildLog> logs = new ArrayList<>();
OrderChildLog orderChildLog;
for (OrderChild child : canCancelOrderChildList) {
orderChildLog = new OrderChildLog();
orderChildLog.setChildNo(child.getChildNo());
orderChildLog.setType(OrderChildLogEnum.Type.PLATFORM_CANCEL.getCode());
orderChildLog.setRemark(OrderChildLogEnum.Type.PLATFORM_CANCEL.getMsg());
orderChildLog.setCreateType(OrderChildLogEnum.CreateType.PLATFORM.getCode());
orderChildLog.setCreateBy(loginUserInfo.getUserNo());
orderChildLog.setCreateName(loginUserInfo.getUserName());
logs.add(orderChildLog);
}
// 批量保存日志
orderChildLogService.batchSaveCarrierOrderChildLogs(logs);
orderChildLogService.batchSaveCarrierOrderChildLogs(canCancelOrderChildList,loginUserInfo.getUserNo(),loginUserInfo.getUserName());
// 承运取消后置逻辑
canCancelOrderChildList.forEach(orderChild-> orderChildPostService.orderChildCancelByCarrier(orderChild,
......@@ -3166,4 +3160,36 @@ public class OrderChildServiceImpl implements OrderChildService {
}
driverService.batchUpdateDriverAndTruckStatusCancel(paramList);
}
private void batchUpdateOrderGoodsDirectCancel(List<OrderChild> list) {
Map<String, List<OrderChild>> orderGoodsChildListMap = list.stream().collect(
Collectors.groupingBy(OrderChild::getOrderGoodsNo));
List<String> orderGoodsList = new ArrayList<>(orderGoodsChildListMap.keySet());
List<OrderGoods> orderGoods = orderGoodsDao.listInField(OrderGoods::getOrderGoodsNo, orderGoodsList);
List<OrderGoodsTruckBind> updateList = new ArrayList<>();
OrderGoodsTruckBind update;
for (OrderGoods orderGood : orderGoods) {
if(Objects.equals(orderGood.getVehicleUsage(),VehicleUsageEnum.Status.OWN.getCode())){
//定向平台车辆取消绑定,自由车辆状态绑定状态不变
continue;
}
List<OrderChild> orderChildList = orderGoodsChildListMap.get(orderGood.getOrderGoodsNo());
for (OrderChild item : orderChildList) {
update = new OrderGoodsTruckBind();
update.setStatus(OrderGoodsTruckBind.Status.CANCEL.getCode());
update.setOrderNo(item.getOrderNo());
update.setOrderGoodsNo(item.getOrderGoodsNo());
update.setTruckNo(item.getTruckNo());
updateList.add(update);
//删除绑定的缓存
goodsOrderTruckRecordComponent.deleteTruckRecord(item.getOrderGoodsNo(), item.getTruckNo());
}
}
if(CollectionUtils.isNotEmpty(updateList)){
orderGoodsTruckBindDao.batchCancelTruckList(updateList);
}
}
}
......@@ -2,6 +2,7 @@ package com.clx.performance.sqlProvider;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.enums.OrderGoodsTruckBindEnum;
import com.clx.performance.model.OrderGoodsTruckBind;
import org.apache.ibatis.jdbc.SQL;
import java.util.List;
......@@ -59,4 +60,19 @@ public class OrderGoodsTruckBindSqlProvider {
GROUP_BY("a.order_goods_no");
}}.toString();
}
public String batchCancelTruckList(List<OrderGoodsTruckBind> updateList){
StringJoiner sj = new StringJoiner("; ");
for(OrderGoodsTruckBind bind : updateList){
sj.add("update order_goods_truck_bind " +
"set " +
"status = " + bind.getStatus() + " " +
"where order_no = '" + bind.getOrderNo()+ "' " +
"and order_goods_no = '" + bind.getOrderGoodsNo() + "' " +
"and truck_no = '" + bind.getTruckNo() + "'"
);
}
return sj.toString();
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论