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

commit

上级 75fac6c2
...@@ -23,6 +23,9 @@ public class OrderExtractWeightVO { ...@@ -23,6 +23,9 @@ public class OrderExtractWeightVO {
@ApiModelProperty("用车需求: 1平台车辆 2部分平台车辆 3自有车辆") @ApiModelProperty("用车需求: 1平台车辆 2部分平台车辆 3自有车辆")
private Integer truckDemand; private Integer truckDemand;
@ApiModelProperty(value = "拉运吨数")
private BigDecimal transportWeight;
@ApiModelProperty("平台承运吨数") @ApiModelProperty("平台承运吨数")
private BigDecimal platformCarryWeight; private BigDecimal platformCarryWeight;
......
...@@ -7,10 +7,8 @@ import com.clx.performance.component.GoodsOrderStrategyContext; ...@@ -7,10 +7,8 @@ import com.clx.performance.component.GoodsOrderStrategyContext;
import com.clx.performance.constant.RedisConstants; import com.clx.performance.constant.RedisConstants;
import com.clx.performance.enums.PerformanceResultEnum; import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.param.pc.*; import com.clx.performance.param.pc.*;
import com.clx.performance.service.OrderChildService; import com.clx.performance.service.*;
import com.clx.performance.service.OrderGoodsAdjustmentPriceService; import com.clx.performance.vo.feign.OrderExtractWeightVO;
import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.service.OrderGoodsTruckBindService;
import com.clx.performance.vo.pc.*; import com.clx.performance.vo.pc.*;
import com.msl.common.base.PageData; import com.msl.common.base.PageData;
import com.msl.common.convertor.aspect.UnitCovert; import com.msl.common.convertor.aspect.UnitCovert;
...@@ -71,6 +69,9 @@ public class GoodsOrderController { ...@@ -71,6 +69,9 @@ public class GoodsOrderController {
@Autowired @Autowired
private OrderGoodsAdjustmentPriceService orderGoodsAdjustmentPriceService; private OrderGoodsAdjustmentPriceService orderGoodsAdjustmentPriceService;
@Autowired
private OrderWeightService orderWeightService;
@ApiOperation(value = "提交货单", notes = "<br>By:胡宇帆") @ApiOperation(value = "提交货单", notes = "<br>By:胡宇帆")
@PostMapping("/saveGoodsOrder") @PostMapping("/saveGoodsOrder")
@UnitCovert(result = false) @UnitCovert(result = false)
...@@ -88,7 +89,11 @@ public class GoodsOrderController { ...@@ -88,7 +89,11 @@ public class GoodsOrderController {
FeignOrderVO orderInfo = orderFeign.getOrderInfoFeign(orderNo); FeignOrderVO orderInfo = orderFeign.getOrderInfoFeign(orderNo);
//1平台车辆 2部分平台车辆 3自有车辆 //1平台车辆 2部分平台车辆 3自有车辆
Integer truckDemand = orderInfo.getTruckDemand(); Integer truckDemand = orderInfo.getTruckDemand();
goodsOrderStrategyContext.strategyContext.get(truckDemand).saveGoodsOrder(orderGoodsParams, orderInfo, now, rabbitTemplate);
OrderExtractWeightVO orderCanExtractWeight = orderWeightService.getOrderCanExtractWeight(orderNo);
goodsOrderStrategyContext.strategyContext.get(truckDemand).saveGoodsOrder(orderGoodsParams, orderInfo,
orderCanExtractWeight,now);
} catch (Exception e) { } catch (Exception e) {
log.info(e.getMessage()); log.info(e.getMessage());
......
...@@ -30,14 +30,12 @@ import com.clx.performance.param.app.OrderGoodsListPageParam; ...@@ -30,14 +30,12 @@ import com.clx.performance.param.app.OrderGoodsListPageParam;
import com.clx.performance.param.feign.CancelOrderGoodsParam; import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.param.feign.DistributionTruckParam; import com.clx.performance.param.feign.DistributionTruckParam;
import com.clx.performance.param.pc.*; import com.clx.performance.param.pc.*;
import com.clx.performance.service.IntegralMqService; import com.clx.performance.service.*;
import com.clx.performance.service.OrderChildLogService;
import com.clx.performance.service.OrderGoodsLogService;
import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.service.child.OrderChildPostService; import com.clx.performance.service.child.OrderChildPostService;
import com.clx.performance.struct.OrderGoodsStruct; import com.clx.performance.struct.OrderGoodsStruct;
import com.clx.performance.vo.app.OrderGoodsAPPVO; import com.clx.performance.vo.app.OrderGoodsAPPVO;
import com.clx.performance.vo.feign.FreightEstimateVO; import com.clx.performance.vo.feign.FreightEstimateVO;
import com.clx.performance.vo.feign.OrderExtractWeightVO;
import com.clx.performance.vo.feign.OrderGoodsFeignVO; import com.clx.performance.vo.feign.OrderGoodsFeignVO;
import com.clx.performance.vo.mq.OrderTruckBindCancelParam; import com.clx.performance.vo.mq.OrderTruckBindCancelParam;
import com.clx.performance.vo.pc.DriverFreightPriceVO; import com.clx.performance.vo.pc.DriverFreightPriceVO;
...@@ -123,6 +121,9 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea ...@@ -123,6 +121,9 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
@Autowired @Autowired
private OrderGoodsFleetOpenTruckDao orderGoodsFleetOpenTruckDao; private OrderGoodsFleetOpenTruckDao orderGoodsFleetOpenTruckDao;
@Autowired
OrderWeightService orderWeightService;
...@@ -409,11 +410,10 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea ...@@ -409,11 +410,10 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateEditOrderGoods(UpdateEditOrderGoodsParam param) { public void updateEditOrderGoods(UpdateEditOrderGoodsParam param) {
UserSessionData loginUserInfo = null; UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
loginUserInfo = TokenUtil.getLoginUserInfo();
OrderGoodsEditParams orderGoodsParams = param.getOrderGoodsParams(); OrderGoodsEditParams orderGoodsParams = param.getOrderGoodsParams();
OrderGoods oldOrderGoods = orderGoodsDao.getByOrderGoodsNo(orderGoodsParams.getOrderGoodsNo()).get(); OrderGoods oldOrderGoods = orderGoodsDao.getByOrderGoodsNo(orderGoodsParams.getOrderGoodsNo()).get();
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(param.getOrderNo()); //FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(param.getOrderNo());
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, "当前货单提取吨数不能小于货单已拉运吨数");
} }
...@@ -423,63 +423,20 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea ...@@ -423,63 +423,20 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
oldOrderGoods.getAlreadyTransportWeight():oldOrderGoods.getAlreadyTransportWeight().add(oldOrderGoods.getResidueTransportWeight()); oldOrderGoods.getAlreadyTransportWeight():oldOrderGoods.getAlreadyTransportWeight().add(oldOrderGoods.getResidueTransportWeight());
oldOrderGoods.setExtractWeight(realExtractWeight); oldOrderGoods.setExtractWeight(realExtractWeight);
//本次提取增加或者减少的吨数 = 本次提取的吨数 - 货单原实际提取吨数 //本次提取增加或者减少的吨数 = 本次提取的吨数 - 货单原实际提取吨数
BigDecimal answer = orderGoodsParams.getExtractWeight().subtract(realExtractWeight); BigDecimal changeWeight = orderGoodsParams.getExtractWeight().subtract(realExtractWeight);
int flag = answer.compareTo(BigDecimal.ZERO);
//归还吨数
RollbackOrderWeightParam rollbackOrderWeightParam = new RollbackOrderWeightParam();
rollbackOrderWeightParam.setOrderNo(param.getOrderNo());
log.info("flag:{}",flag);
if (flag > 0) {
orderGoodsParams.setResidueTransportWeight(oldOrderGoods.getResidueTransportWeight().add(answer));
//限制剩余吨数
limitOrderGoodsResidueWeight(orderGoodsParams.getResidueTransportWeight());
rollbackOrderWeightParam.setUpdateType(UpdateEnum.SUB.getCode());
if (oldOrderGoods.getTruckDemand().equals(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode())) {
rollbackOrderWeightParam.setResidueWeight(answer);
rollbackOrderWeightParam.setOwnResidueCarryWeight(BigDecimal.ZERO);
rollbackOrderWeightParam.setPlatformResidueCarryWeight(answer);
}else if (oldOrderGoods.getTruckDemand().equals(TruckDemandEnum.TruckType.PLATFORM_ANY_CAR.getCode())) {
if (orderGoodsParams.getVehicleUsage().equals(VehicleUsageEnum.Status.OWN.getCode())) {
rollbackOrderWeightParam.setResidueWeight(answer);
rollbackOrderWeightParam.setOwnResidueCarryWeight(answer);
rollbackOrderWeightParam.setPlatformResidueCarryWeight(BigDecimal.ZERO);
} else {
rollbackOrderWeightParam.setResidueWeight(answer);
rollbackOrderWeightParam.setOwnResidueCarryWeight(BigDecimal.ZERO);
rollbackOrderWeightParam.setPlatformResidueCarryWeight(answer);
}
} if (changeWeight.compareTo(BigDecimal.ZERO) > 0) {
log.info("回填吨数:{}", JSONUtil.parse(rollbackOrderWeightParam)); orderGoodsParams.setResidueTransportWeight(oldOrderGoods.getResidueTransportWeight().add(changeWeight));
orderFeign.rollbackOrderWeight(rollbackOrderWeightParam); }else if (changeWeight.compareTo(BigDecimal.ZERO) < 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());
if (oldOrderGoods.getTruckDemand().equals(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode())) {
rollbackOrderWeightParam.setResidueWeight(answer.negate());
rollbackOrderWeightParam.setOwnResidueCarryWeight(BigDecimal.ZERO);
rollbackOrderWeightParam.setPlatformResidueCarryWeight(answer.negate());
}else if (oldOrderGoods.getTruckDemand().equals(TruckDemandEnum.TruckType.PLATFORM_ANY_CAR.getCode())) {
rollbackOrderWeightParam.setResidueWeight(answer.negate());
if (VehicleUsageEnum.Status.OWN.getCode().equals(oldOrderGoods.getVehicleUsage())) {
rollbackOrderWeightParam.setOwnResidueCarryWeight(answer.negate());
rollbackOrderWeightParam.setPlatformResidueCarryWeight(BigDecimal.ZERO);
} else {
rollbackOrderWeightParam.setOwnResidueCarryWeight(BigDecimal.ZERO);
rollbackOrderWeightParam.setPlatformResidueCarryWeight(answer.negate());
}
}
log.info("回填吨数:{}", JSONUtil.parse(rollbackOrderWeightParam));
orderFeign.rollbackOrderWeight(rollbackOrderWeightParam);
} else { } else {
//当编辑吨数等于0 的时候,不进行拦截 //当编辑吨数等于0 的时候,不进行拦截
orderGoodsParams.setResidueTransportWeight(oldOrderGoods.getResidueTransportWeight()); orderGoodsParams.setResidueTransportWeight(oldOrderGoods.getResidueTransportWeight());
} }
BigDecimal orderResidueWeight = orderWeightService.getOrderResidueWeight(param.getOrderNo());
if (new BigDecimal(orderInfoFeign.getResidueWeight()).compareTo(orderGoodsParams.getExtractWeight().subtract(oldOrderGoods.getExtractWeight())) < 0) { if (orderResidueWeight.compareTo(orderGoodsParams.getExtractWeight().subtract(oldOrderGoods.getExtractWeight())) < 0) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前货单提取吨数已超订单可提取吨数"); throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前货单提取吨数已超订单可提取吨数");
} }
...@@ -565,15 +522,6 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea ...@@ -565,15 +522,6 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
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(BigDecimal.ZERO) != 0 && 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) {
...@@ -865,15 +813,22 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea ...@@ -865,15 +813,22 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
} }
String orderNo = orderGoodsVO.getOrderNo(); String orderNo = orderGoodsVO.getOrderNo();
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo); FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
//查询订单可提取吨数
OrderExtractWeightVO orderCanExtractWeight = orderWeightService.getOrderCanExtractWeight(orderNo);
//查询订单剩余吨数
BigDecimal residueWeight = orderWeightService.getOrderResidueWeight(orderNo);
result.setOrderNo(orderInfoFeign.getOrderNo()); result.setOrderNo(orderInfoFeign.getOrderNo());
result.setTransportWeight(orderInfoFeign.getTransportWeight()); result.setTransportWeight(orderCanExtractWeight.getTransportWeight());
result.setValidFreightPrice(orderInfoFeign.getValidFreightPrice()); result.setValidFreightPrice(orderInfoFeign.getValidFreightPrice());
result.setTruckDemand(orderInfoFeign.getTruckDemand()); result.setTruckDemand(orderInfoFeign.getTruckDemand());
result.setResidueWeight(orderInfoFeign.getResidueWeight()); result.setResidueWeight(String.valueOf(residueWeight));
result.setOwnCarryWeight(orderInfoFeign.getOwnCarryWeight()); result.setOwnCarryWeight(String.valueOf(orderCanExtractWeight.getOwnCarryWeight()));
result.setOwnResidueCarryWeight(orderInfoFeign.getOwnResidueCarryWeight()); result.setOwnResidueCarryWeight(String.valueOf(orderCanExtractWeight.getOwnCanExtractWeight()));
result.setPlatformCarryWeight(orderInfoFeign.getPlatformCarryWeight()); result.setPlatformCarryWeight(String.valueOf(orderCanExtractWeight.getPlatformCarryWeight()));
result.setPlatformResidueCarryWeight(orderInfoFeign.getPlatformResidueCarryWeight()); result.setPlatformResidueCarryWeight(String.valueOf(orderCanExtractWeight.getPlatCanExtractWeight()));
result.setDownFloatWeight(orderInfoFeign.getDownFloatWeight()); result.setDownFloatWeight(orderInfoFeign.getDownFloatWeight());
result.setUpFloatWeight(orderInfoFeign.getUpFloatWeight()); result.setUpFloatWeight(orderInfoFeign.getUpFloatWeight());
......
...@@ -46,7 +46,8 @@ public class OrderWeightServiceImpl implements OrderWeightService { ...@@ -46,7 +46,8 @@ public class OrderWeightServiceImpl implements OrderWeightService {
List<OrderGoods> orderGoodsList = orderGoodsDao.listByField(OrderGoods::getOrderNo, orderNo); List<OrderGoods> orderGoodsList = orderGoodsDao.listByField(OrderGoods::getOrderNo, orderNo);
if(CollectionUtils.isEmpty(orderGoodsList)){ if(CollectionUtils.isEmpty(orderGoodsList)){
return OrderExtractWeightVO.builder().truckDemand(orderInfo.getTruckDemand()) return OrderExtractWeightVO.builder().transportWeight(orderInfo.getTransportWeight())
.truckDemand(orderInfo.getTruckDemand())
.ownCarryWeight(orderInfo.getOwnCarryWeight()).platformCarryWeight(orderInfo.getPlatformCarryWeight()) .ownCarryWeight(orderInfo.getOwnCarryWeight()).platformCarryWeight(orderInfo.getPlatformCarryWeight())
.ownCanExtractWeight(orderInfo.getOwnCarryWeight()).platCanExtractWeight(orderInfo.getPlatformCarryWeight()) .ownCanExtractWeight(orderInfo.getOwnCarryWeight()).platCanExtractWeight(orderInfo.getPlatformCarryWeight())
.build(); .build();
...@@ -67,13 +68,15 @@ public class OrderWeightServiceImpl implements OrderWeightService { ...@@ -67,13 +68,15 @@ public class OrderWeightServiceImpl implements OrderWeightService {
if(Objects.equals(orderInfo.getTruckDemand(), TruckDemandEnum.TruckType.PLATFORM_CAR.getCode())){ if(Objects.equals(orderInfo.getTruckDemand(), TruckDemandEnum.TruckType.PLATFORM_CAR.getCode())){
return OrderExtractWeightVO.builder().truckDemand(orderInfo.getTruckDemand()) return OrderExtractWeightVO.builder().transportWeight(orderInfo.getTransportWeight())
.truckDemand(orderInfo.getTruckDemand())
.platformCarryWeight(orderInfo.getPlatformCarryWeight()) .platformCarryWeight(orderInfo.getPlatformCarryWeight())
.platCanExtractWeight(orderInfo.getTransportWeight().subtract(platOrderGoodsWeight)) .platCanExtractWeight(orderInfo.getTransportWeight().subtract(platOrderGoodsWeight))
.build(); .build();
} }
if(Objects.equals(orderInfo.getTruckDemand(), TruckDemandEnum.TruckType.OWNER_CAR.getCode())){ if(Objects.equals(orderInfo.getTruckDemand(), TruckDemandEnum.TruckType.OWNER_CAR.getCode())){
return OrderExtractWeightVO.builder().truckDemand(orderInfo.getTruckDemand()) return OrderExtractWeightVO.builder().transportWeight(orderInfo.getTransportWeight())
.truckDemand(orderInfo.getTruckDemand())
.ownCarryWeight(orderInfo.getOwnCarryWeight()) .ownCarryWeight(orderInfo.getOwnCarryWeight())
.ownCanExtractWeight(orderInfo.getTransportWeight().subtract(ownOrderGoodsWeight)) .ownCanExtractWeight(orderInfo.getTransportWeight().subtract(ownOrderGoodsWeight))
.build(); .build();
...@@ -94,7 +97,8 @@ public class OrderWeightServiceImpl implements OrderWeightService { ...@@ -94,7 +97,8 @@ public class OrderWeightServiceImpl implements OrderWeightService {
subtract(platOrderGoodsWeight); subtract(platOrderGoodsWeight);
} }
return OrderExtractWeightVO.builder().truckDemand(orderInfo.getTruckDemand()) return OrderExtractWeightVO.builder().transportWeight(orderInfo.getTransportWeight())
.truckDemand(orderInfo.getTruckDemand())
.ownCarryWeight(orderInfo.getOwnCarryWeight()) .ownCarryWeight(orderInfo.getOwnCarryWeight())
.platformCarryWeight(orderInfo.getPlatformCarryWeight()) .platformCarryWeight(orderInfo.getPlatformCarryWeight())
.ownCanExtractWeight(ownCanExtractWeight) .ownCanExtractWeight(ownCanExtractWeight)
......
...@@ -9,13 +9,11 @@ import com.clx.performance.model.OrderGoodsTruckBind; ...@@ -9,13 +9,11 @@ import com.clx.performance.model.OrderGoodsTruckBind;
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.performance.utils.SpringContextUtils; import com.clx.performance.utils.SpringContextUtils;
import com.clx.performance.vo.feign.OrderExtractWeightVO;
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.apache.commons.lang3.StringUtils;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.HashSet; import java.util.HashSet;
...@@ -27,9 +25,6 @@ import java.util.stream.Collectors; ...@@ -27,9 +25,6 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
public abstract class GoodsOrderStrategy { public abstract class GoodsOrderStrategy {
@Autowired
private Environment environment;
/** /**
* 不同的用车需求执行不同的策略 1:one 2:two 3:three * 不同的用车需求执行不同的策略 1:one 2:two 3:three
...@@ -40,23 +35,15 @@ public abstract class GoodsOrderStrategy { ...@@ -40,23 +35,15 @@ public abstract class GoodsOrderStrategy {
* @param now * @param now
* @return * @return
*/ */
public abstract LocalDateTime goodsOrderProcess(OrderGoodsParams orderGoodsParams, FeignOrderVO orderInfo, LocalDateTime now); public abstract LocalDateTime goodsOrderProcess(OrderGoodsParams orderGoodsParams, FeignOrderVO orderInfo,
OrderExtractWeightVO orderCanExtractWeight, LocalDateTime now);
public void saveGoodsOrder(OrderGoodsParams orderGoodsParams, FeignOrderVO orderInfo, LocalDateTime now, RabbitTemplate rabbitTemplate) { public void saveGoodsOrder(OrderGoodsParams orderGoodsParams, FeignOrderVO orderInfo,
String orderNo = orderGoodsParams.getOrderNo(); OrderExtractWeightVO orderCanExtractWeight, LocalDateTime now) {
if (Objects.equals(orderInfo.getStopFlag(), OrderStopEnum.Status.YES.getCode())) { if (Objects.equals(orderInfo.getStopFlag(), OrderStopEnum.Status.YES.getCode())) {
throw new ServiceSystemException(ResultEnum.DATA_ERROR, "订单已暂停,无法进行提量"); throw new ServiceSystemException(ResultEnum.DATA_ERROR, "订单已暂停,无法进行提量");
} }
String transportBeginTime = orderInfo.getTransportBeginTime();
/* if (!"test".equals(environment.getActiveProfiles()[0])) {
for (OrderGoodsChildParams param : orderGoodsParams.getOrderGoodsChildParams()) {
String pendingOrderTime = param.getPendingOrderTime();
if (DateUtils.parseDateTime(pendingOrderTime).get().isBefore(DateUtils.parseDateTime(transportBeginTime).get())) {
throw new ServiceSystemException(ResultEnum.DATA_ERROR, "挂单时间不能早于拉运开始时间");
}
}
}*/
//多个定向单不允许车辆重复 //多个定向单不允许车辆重复
List<OrderGoodsChildParams> orderGoodsChildParams = orderGoodsParams.getOrderGoodsChildParams(); List<OrderGoodsChildParams> orderGoodsChildParams = orderGoodsParams.getOrderGoodsChildParams();
...@@ -81,30 +68,6 @@ public abstract class GoodsOrderStrategy { ...@@ -81,30 +68,6 @@ public abstract class GoodsOrderStrategy {
throw new ServiceSystemException(ResultEnum.DATA_ERROR, "已被定向单绑定车辆:" + trucks); } throw new ServiceSystemException(ResultEnum.DATA_ERROR, "已被定向单绑定车辆:" + trucks); }
} }
//根据不同的订单类型创建不同的货单 //根据不同的订单类型创建不同的货单
LocalDateTime sendLazyTime = goodsOrderProcess(orderGoodsParams, orderInfo, now); goodsOrderProcess(orderGoodsParams, orderInfo,orderCanExtractWeight, now);
/* Message message = MessageBuilder.withBody(orderNo.getBytes()).build();
BigDecimal epochMilli = null;
if (sendLazyTime.isAfter(now)) {
epochMilli = new BigDecimal(sendLazyTime.minusMinutes(now.getMinute()).getMinute() * 60 * 1000);
log.info("执行订单状态更改,选择时间在当前时间之后,则设置延迟队列时间,时间为:{}", epochMilli);
}
if (epochMilli == null) {
log.info("执行订单状态更改,epochMilli时间为0,时间为:{}", epochMilli);
rabbitTemplate.send(
RabbitKeyConstants.ORDER_ON_DEAD_EXCHANGE, RabbitKeyConstants.ORDER_ON_DEAD_ROUTE_KEY, message
);
} else {
log.info("执行订单状态更改,epochMilli时间不为0,时间为:{}", epochMilli);
rabbitTemplate.send(RabbitKeyConstants.ORDER_POSTED_EXCHANGE, RabbitKeyConstants.ORDER_POSTED_ROUTE_KEY, MessageBuilder.withBody(orderNo.getBytes()).build());
message.getMessageProperties().setHeader("x-delay", epochMilli);
rabbitTemplate.send(
RabbitKeyConstants.ORDER_ON_EXCHANGE, RabbitKeyConstants.ORDER_ON_ROUTE_KEY, message
);
}*/
} }
} }
...@@ -3,9 +3,6 @@ package com.clx.performance.strategy.impl; ...@@ -3,9 +3,6 @@ package com.clx.performance.strategy.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.clx.order.enums.OrderEnum; import com.clx.order.enums.OrderEnum;
import com.clx.order.feign.OrderFeign; import com.clx.order.feign.OrderFeign;
import com.clx.order.param.feign.UpdateOrderInfoResidueWeightParam;
import com.clx.performance.param.pc.OrderGoodsChildParams;
import com.clx.performance.param.pc.OrderGoodsParams;
import com.clx.order.vo.feign.FeignOrderVO; import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.order.vo.feign.OrderOwnTruckVo; import com.clx.order.vo.feign.OrderOwnTruckVo;
import com.clx.performance.component.*; import com.clx.performance.component.*;
...@@ -17,8 +14,11 @@ import com.clx.performance.enums.PendingOrderWayStatusEnum; ...@@ -17,8 +14,11 @@ import com.clx.performance.enums.PendingOrderWayStatusEnum;
import com.clx.performance.enums.PerformanceResultEnum; import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.TruckDemandEnum; import com.clx.performance.enums.TruckDemandEnum;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.pc.OrderGoodsChildParams;
import com.clx.performance.param.pc.OrderGoodsParams;
import com.clx.performance.service.ordergoods.OrderGoodsPostService; import com.clx.performance.service.ordergoods.OrderGoodsPostService;
import com.clx.performance.strategy.GoodsOrderStrategy; import com.clx.performance.strategy.GoodsOrderStrategy;
import com.clx.performance.vo.feign.OrderExtractWeightVO;
import com.msl.common.exception.ServiceSystemException; import com.msl.common.exception.ServiceSystemException;
import com.msl.common.utils.DateUtils; import com.msl.common.utils.DateUtils;
import com.msl.user.data.UserSessionData; import com.msl.user.data.UserSessionData;
...@@ -71,7 +71,8 @@ public class OwnGoodsOrderStrategy extends GoodsOrderStrategy implements Initial ...@@ -71,7 +71,8 @@ public class OwnGoodsOrderStrategy extends GoodsOrderStrategy implements Initial
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public LocalDateTime goodsOrderProcess(OrderGoodsParams orderGoodsParams, FeignOrderVO orderInfo, LocalDateTime now) { public LocalDateTime goodsOrderProcess(OrderGoodsParams orderGoodsParams, FeignOrderVO orderInfo,
OrderExtractWeightVO orderCanExtractWeight, LocalDateTime now) {
String orderNo = orderGoodsParams.getOrderNo(); String orderNo = orderGoodsParams.getOrderNo();
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo); FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
if (!OrderEnum.Status.ON_ORDER.getCode().equals(orderInfoFeign.getOrderStatus())&& if (!OrderEnum.Status.ON_ORDER.getCode().equals(orderInfoFeign.getOrderStatus())&&
...@@ -88,8 +89,7 @@ public class OwnGoodsOrderStrategy extends GoodsOrderStrategy implements Initial ...@@ -88,8 +89,7 @@ public class OwnGoodsOrderStrategy extends GoodsOrderStrategy implements Initial
List<OrderGoodsChildParams> childParamsList = orderGoodsParams.getOrderGoodsChildParams(); List<OrderGoodsChildParams> childParamsList = orderGoodsParams.getOrderGoodsChildParams();
BigDecimal childSum = childParamsList.stream().map(OrderGoodsChildParams::getExtractWeight).reduce( BigDecimal childSum = childParamsList.stream().map(OrderGoodsChildParams::getExtractWeight).reduce(
BigDecimal.ZERO, BigDecimal::add); BigDecimal.ZERO, BigDecimal::add);
BigDecimal residueWeight = new BigDecimal(orderInfo.getResidueWeight()); if (orderCanExtractWeight.getOwnCanExtractWeight().compareTo(childSum) < 0) {
if (residueWeight.compareTo(childSum) < 0) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前货单总吨数已超订单总吨数"); throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前货单总吨数已超订单总吨数");
} }
if (childParamsList.size() > 1) { if (childParamsList.size() > 1) {
...@@ -213,11 +213,6 @@ public class OwnGoodsOrderStrategy extends GoodsOrderStrategy implements Initial ...@@ -213,11 +213,6 @@ public class OwnGoodsOrderStrategy extends GoodsOrderStrategy implements Initial
// 货单新增后置逻辑 // 货单新增后置逻辑
orderGoodsPostService.orderGoodsAdd(orderGoodsList); orderGoodsPostService.orderGoodsAdd(orderGoodsList);
UpdateOrderInfoResidueWeightParam param = new UpdateOrderInfoResidueWeightParam();
param.setOrderId(orderInfo.getId());
param.setUpdateType("1");
param.setResidueWeight(residueWeight.subtract(childSum));
orderFeign.updateOrderInfoResidueWeight(param);
sendMq(mqMap, now); sendMq(mqMap, now);
return sendLazyTime; return sendLazyTime;
} }
......
...@@ -3,9 +3,6 @@ package com.clx.performance.strategy.impl; ...@@ -3,9 +3,6 @@ package com.clx.performance.strategy.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.clx.order.enums.OrderEnum; import com.clx.order.enums.OrderEnum;
import com.clx.order.feign.OrderFeign; import com.clx.order.feign.OrderFeign;
import com.clx.order.param.feign.UpdateOrderInfoResidueWeightParam;
import com.clx.performance.param.pc.OrderGoodsChildParams;
import com.clx.performance.param.pc.OrderGoodsParams;
import com.clx.order.vo.feign.FeignOrderVO; import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.component.*; import com.clx.performance.component.*;
import com.clx.performance.constant.RabbitKeyConstants; import com.clx.performance.constant.RabbitKeyConstants;
...@@ -13,8 +10,11 @@ import com.clx.performance.dao.OrderGoodsDao; ...@@ -13,8 +10,11 @@ import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.OrderGoodsTruckBindDao; import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.enums.*; import com.clx.performance.enums.*;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.pc.OrderGoodsChildParams;
import com.clx.performance.param.pc.OrderGoodsParams;
import com.clx.performance.service.ordergoods.OrderGoodsPostService; import com.clx.performance.service.ordergoods.OrderGoodsPostService;
import com.clx.performance.strategy.GoodsOrderStrategy; import com.clx.performance.strategy.GoodsOrderStrategy;
import com.clx.performance.vo.feign.OrderExtractWeightVO;
import com.msl.common.exception.ServiceSystemException; import com.msl.common.exception.ServiceSystemException;
import com.msl.common.utils.DateUtils; import com.msl.common.utils.DateUtils;
import com.msl.user.data.UserSessionData; import com.msl.user.data.UserSessionData;
...@@ -65,7 +65,8 @@ public class PartGoodsOrderStrategy extends GoodsOrderStrategy implements Initia ...@@ -65,7 +65,8 @@ public class PartGoodsOrderStrategy extends GoodsOrderStrategy implements Initia
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public LocalDateTime goodsOrderProcess(OrderGoodsParams orderGoodsParams, FeignOrderVO orderInfo, LocalDateTime now) { public LocalDateTime goodsOrderProcess(OrderGoodsParams orderGoodsParams, FeignOrderVO orderInfo,
OrderExtractWeightVO orderCanExtractWeight,LocalDateTime now) {
String orderNo = orderGoodsParams.getOrderNo(); String orderNo = orderGoodsParams.getOrderNo();
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo); FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
if (!OrderEnum.Status.ON_ORDER.getCode().equals(orderInfoFeign.getOrderStatus())&& if (!OrderEnum.Status.ON_ORDER.getCode().equals(orderInfoFeign.getOrderStatus())&&
...@@ -83,12 +84,10 @@ public class PartGoodsOrderStrategy extends GoodsOrderStrategy implements Initia ...@@ -83,12 +84,10 @@ public class PartGoodsOrderStrategy extends GoodsOrderStrategy implements Initia
BigDecimal.ZERO, BigDecimal::add); BigDecimal.ZERO, BigDecimal::add);
BigDecimal ownSum = childParamsList.stream().filter(i -> !"1".equals(i.getVehicleUsage())).map(OrderGoodsChildParams::getExtractWeight).reduce( BigDecimal ownSum = childParamsList.stream().filter(i -> !"1".equals(i.getVehicleUsage())).map(OrderGoodsChildParams::getExtractWeight).reduce(
BigDecimal.ZERO, BigDecimal::add); BigDecimal.ZERO, BigDecimal::add);
BigDecimal platformCarryWeight = new BigDecimal(orderInfo.getPlatformResidueCarryWeight()); if (orderCanExtractWeight.getPlatCanExtractWeight().compareTo(platSum) < 0) {
if (platformCarryWeight.compareTo(platSum) < 0) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前平台承运货单总吨数已超平台承运订单总吨数"); throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前平台承运货单总吨数已超平台承运订单总吨数");
} }
BigDecimal ownCarryWeight = new BigDecimal(orderInfo.getOwnResidueCarryWeight()); if (orderCanExtractWeight.getOwnCanExtractWeight().compareTo(ownSum) < 0) {
if (ownCarryWeight.compareTo(ownSum) < 0) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前自有承运货单总吨数已超自有承运订单总吨数"); throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前自有承运货单总吨数已超自有承运订单总吨数");
} }
Map<String, LocalDateTime> mqMap = new HashMap<>(); Map<String, LocalDateTime> mqMap = new HashMap<>();
...@@ -205,39 +204,6 @@ public class PartGoodsOrderStrategy extends GoodsOrderStrategy implements Initia ...@@ -205,39 +204,6 @@ public class PartGoodsOrderStrategy extends GoodsOrderStrategy implements Initia
// 货单新增后置逻辑 // 货单新增后置逻辑
orderGoodsPostService.orderGoodsAdd(orderGoodsList); orderGoodsPostService.orderGoodsAdd(orderGoodsList);
BigDecimal residueWeight = new BigDecimal(orderInfo.getResidueWeight());
if (platSum.compareTo(BigDecimal.ZERO) != 0 && ownSum.compareTo(BigDecimal.ZERO) != 0) {
BigDecimal residuePlatSum = new BigDecimal(orderInfo.getPlatformResidueCarryWeight());
BigDecimal residueOwnSum = new BigDecimal(orderInfo.getOwnResidueCarryWeight());
UpdateOrderInfoResidueWeightParam param = new UpdateOrderInfoResidueWeightParam();
param.setOrderId(orderInfo.getId());
param.setUpdateType("4");
param.setResidueWeight(residueWeight.subtract(platSum).subtract(ownSum));
param.setOwnWeight(residueOwnSum.subtract(ownSum));
param.setPlatWeight(residuePlatSum.subtract(platSum));
orderFeign.updateOrderInfoResidueWeight(param);
} else if (platSum.compareTo(BigDecimal.ZERO) != 0 && ownSum.compareTo(BigDecimal.ZERO) == 0) {
BigDecimal residuePlatSum = new BigDecimal(orderInfo.getPlatformResidueCarryWeight());
UpdateOrderInfoResidueWeightParam param = new UpdateOrderInfoResidueWeightParam();
param.setOrderId(orderInfo.getId());
param.setUpdateType("2");
param.setResidueWeight(residueWeight.subtract(platSum));
param.setPlatWeight(residuePlatSum.subtract(platSum));
orderFeign.updateOrderInfoResidueWeight(param);
} else if (platSum.compareTo(BigDecimal.ZERO) == 0 && ownSum.compareTo(BigDecimal.ZERO) != 0) {
BigDecimal residueOwnSum = new BigDecimal(orderInfo.getOwnResidueCarryWeight());
UpdateOrderInfoResidueWeightParam param = new UpdateOrderInfoResidueWeightParam();
param.setOrderId(orderInfo.getId());
param.setUpdateType("3");
param.setResidueWeight(residueWeight.subtract(ownSum));
param.setOwnWeight(residueOwnSum.subtract(ownSum));
orderFeign.updateOrderInfoResidueWeight(param);
}
sendMq(mqMap, now); sendMq(mqMap, now);
return sendLazyTime; return sendLazyTime;
} }
......
...@@ -3,9 +3,6 @@ package com.clx.performance.strategy.impl; ...@@ -3,9 +3,6 @@ package com.clx.performance.strategy.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.clx.order.enums.OrderEnum; import com.clx.order.enums.OrderEnum;
import com.clx.order.feign.OrderFeign; import com.clx.order.feign.OrderFeign;
import com.clx.order.param.feign.UpdateOrderInfoResidueWeightParam;
import com.clx.performance.param.pc.OrderGoodsChildParams;
import com.clx.performance.param.pc.OrderGoodsParams;
import com.clx.order.vo.feign.FeignOrderVO; import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.component.*; import com.clx.performance.component.*;
import com.clx.performance.constant.RabbitKeyConstants; import com.clx.performance.constant.RabbitKeyConstants;
...@@ -13,8 +10,11 @@ import com.clx.performance.dao.OrderGoodsDao; ...@@ -13,8 +10,11 @@ import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.OrderGoodsTruckBindDao; import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.enums.*; import com.clx.performance.enums.*;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.pc.OrderGoodsChildParams;
import com.clx.performance.param.pc.OrderGoodsParams;
import com.clx.performance.service.ordergoods.OrderGoodsPostService; import com.clx.performance.service.ordergoods.OrderGoodsPostService;
import com.clx.performance.strategy.GoodsOrderStrategy; import com.clx.performance.strategy.GoodsOrderStrategy;
import com.clx.performance.vo.feign.OrderExtractWeightVO;
import com.msl.common.exception.ServiceSystemException; import com.msl.common.exception.ServiceSystemException;
import com.msl.common.utils.DateUtils; import com.msl.common.utils.DateUtils;
import com.msl.user.data.UserSessionData; import com.msl.user.data.UserSessionData;
...@@ -67,7 +67,8 @@ public class PlatformGoodsOrderStrategy extends GoodsOrderStrategy implements In ...@@ -67,7 +67,8 @@ public class PlatformGoodsOrderStrategy extends GoodsOrderStrategy implements In
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public LocalDateTime goodsOrderProcess(OrderGoodsParams orderGoodsParams, FeignOrderVO orderInfo, LocalDateTime now) { public LocalDateTime goodsOrderProcess(OrderGoodsParams orderGoodsParams, FeignOrderVO orderInfo,
OrderExtractWeightVO orderCanExtractWeight, LocalDateTime now) {
String orderNo = orderGoodsParams.getOrderNo(); String orderNo = orderGoodsParams.getOrderNo();
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo); FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
if (!OrderEnum.Status.ON_ORDER.getCode().equals(orderInfoFeign.getOrderStatus())&& if (!OrderEnum.Status.ON_ORDER.getCode().equals(orderInfoFeign.getOrderStatus())&&
...@@ -84,8 +85,7 @@ public class PlatformGoodsOrderStrategy extends GoodsOrderStrategy implements In ...@@ -84,8 +85,7 @@ public class PlatformGoodsOrderStrategy extends GoodsOrderStrategy implements In
List<OrderGoodsChildParams> childParamsList = orderGoodsParams.getOrderGoodsChildParams(); List<OrderGoodsChildParams> childParamsList = orderGoodsParams.getOrderGoodsChildParams();
BigDecimal childSum = childParamsList.stream().map(OrderGoodsChildParams::getExtractWeight).reduce( BigDecimal childSum = childParamsList.stream().map(OrderGoodsChildParams::getExtractWeight).reduce(
BigDecimal.ZERO, BigDecimal::add); BigDecimal.ZERO, BigDecimal::add);
BigDecimal residueWeight = new BigDecimal(orderInfo.getResidueWeight()); if (orderCanExtractWeight.getPlatCanExtractWeight().compareTo(childSum) < 0) {
if (residueWeight.compareTo(childSum) < 0) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前货单总吨数已超订单总吨数"); throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前货单总吨数已超订单总吨数");
} }
long beginOrderGoodsId = orderGoodsIdGenerate.getOrderGoodsId(childParamsList.size()); long beginOrderGoodsId = orderGoodsIdGenerate.getOrderGoodsId(childParamsList.size());
...@@ -198,12 +198,6 @@ public class PlatformGoodsOrderStrategy extends GoodsOrderStrategy implements In ...@@ -198,12 +198,6 @@ public class PlatformGoodsOrderStrategy extends GoodsOrderStrategy implements In
// 货单新增后置逻辑 // 货单新增后置逻辑
orderGoodsPostService.orderGoodsAdd(orderGoodsList); orderGoodsPostService.orderGoodsAdd(orderGoodsList);
UpdateOrderInfoResidueWeightParam param = new UpdateOrderInfoResidueWeightParam();
param.setOrderId(orderInfo.getId());
param.setUpdateType("1");
param.setResidueWeight(residueWeight.subtract(childSum));
orderFeign.updateOrderInfoResidueWeight(param);
sendMq(mqMap, now); sendMq(mqMap, now);
return sendLazyTime; return sendLazyTime;
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论