提交 adf45dbe authored 作者: 李瑞鑫's avatar 李瑞鑫

Merge branch 'v17.3_youhua_20240615'

# Conflicts: # performance-web/src/main/java/com/clx/performance/service/OrderGoodsService.java
...@@ -140,7 +140,7 @@ public interface PerformanceFeign { ...@@ -140,7 +140,7 @@ public interface PerformanceFeign {
* @return * @return
*/ */
@PostMapping(value = {"clx-performance/feign/orderGoods/cancelOrderGoods"}) @PostMapping(value = {"clx-performance/feign/orderGoods/cancelOrderGoods"})
Result<Object> cancelOrderGoods(@RequestBody @Validated CancelOrderGoodsParam param); Result<BigDecimal> cancelOrderGoods(@RequestBody @Validated CancelOrderGoodsParam param);
/** /**
* 更新挂单运费 * 更新挂单运费
......
...@@ -59,9 +59,8 @@ public class OrderGoodsFeignController { ...@@ -59,9 +59,8 @@ public class OrderGoodsFeignController {
@ApiOperation(value = "取消货单", notes = "<br>By:李瑞新") @ApiOperation(value = "取消货单", notes = "<br>By:李瑞新")
@PostMapping({"/cancelOrderGoods"}) @PostMapping({"/cancelOrderGoods"})
Result<Object> cancelOrderGoods(@RequestBody @Validated CancelOrderGoodsParam param) { Result<BigDecimal> cancelOrderGoods(@RequestBody @Validated CancelOrderGoodsParam param) {
orderGoodsService.cancelOrderGoods(param); return Result.ok(orderGoodsService.cancelOrderGoods(param));
return Result.ok();
} }
......
...@@ -2,6 +2,7 @@ package com.clx.performance.dao; ...@@ -2,6 +2,7 @@ package com.clx.performance.dao;
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.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.linewarn.LineWarnOrderChildStatisticsDTO; import com.clx.performance.dto.linewarn.LineWarnOrderChildStatisticsDTO;
import com.clx.performance.mapper.OrderChildMapper; import com.clx.performance.mapper.OrderChildMapper;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
...@@ -195,4 +196,6 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int ...@@ -195,4 +196,6 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
List<OrderChild> listByOrderNo(String orderNo,List<Integer> status); List<OrderChild> listByOrderNo(String orderNo,List<Integer> status);
void updateBatchOwnerCancel(List<String> childNos); void updateBatchOwnerCancel(List<String> childNos);
List<CancelOrderGoodsWeightDTO> statisticsCancelOrderGoodsWeight(List<String> childNos);
} }
package com.clx.performance.dao; package com.clx.performance.dao;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.model.OrderGoodsFleetOpenTruck; import com.clx.performance.model.OrderGoodsFleetOpenTruck;
import com.clx.performance.param.app.AppGoodsOrderSearchParam; import com.clx.performance.param.app.AppGoodsOrderSearchParam;
import com.clx.performance.param.pc.OrderGoodsEditParams; import com.clx.performance.param.pc.OrderGoodsEditParams;
...@@ -103,4 +104,8 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int ...@@ -103,4 +104,8 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
List<OrderGoodsFleetOpenTruck> queryProcessFleetOpenTruckList(); List<OrderGoodsFleetOpenTruck> queryProcessFleetOpenTruckList();
void cancelOrderGoods(String orderNo); void cancelOrderGoods(String orderNo);
void batchCancel(List<Integer> idList);
void batchCancelOrderGoods(List<CancelOrderGoodsWeightDTO> cancelOrderGoodsWeight);
} }
...@@ -64,4 +64,9 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe ...@@ -64,4 +64,9 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe
void updateTruckBindExpire(List<Integer> ids); void updateTruckBindExpire(List<Integer> ids);
List<OrderGoodsBindTruckNumDTO> queryOrderGoodsTruckNum(List<String> fleetNoList); List<OrderGoodsBindTruckNumDTO> queryOrderGoodsTruckNum(List<String> fleetNoList);
void batchUpdateBindTruckList(String orderGoodsNo, Integer code, List<String> truckNo);
List<OrderGoodsTruckBind> queryNotOrderTruck(List<String> cancelTruckBindOrderGoodsNoList);
} }
...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; ...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.performance.dao.OrderChildDao; import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.linewarn.LineWarnOrderChildStatisticsDTO; import com.clx.performance.dto.linewarn.LineWarnOrderChildStatisticsDTO;
import com.clx.performance.enums.OrderChildEnum; import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.mapper.OrderChildMapper; import com.clx.performance.mapper.OrderChildMapper;
...@@ -26,7 +27,6 @@ import org.springframework.stereotype.Repository; ...@@ -26,7 +27,6 @@ import org.springframework.stereotype.Repository;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
...@@ -650,4 +650,9 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild, ...@@ -650,4 +650,9 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
.set(OrderChild::getCancelRemark,"货主减少拉运吨数,系统自动取消") .set(OrderChild::getCancelRemark,"货主减少拉运吨数,系统自动取消")
); );
} }
@Override
public List<CancelOrderGoodsWeightDTO> statisticsCancelOrderGoodsWeight(List<String> childNos) {
return baseMapper.statisticsCancelOrderGoodsWeight(childNos);
}
} }
...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; ...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.performance.dao.OrderGoodsDao; import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.enums.OrderGoodsStatusEnum; import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.mapper.OrderGoodsMapper; import com.clx.performance.mapper.OrderGoodsMapper;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
...@@ -292,4 +293,16 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods, ...@@ -292,4 +293,16 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
.set(OrderGoods::getOrderGoodsStatus, OrderGoodsStatusEnum.Status.CANCEL.getCode()) .set(OrderGoods::getOrderGoodsStatus, OrderGoodsStatusEnum.Status.CANCEL.getCode())
); );
} }
@Override
public void batchCancel(List<Integer> idList) {
update(lUdWrapper()
.in(OrderGoods::getId, idList)
.set(OrderGoods::getOrderGoodsStatus, OrderGoodsStatusEnum.Status.CANCEL.getCode())
);
}
@Override
public void batchCancelOrderGoods(List<CancelOrderGoodsWeightDTO> cancelOrderGoodsWeight) {
baseMapper.batchCancelOrderGoods(cancelOrderGoodsWeight);
}
} }
...@@ -214,4 +214,21 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM ...@@ -214,4 +214,21 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
public List<OrderGoodsBindTruckNumDTO> queryOrderGoodsTruckNum(List<String> fleetNoList) { public List<OrderGoodsBindTruckNumDTO> queryOrderGoodsTruckNum(List<String> fleetNoList) {
return baseMapper.queryOrderGoodsTruckNum(fleetNoList); return baseMapper.queryOrderGoodsTruckNum(fleetNoList);
} }
@Override
public void batchUpdateBindTruckList(String orderGoodsNo, Integer code, List<String> truckNoList) {
update(lUdWrapper()
.set(OrderGoodsTruckBind::getStatus, code)
.eq(OrderGoodsTruckBind::getOrderGoodsNo, orderGoodsNo)
.in(OrderGoodsTruckBind::getTruckNo, truckNoList)
);
}
@Override
public List<OrderGoodsTruckBind> queryNotOrderTruck(List<String> cancelTruckBindOrderGoodsNoList) {
return baseMapper.selectList(lQrWrapper().in(OrderGoodsTruckBind::getOrderGoodsNo, cancelTruckBindOrderGoodsNoList)
.eq(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.NORMAL.getCode()));
}
} }
package com.clx.performance.dto;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
/**
* @ClassName CancelOrderGoodsWeightDTO
* @Description
* @Author kavin
* @Date 2024/7/2 15:38
* @Version 1.0
*/
@Getter
@Setter
public class CancelOrderGoodsWeightDTO {
private String orderGoodsNo;
private BigDecimal cancelWeight;
}
...@@ -3,6 +3,7 @@ package com.clx.performance.mapper; ...@@ -3,6 +3,7 @@ package com.clx.performance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
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.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.linewarn.LineWarnOrderChildStatisticsDTO; import com.clx.performance.dto.linewarn.LineWarnOrderChildStatisticsDTO;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.param.app.PageOrderChildOfDriverParam; import com.clx.performance.param.app.PageOrderChildOfDriverParam;
...@@ -168,4 +169,11 @@ public interface OrderChildMapper extends BaseMapper<OrderChild> { ...@@ -168,4 +169,11 @@ public interface OrderChildMapper extends BaseMapper<OrderChild> {
"</script>") "</script>")
List<LineWarnOrderChildStatisticsDTO>sumUnloadNumByOrderGoodsNoList(List<String> orderGoodsNoList); List<LineWarnOrderChildStatisticsDTO>sumUnloadNumByOrderGoodsNoList(List<String> orderGoodsNoList);
@Select("<script>select order_goods_no orderGoodsNo, sum(weight) cancelWeight from order_child " +
" where child_no " +
" in <foreach collection='list' item='item' open='(' separator=',' close=')'>#{item}</foreach> " +
" group by order_goods_no " +
"</script>")
List<CancelOrderGoodsWeightDTO> statisticsCancelOrderGoodsWeight(@Param("list") List<String> childNos);
} }
\ No newline at end of file
...@@ -3,6 +3,7 @@ package com.clx.performance.mapper; ...@@ -3,6 +3,7 @@ package com.clx.performance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
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.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.model.OrderGoodsFleetOpenTruck; import com.clx.performance.model.OrderGoodsFleetOpenTruck;
import com.clx.performance.param.app.AppGoodsOrderSearchParam; import com.clx.performance.param.app.AppGoodsOrderSearchParam;
import com.clx.performance.param.pc.OrderGoodsEditParams; import com.clx.performance.param.pc.OrderGoodsEditParams;
...@@ -100,4 +101,9 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> { ...@@ -100,4 +101,9 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
@SelectProvider(type = OrderGoodsSqlProvider.class, method = "queryProcessFleetOpenTruckList") @SelectProvider(type = OrderGoodsSqlProvider.class, method = "queryProcessFleetOpenTruckList")
List<OrderGoodsFleetOpenTruck> queryProcessFleetOpenTruckList(); List<OrderGoodsFleetOpenTruck> queryProcessFleetOpenTruckList();
@UpdateProvider(type = OrderGoodsSqlProvider.class, method = "batchCancelOrderGoods")
void batchCancelOrderGoods(List<CancelOrderGoodsWeightDTO> cancelOrderGoodsWeight);
} }
...@@ -104,7 +104,7 @@ public interface OrderGoodsService { ...@@ -104,7 +104,7 @@ public interface OrderGoodsService {
void saveBindTruck(DistributionTruckParam param); void saveBindTruck(DistributionTruckParam param);
void cancelOrderGoods(CancelOrderGoodsParam param);
void updateFrightPrice(String orderGoodsNo,BigDecimal pendingOrderFreight); void updateFrightPrice(String orderGoodsNo,BigDecimal pendingOrderFreight);
BigDecimal cancelOrderGoods(CancelOrderGoodsParam param);
} }
...@@ -20,6 +20,7 @@ import com.clx.performance.constant.RedissonConstants; ...@@ -20,6 +20,7 @@ import com.clx.performance.constant.RedissonConstants;
import com.clx.performance.dao.*; import com.clx.performance.dao.*;
import com.clx.performance.dao.breakcontract.BreakContractDriverRecordDao; import com.clx.performance.dao.breakcontract.BreakContractDriverRecordDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao; import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderChildExpectDTO; import com.clx.performance.dto.OrderChildExpectDTO;
import com.clx.performance.dto.gd.GdRouteDTO; import com.clx.performance.dto.gd.GdRouteDTO;
import com.clx.performance.dto.payment.PaymentDTO; import com.clx.performance.dto.payment.PaymentDTO;
...@@ -2657,11 +2658,10 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -2657,11 +2658,10 @@ public class OrderChildServiceImpl implements OrderChildService {
arriveBeforeStatus.add(OrderChildEnum.Status.PAY.getCode()); arriveBeforeStatus.add(OrderChildEnum.Status.PAY.getCode());
arriveBeforeStatus.add(OrderChildEnum.Status.GO_TO_SEND.getCode()); arriveBeforeStatus.add(OrderChildEnum.Status.GO_TO_SEND.getCode());
List<String> childNos;//取消运单
//未到达货源地之前运单(不包括取消) //未到达货源地之前运单(不包括取消)
List<OrderChild> arriveBeforeOrderChild = orderChildDao.listByOrderNo(param.getOrderNo(),arriveBeforeStatus); List<OrderChild> arriveBeforeOrderChild = orderChildDao.listByOrderNo(param.getOrderNo(),arriveBeforeStatus);
log.info("arriveBeforeOrderChild:{}",arriveBeforeOrderChild); log.info("arriveBeforeOrderChild:{}",arriveBeforeOrderChild);
if(orderedWeight.compareTo(availableWeight) > 0){//已挂吨数大于可拉运吨数 取消未到达货源地的运单 if(orderedWeight.compareTo(availableWeight) > 0){ //已挂吨数大于可拉运吨数 取消未到达货源地的运单
log.info("已挂吨数大于可拉运吨数,取消未到达货源地的运单:{}",orderedWeight.compareTo(availableWeight)); log.info("已挂吨数大于可拉运吨数,取消未到达货源地的运单:{}",orderedWeight.compareTo(availableWeight));
//到达货源地之后运单(不包括取消) //到达货源地之后运单(不包括取消)
List<OrderChild> arriveAfterOrderChild = orderChildDao.listByOrderNo(param.getOrderNo(),arriveAfterStatus); List<OrderChild> arriveAfterOrderChild = orderChildDao.listByOrderNo(param.getOrderNo(),arriveAfterStatus);
...@@ -2669,7 +2669,24 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -2669,7 +2669,24 @@ public class OrderChildServiceImpl implements OrderChildService {
BigDecimal arriveAfterWeight = arriveAfterOrderChild.stream().map(OrderChild::getWeight) BigDecimal arriveAfterWeight = arriveAfterOrderChild.stream().map(OrderChild::getWeight)
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);//总拉运吨数 .reduce(BigDecimal::add).orElse(BigDecimal.ZERO);//总拉运吨数
log.info("总拉运吨数:{}",arriveAfterWeight); log.info("总拉运吨数:{}",arriveAfterWeight);
if(availableWeight.compareTo(arriveAfterWeight) >0){//可拉运吨数大于运单拉运吨数 取消未到达货源地的运单
Map<String,List<String>> cancelTruckMap = new HashMap<>(); //取消运单对应的货单下的车辆Map
List<String> childNos = new ArrayList<>();//未到达货源地
for (OrderChild child : arriveBeforeOrderChild){
childNos.add(child.getChildNo());
if(cancelTruckMap.containsKey(child.getOrderGoodsNo())){
cancelTruckMap.get(child.getOrderGoodsNo()).add(generateChildTruckInfo(child));
}else{
List<String> childTruckInfoList = new ArrayList<>();
childTruckInfoList.add(generateChildTruckInfo(child));
cancelTruckMap.put(child.getOrderGoodsNo(),childTruckInfoList);
}
}
if(availableWeight.compareTo(arriveAfterWeight) >0){ //可拉运吨数大于运单拉运吨数 取消未到达货源地的运单
log.info("可拉运吨数大于运单拉运吨数,取消未到达货源地的运单:{}",availableWeight.compareTo(arriveAfterWeight)); log.info("可拉运吨数大于运单拉运吨数,取消未到达货源地的运单:{}",availableWeight.compareTo(arriveAfterWeight));
BigDecimal weight =BigDecimal.ZERO;//运单累加吨数 BigDecimal weight =BigDecimal.ZERO;//运单累加吨数
BigDecimal subtract = availableWeight.subtract(arriveAfterWeight);//可拉运吨数-运单拉运吨数=司机可以接单拉运吨数 BigDecimal subtract = availableWeight.subtract(arriveAfterWeight);//可拉运吨数-运单拉运吨数=司机可以接单拉运吨数
...@@ -2679,19 +2696,25 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -2679,19 +2696,25 @@ public class OrderChildServiceImpl implements OrderChildService {
if(weight.compareTo(subtract) >=0){ if(weight.compareTo(subtract) >=0){
break; break;
} }
notCancelChildNos.add(oc.getChildNo());//获取可以取消的运单 notCancelChildNos.add(oc.getChildNo());//获取不可以取消的运单
//同时移除不可取消运单对应的车辆
cancelTruckMap.get(oc.getOrderGoodsNo()).remove(generateChildTruckInfo(oc));
} }
log.info("notCancelChildNos:{}",notCancelChildNos); log.info("notCancelChildNos:{}",notCancelChildNos);
childNos = arriveBeforeOrderChild.stream().map(OrderChild::getChildNo).collect(Collectors.toList());//未到达货源地
childNos.removeAll(notCancelChildNos);//剔除不需要取消的运单 childNos.removeAll(notCancelChildNos);//剔除不需要取消的运单
}else{
childNos = arriveBeforeOrderChild.stream().map(OrderChild::getChildNo).collect(Collectors.toList());//未到达货源地
} }
log.info("批量取消运单:childNos:{}",childNos); log.info("批量取消运单:childNos:{}",childNos);
log.info("批量取消车辆:cancelTruckMap:{}",cancelTruckMap);
//批量取消运单 //批量取消运单
if(CollectionUtils.isNotEmpty(childNos)){ if(CollectionUtils.isNotEmpty(childNos)){
//按照货单进行取消运单吨数统计
List<CancelOrderGoodsWeightDTO> cancelOrderGoodsWeight = orderChildDao.statisticsCancelOrderGoodsWeight(childNos);
//恢复取消的运单吨数到对应的货单上
if(CollectionUtils.isNotEmpty(cancelOrderGoodsWeight)){
orderGoodsDao.batchCancelOrderGoods(cancelOrderGoodsWeight);
}
orderChildDao.updateBatchOwnerCancel(childNos); orderChildDao.updateBatchOwnerCancel(childNos);
//保存日志 //保存日志
List<OrderChildLog> logs = new ArrayList<>(); List<OrderChildLog> logs = new ArrayList<>();
...@@ -2706,7 +2729,43 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -2706,7 +2729,43 @@ public class OrderChildServiceImpl implements OrderChildService {
logs.add(log); logs.add(log);
} }
orderChildLogService.saveBatchOrderChildLog(logs); orderChildLogService.saveBatchOrderChildLog(logs);
///释放司机、车、绑定
releaseDriverAndTruck(cancelTruckMap);
} }
} }
} }
private String generateChildTruckInfo(OrderChild child){
return child.getTruckNo() + "_" + child.getTruckId() + "_" + child.getDriverUserNo();
}
//释放司机、车、绑定
private void releaseDriverAndTruck(Map<String,List<String>> cancelTruckMap){
//释放车辆绑定关系
Set<String> orderGoodsNoList = cancelTruckMap.keySet();
List<OrderGoods> orderGoodsList = orderGoodsDao.listInField(OrderGoods::getOrderGoodsNo, orderGoodsNoList);
Map<String, Integer> orderGoodsPendOrderWayMap = orderGoodsList.stream().collect(
Collectors.toMap(OrderGoods::getOrderGoodsNo, OrderGoods::getPendingOrderWay));
for(Map.Entry<String,List<String>> entry : cancelTruckMap.entrySet()){
Integer pendingOrderWay = orderGoodsPendOrderWayMap.get(entry.getKey());
if(Objects.equals(pendingOrderWay,PendingOrderWayStatusEnum.Status.DX.getCode())
|| Objects.equals(pendingOrderWay,PendingOrderWayStatusEnum.Status.FLEET_DX.getCode())){
List<String> truckNoList = new ArrayList<>();
entry.getValue().forEach(item-> {
String truckNo = item.split("_")[0];
truckNoList.add(truckNo);
goodsOrderTruckRecordComponent.deleteTruckRecord(entry.getKey(), truckNo);
});
orderGoodsTruckBindDao.batchUpdateBindTruckList(
entry.getKey(),OrderGoodsTruckBindEnum.Status.CANCEL.getCode(),truckNoList);
}
//释放司机和空重车
entry.getValue().forEach(item-> {
Integer truckId = Integer.parseInt(item.split("_")[1]);
Long driverUserNo = Long.parseLong(item.split("_")[2]);
updateDriverOrderStatusCancel(driverUserNo,truckId);
});
}
}
} }
...@@ -1006,28 +1006,64 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea ...@@ -1006,28 +1006,64 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void cancelOrderGoods(CancelOrderGoodsParam param) { public BigDecimal cancelOrderGoods(CancelOrderGoodsParam param) {
log.info("取消货单:{}",param); log.info("取消货单:{}",param);
List<OrderGoods> orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(param.getOrderNo());
// 过滤可取消
List<OrderGoods> orderGoodsUpdateList =
orderGoodsList.stream().filter(item ->
Objects.equals(item.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.CREATED.getCode())
|| Objects.equals(item.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.PAYING.getCode())
|| Objects.equals(item.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.GO_TO_SEND.getCode())
).collect(Collectors.toList());
if (orderGoodsUpdateList.isEmpty()) {return BigDecimal.ZERO;}
//取消货单 //取消货单
orderGoodsDao.cancelOrderGoods(param.getOrderNo()); orderGoodsDao.batchCancel(orderGoodsUpdateList.stream().map(item->item.getId()).collect(Collectors.toList()));
//批量保存货单日志 //批量保存货单日志
List<OrderGoods> orderGoodsListByOrderNo = orderGoodsDao.getOrderGoodsListByOrderNo(param.getOrderNo()); log.info("orderGoodsListByOrderNo:{}",orderGoodsUpdateList);
log.info("orderGoodsListByOrderNo:{}",orderGoodsListByOrderNo);
List<OrderGoodsLog> orderGoodsLogs = new ArrayList<>(); List<OrderGoodsLog> orderGoodsLogs = new ArrayList<>();
OrderGoodsLog orderGoodsLog = null; OrderGoodsLog orderGoodsLog = null;
for(OrderGoods orderGoods:orderGoodsListByOrderNo){ BigDecimal totalCancelWeight = BigDecimal.ZERO;
List<String> cancelTruckBindOrderGoodsNoList = new ArrayList<>();
for(OrderGoods orderGoods:orderGoodsUpdateList){
orderGoodsLog = new OrderGoodsLog(); orderGoodsLog = new OrderGoodsLog();
orderGoodsLog.setOrderGoodsNo(orderGoods.getOrderGoodsNo()); orderGoodsLog.setOrderGoodsNo(orderGoods.getOrderGoodsNo());
orderGoodsLog.setCreateName(param.getCreateName()); orderGoodsLog.setCreateName("系统");
orderGoodsLog.setType(OrderGoodsLogsEnum.Type.CANCEL.getName()); orderGoodsLog.setType(OrderGoodsLogsEnum.Type.CANCEL.getName());
orderGoodsLog.setCreateBy(param.getCreateBy()); orderGoodsLog.setCreateBy(0L);
orderGoodsLog.setRemark("货主发起减吨请求,当前已挂单量超过总拉运量,自动取消"); orderGoodsLog.setRemark("货主发起减吨请求,当前已挂单量超过总拉运量,自动取消");
orderGoodsLogs.add(orderGoodsLog); orderGoodsLogs.add(orderGoodsLog);
totalCancelWeight = totalCancelWeight.add(Objects.nonNull(orderGoods.getResidueTransportWeight())?
orderGoods.getResidueTransportWeight() : BigDecimal.ZERO);
if(Objects.equals(orderGoods.getPendingOrderWay(),PendingOrderWayStatusEnum.Status.DX.getCode())
|| Objects.equals(orderGoods.getPendingOrderWay(),PendingOrderWayStatusEnum.Status.FLEET_DX.getCode())){
cancelTruckBindOrderGoodsNoList.add(orderGoods.getOrderGoodsNo());
}
} }
//取消货单下未接单的车辆绑定关系
if(CollectionUtils.isNotEmpty(cancelTruckBindOrderGoodsNoList)){
cancelTruckBindOrderGoodsNoList.forEach(item->goodsOrderTruckRecordComponent.deleteTruckRecord(item));
/* //查询定向货单下未接单的车辆
List<OrderGoodsTruckBind> notOrderBindTruckList = orderGoodsTruckBindDao.
queryNotOrderTruck(cancelTruckBindOrderGoodsNoList);
//删除缓存中未接单的车辆绑定
if(CollectionUtils.isNotEmpty(notOrderBindTruckList)){
for (OrderGoodsTruckBind bind : notOrderBindTruckList) {
goodsOrderTruckRecordComponent.deleteTruckRecord(bind.getOrderGoodsNo(), bind.getTruckNo());
}
}*/
orderGoodsTruckBindDao.updateOrderGoodsBindStatus(cancelTruckBindOrderGoodsNoList,
OrderGoodsTruckBindEnum.Status.CANCEL.getCode());
}
orderGoodsLogService.saveBatchLog(orderGoodsLogs); orderGoodsLogService.saveBatchLog(orderGoodsLogs);
return totalCancelWeight;
} }
} }
...@@ -2,6 +2,7 @@ package com.clx.performance.sqlProvider; ...@@ -2,6 +2,7 @@ package com.clx.performance.sqlProvider;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.enums.OrderGoodsStatusEnum; import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.enums.OrderGoodsStopEnum; import com.clx.performance.enums.OrderGoodsStopEnum;
import com.clx.performance.enums.PendingOrderWayStatusEnum; import com.clx.performance.enums.PendingOrderWayStatusEnum;
...@@ -362,4 +363,17 @@ public class OrderGoodsSqlProvider { ...@@ -362,4 +363,17 @@ public class OrderGoodsSqlProvider {
return sql; return sql;
} }
public String batchCancelOrderGoods(List<CancelOrderGoodsWeightDTO> cancelOrderGoodsWeight){
StringJoiner sj = new StringJoiner("; ");
for(CancelOrderGoodsWeightDTO item : cancelOrderGoodsWeight){
sj.add("update order_goods set residue_transport_weight = residue_transport_weight +" + item.getCancelWeight() +
", already_transport_weight = already_transport_weight -" + item.getCancelWeight() +
" where order_goods_no = '"+item.getOrderGoodsNo() + "'") ;
}
return sj.toString();
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论