提交 d93e8c80 authored 作者: huyufan's avatar huyufan

Merge remote-tracking branch 'origin/v7.0_small_version_fix_20231120' into…

Merge remote-tracking branch 'origin/v7.0_small_version_fix_20231120' into v7.0_small_version_fix_20231120
...@@ -12,6 +12,8 @@ public enum OrderGoodsLogsEnum { ...@@ -12,6 +12,8 @@ public enum OrderGoodsLogsEnum {
EDIT("编辑"), EDIT("编辑"),
CANCEL( "取消"), CANCEL( "取消"),
ADJUST_PRICE("调价"), ADJUST_PRICE("调价"),
SYSTEM_RELEASE("释放吨数"),
SYSTEM_INCREASE("提量吨数"),
; ;
private final String name; private final String name;
......
...@@ -104,6 +104,7 @@ public class GoodsOrderTruckRecordComponent { ...@@ -104,6 +104,7 @@ public class GoodsOrderTruckRecordComponent {
List<Integer> ids = new ArrayList<>(); List<Integer> ids = new ArrayList<>();
for (OrderGoodsTruckBind bind : truckBindList) { for (OrderGoodsTruckBind bind : truckBindList) {
if (Objects.equals(OrderGoodsTruckBindEnum.Status.NORMAL.getCode(),bind.getStatus())) { if (Objects.equals(OrderGoodsTruckBindEnum.Status.NORMAL.getCode(),bind.getStatus())) {
ids.add(bind.getId());
this.deleteTruckRecord(orderGoodsNo, bind.getTruckNo()); this.deleteTruckRecord(orderGoodsNo, bind.getTruckNo());
} }
} }
......
...@@ -2,14 +2,17 @@ package com.clx.performance.listener; ...@@ -2,14 +2,17 @@ package com.clx.performance.listener;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.clx.order.enums.UpdateEnum; import com.clx.order.enums.UpdateEnum;
import com.clx.order.enums.VehicleUsageEnum;
import com.clx.performance.component.GoodsOrderTruckRecordComponent; import com.clx.performance.component.GoodsOrderTruckRecordComponent;
import com.clx.performance.component.OrderCancelComponent; import com.clx.performance.component.OrderCancelComponent;
import com.clx.performance.constant.RabbitKeyConstants; import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderGoodsDao; import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dto.dts.DataTransportDTO; import com.clx.performance.dto.dts.DataTransportDTO;
import com.clx.performance.enums.DtsOperationTypeEnum; import com.clx.performance.enums.DtsOperationTypeEnum;
import com.clx.performance.enums.OrderGoodsLogsEnum;
import com.clx.performance.enums.OrderGoodsPendingOrderWayStatusEnum; import com.clx.performance.enums.OrderGoodsPendingOrderWayStatusEnum;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.service.OrderGoodsLogService;
import com.msl.common.utils.DtsMapConvertUtil; import com.msl.common.utils.DtsMapConvertUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -28,6 +31,7 @@ public class OrderGoodsDtsListener { ...@@ -28,6 +31,7 @@ public class OrderGoodsDtsListener {
private final OrderCancelComponent orderCancelComponent; private final OrderCancelComponent orderCancelComponent;
private final GoodsOrderTruckRecordComponent goodsOrderTruckRecordComponent; private final GoodsOrderTruckRecordComponent goodsOrderTruckRecordComponent;
private final OrderGoodsDao orderGoodsDao; private final OrderGoodsDao orderGoodsDao;
private final OrderGoodsLogService orderGoodsLogService;
...@@ -66,13 +70,15 @@ public class OrderGoodsDtsListener { ...@@ -66,13 +70,15 @@ public class OrderGoodsDtsListener {
orderGoods.setId(after.getId()); orderGoods.setId(after.getId());
orderGoods.setResidueTransportWeight(BigDecimal.ZERO); orderGoods.setResidueTransportWeight(BigDecimal.ZERO);
orderGoodsDao.updateEntityByKey(orderGoods); orderGoodsDao.updateEntityByKey(orderGoods);
//释放定向单对应的定向车辆 orderGoodsLogService.saveLog(after.getOrderGoodsNo(), 0L, "系统", OrderGoodsLogsEnum.Type.SYSTEM_RELEASE.getName(),
if(Objects.equals(after.getPendingOrderWay(), OrderGoodsPendingOrderWayStatusEnum.Status.EXCLUSIVE.getCode())){ String.format("系统自动释放:%s吨", after.getResidueTransportWeight()));
//释放定向单(非自由车辆)对应的定向车辆
if(Objects.equals(after.getPendingOrderWay(), OrderGoodsPendingOrderWayStatusEnum.Status.EXCLUSIVE.getCode())
&& !Objects.equals(after.getVehicleUsage(), VehicleUsageEnum.Status.OWN.getCode())){
goodsOrderTruckRecordComponent.releaseOrderGoodsDriverAndTruck(after.getOrderGoodsNo()); goodsOrderTruckRecordComponent.releaseOrderGoodsDriverAndTruck(after.getOrderGoodsNo());
} }
log.info("结束自动恢复吨数到订单,订单号:{},货单号:{},货单剩余吨数:{}", log.info("结束自动恢复吨数到订单,订单号:{},货单号:{},货单剩余吨数:{}",
after.getOrderNo(),after.getOrderGoodsNo(),after.getResidueTransportWeight()); after.getOrderNo(),after.getOrderGoodsNo(),after.getResidueTransportWeight());
} }
} }
} }
...@@ -1416,19 +1416,26 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1416,19 +1416,26 @@ public class OrderChildServiceImpl implements OrderChildService {
*/ */
@Override @Override
public void updateOrderGoodsAmountLoad(OrderGoods orderGoods,String childNo, BigDecimal dif, Integer orderGoodsStatus) { public void updateOrderGoodsAmountLoad(OrderGoods orderGoods,String childNo, BigDecimal dif, Integer orderGoodsStatus) {
//防止状态倒退
if (orderGoods.getOrderGoodsStatus().equals(OrderGoodsStatusEnum.Status.CANCEL.getCode())
|| orderGoods.getOrderGoodsStatus().equals(OrderGoodsStatusEnum.Status.COMPLETED.getCode())
|| orderGoods.getOrderGoodsStatus().equals(OrderGoodsStatusEnum.Status.SUCCESS.getCode())
){
orderGoodsStatus = orderGoods.getOrderGoodsStatus();
}
if(dif.compareTo(BigDecimal.ZERO) != 0 ){ if(dif.compareTo(BigDecimal.ZERO) != 0 ){
//判断是从订单借吨还是直接货单进行扣减(货单剩余吨数小于本运单的修改后的吨数差值) //判断是从订单借吨还是直接货单进行扣减(货单剩余吨数小于本运单的修改后的吨数差值)
if (orderGoods.getResidueTransportWeight().compareTo(dif) < 0) { if (orderGoods.getResidueTransportWeight().compareTo(dif) < 0) {
//货单吨数不够扣减,从订单进行借吨数 //货单吨数不够扣减,从订单进行借吨数
orderGoodsService.borrowWeight(orderGoods,childNo,orderGoods.getResidueTransportWeight(),dif, orderGoodsService.borrowWeight(orderGoods,childNo,orderGoods.getResidueTransportWeight(),dif,
dif.subtract(orderGoods.getResidueTransportWeight()), dif.subtract(orderGoods.getResidueTransportWeight()),
OrderGoodsStatusEnum.Status.GO_TO_SEND.getCode()); OrderGoodsStatusEnum.Status.GO_TO_SEND.getCode());
}else{ }else{
// 货单吨数够扣减,直接更新货单剩余吨数和已拉运吨数和状态 // 货单吨数够扣减,直接更新货单剩余吨数和已拉运吨数和状态
orderGoodsDao.updateOrderGoodsReduceWeightAndStatus(orderGoods.getId(), dif, orderGoodsStatus); orderGoodsDao.updateOrderGoodsReduceWeightAndStatus(orderGoods.getId(), dif, orderGoodsStatus);
}
} }
} }
}
/** /**
* 更新定向单状态 (接单) * 更新定向单状态 (接单)
......
...@@ -303,15 +303,20 @@ public class OrderGoodsServiceImpl implements OrderGoodsService { ...@@ -303,15 +303,20 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
if (orderGoodsParams.getExtractWeight().compareTo(oldOrderGoods.getAlreadyTransportWeight()) < 0) { if (orderGoodsParams.getExtractWeight().compareTo(oldOrderGoods.getAlreadyTransportWeight()) < 0) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前货单提取吨数不能小于货单已拉运吨数"); throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前货单提取吨数不能小于货单已拉运吨数");
} }
BigDecimal answer = orderGoodsParams.getExtractWeight().subtract(oldOrderGoods.getExtractWeight()); //考虑到借吨、恢复吨数的货单,逻辑判断实际的提取吨数
BigDecimal realExtractWeight = oldOrderGoods.getResidueTransportWeight().compareTo(BigDecimal.ZERO) == 0?
oldOrderGoods.getAlreadyTransportWeight():oldOrderGoods.getExtractWeight();
oldOrderGoods.setExtractWeight(realExtractWeight);
BigDecimal answer = orderGoodsParams.getExtractWeight().subtract(realExtractWeight);
int flag = answer.compareTo(BigDecimal.ZERO); int flag = answer.compareTo(BigDecimal.ZERO);
//归还吨数 //归还吨数
RollbackOrderWeightParam rollbackOrderWeightParam = new RollbackOrderWeightParam(); RollbackOrderWeightParam rollbackOrderWeightParam = new RollbackOrderWeightParam();
rollbackOrderWeightParam.setOrderNo(param.getOrderNo()); rollbackOrderWeightParam.setOrderNo(param.getOrderNo());
log.info("falg:{}",flag); log.info("flag:{}",flag);
if (flag > 0) { if (flag > 0) {
orderGoodsParams.setResidueTransportWeight(oldOrderGoods.getResidueTransportWeight().add(answer)); orderGoodsParams.setResidueTransportWeight(oldOrderGoods.getResidueTransportWeight().add(answer));
//限制剩余吨数
limitOrderGoodsResidueWeight(orderGoodsParams.getResidueTransportWeight());
rollbackOrderWeightParam.setUpdateType(UpdateEnum.SUB.getCode()); rollbackOrderWeightParam.setUpdateType(UpdateEnum.SUB.getCode());
if (oldOrderGoods.getTruckDemand().equals(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode())) { if (oldOrderGoods.getTruckDemand().equals(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode())) {
rollbackOrderWeightParam.setResidueWeight(answer); rollbackOrderWeightParam.setResidueWeight(answer);
...@@ -333,6 +338,8 @@ public class OrderGoodsServiceImpl implements OrderGoodsService { ...@@ -333,6 +338,8 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
orderFeign.rollbackOrderWeight(rollbackOrderWeightParam); orderFeign.rollbackOrderWeight(rollbackOrderWeightParam);
}else if (flag < 0 ){ }else if (flag < 0 ){
orderGoodsParams.setResidueTransportWeight(orderGoodsParams.getExtractWeight().subtract(oldOrderGoods.getAlreadyTransportWeight())); orderGoodsParams.setResidueTransportWeight(orderGoodsParams.getExtractWeight().subtract(oldOrderGoods.getAlreadyTransportWeight()));
//限制剩余吨数
limitOrderGoodsResidueWeight(orderGoodsParams.getResidueTransportWeight());
rollbackOrderWeightParam.setUpdateType(UpdateEnum.ADD.getCode()); rollbackOrderWeightParam.setUpdateType(UpdateEnum.ADD.getCode());
if (oldOrderGoods.getTruckDemand().equals(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode())) { if (oldOrderGoods.getTruckDemand().equals(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode())) {
rollbackOrderWeightParam.setResidueWeight(answer.negate()); rollbackOrderWeightParam.setResidueWeight(answer.negate());
...@@ -441,6 +448,15 @@ public class OrderGoodsServiceImpl implements OrderGoodsService { ...@@ -441,6 +448,15 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
orderGoodsLogService.saveLog(orderGoodsNo, loginUserInfo.getUserNo(), loginUserInfo.getUserName(), OrderGoodsLogsEnum.Type.EDIT.getName(), ""); orderGoodsLogService.saveLog(orderGoodsNo, loginUserInfo.getUserNo(), loginUserInfo.getUserName(), OrderGoodsLogsEnum.Type.EDIT.getName(), "");
} }
/**
* 限制货单更新剩余吨数不能小于35吨
**/
private void limitOrderGoodsResidueWeight(BigDecimal residueTransportWeight){
if(residueTransportWeight.compareTo(new BigDecimal("35")) < 0){
throw new ServiceSystemException(PerformanceResultEnum.DATA_NOT_FIND,"当前货单剩余吨数不足35吨,无法挂单");
}
}
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public void updateOrderGoodsPrice(UpdateOrderGoodsPriceParam param) { public void updateOrderGoodsPrice(UpdateOrderGoodsPriceParam param) {
...@@ -695,6 +711,10 @@ public class OrderGoodsServiceImpl implements OrderGoodsService { ...@@ -695,6 +711,10 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
public OrderGoodsEditVO findOrderGoodsById(Integer id) { public OrderGoodsEditVO findOrderGoodsById(Integer id) {
OrderGoodsEditVO result = new OrderGoodsEditVO(); OrderGoodsEditVO result = new OrderGoodsEditVO();
OrderGoodsVO orderGoodsVO = orderGoodsDao.findOrderGoodsById(id); OrderGoodsVO orderGoodsVO = orderGoodsDao.findOrderGoodsById(id);
if(BigDecimal.ZERO.compareTo(orderGoodsVO.getResidueTransportWeight()) == 0 ){
//如果借吨或者恢复吨数,会导致提取吨数不准确,所以这里取准确提取吨数
orderGoodsVO.setExtractWeight(orderGoodsVO.getAlreadyTransportWeight());
}
String orderNo = orderGoodsVO.getOrderNo(); String orderNo = orderGoodsVO.getOrderNo();
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo); FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
result.setOrderNo(orderInfoFeign.getOrderNo()); result.setOrderNo(orderInfoFeign.getOrderNo());
...@@ -765,7 +785,8 @@ public class OrderGoodsServiceImpl implements OrderGoodsService { ...@@ -765,7 +785,8 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
orderCancelComponent.backFillOrderWeight(orderGoods,borrowOrderWeight, UpdateEnum.SUB.getCode()); orderCancelComponent.backFillOrderWeight(orderGoods,borrowOrderWeight, UpdateEnum.SUB.getCode());
//更新货单吨数 //更新货单吨数
orderGoodsDao.updateOrderGoodsWeightResidueAndAlreadyAndStatus(orderGoods.getId(),addAlready,subOrderGoodsResidue,orderGoodsStatus); orderGoodsDao.updateOrderGoodsWeightResidueAndAlreadyAndStatus(orderGoods.getId(),addAlready,subOrderGoodsResidue,orderGoodsStatus);
orderGoodsLogService.saveLog(orderGoods.getOrderGoodsNo(), 0L, "系统", OrderGoodsLogsEnum.Type.SYSTEM_INCREASE.getName(),
String.format("系统自动提量:%s吨", borrowOrderWeight));
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论