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

Merge remote-tracking branch 'origin/v20.8_add_sub_weight_20240805' into dev

# Conflicts: # performance-web/src/main/java/com/clx/performance/controller/pc/GoodsOrderController.java # performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java
...@@ -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;
......
...@@ -30,4 +30,12 @@ public class OrderChildPCVO { ...@@ -30,4 +30,12 @@ public class OrderChildPCVO {
@ApiModelProperty("司机手机号") @ApiModelProperty("司机手机号")
private String driverMobile; private String driverMobile;
@ApiModelProperty("接单时间")
private String createTime;
@ApiModelProperty("完成时间")
private String finishTime;
} }
\ No newline at end of file
package com.clx.performance.component; package com.clx.performance.component;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.clx.order.enums.VehicleUsageEnum;
import com.clx.order.feign.OrderFeign; import com.clx.order.feign.OrderFeign;
import com.clx.order.param.feign.RollbackOrderWeightParam;
import com.clx.performance.constant.RedisConstants; import com.clx.performance.constant.RedisConstants;
import com.clx.performance.dao.OrderChildDao; import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao; 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.OrderChildEnum;
import com.clx.performance.enums.OrderChildLogEnum;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.enums.OrderGoodsTruckBindEnum;
import com.clx.performance.extranal.user.DriverService; import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
...@@ -30,7 +31,9 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -30,7 +31,9 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneOffset; import java.time.ZoneOffset;
import java.util.*; import java.util.LinkedList;
import java.util.List;
import java.util.Set;
/** /**
* 货单最晚接单时间、最晚到达货源地时间处理 * 货单最晚接单时间、最晚到达货源地时间处理
...@@ -90,7 +93,6 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean { ...@@ -90,7 +93,6 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
public void consumingLastOrderTime() { public void consumingLastOrderTime() {
log.info("货单-最晚接单时间-定时器启动"); log.info("货单-最晚接单时间-定时器启动");
long nowTimeMillis = System.currentTimeMillis(); long nowTimeMillis = System.currentTimeMillis();
LocalDateTime nowDateTime = new Date(nowTimeMillis).toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime();
Set<ZSetOperations.TypedTuple<String>> orderGoodsIds = redisTemplate.opsForZSet().rangeByScoreWithScores( Set<ZSetOperations.TypedTuple<String>> orderGoodsIds = redisTemplate.opsForZSet().rangeByScoreWithScores(
RedisConstants.ORDER_GOODS_STATUS_LAZY_LAST_ORDER_TIME, RedisConstants.ORDER_GOODS_STATUS_LAZY_LAST_ORDER_TIME,
0, nowTimeMillis //延时任务score最小值 0, nowTimeMillis //延时任务score最小值
...@@ -118,9 +120,6 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean { ...@@ -118,9 +120,6 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
continue; continue;
} }
OrderGoods orderGoods = optional.get(); OrderGoods orderGoods = optional.get();
// if(Objects.equals(orderGoods.getOrderGoodsStatus(),OrderGoodsStatusEnum.Status.CANCEL.getCode())){
// continue;
// }
if (orderGoods.getResidueTransportWeight().compareTo(BigDecimal.ZERO) == 0) { if (orderGoods.getResidueTransportWeight().compareTo(BigDecimal.ZERO) == 0) {
List<OrderChild> orderChildren = orderChildDao.selectInTransitOrderChildByOrderGoodsNo(orderGoodsNo); List<OrderChild> orderChildren = orderChildDao.selectInTransitOrderChildByOrderGoodsNo(orderGoodsNo);
...@@ -134,33 +133,10 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean { ...@@ -134,33 +133,10 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
orderGoodsDao.updateOrderGoodsStatusByOrderGoodsNo(orderGoodsNo, OrderGoodsStatusEnum.Status.SUCCESS.getCode()); orderGoodsDao.updateOrderGoodsStatusByOrderGoodsNo(orderGoodsNo, OrderGoodsStatusEnum.Status.SUCCESS.getCode());
} }
} else { } else {
OrderGoods update = new OrderGoods(); OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId()); update.setId(orderGoods.getId());
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode()); update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
//大于35吨的归还吨数在这里处理
if(orderGoods.getResidueTransportWeight().compareTo(new BigDecimal("35")) >= 0){
RollbackOrderWeightParam param = new RollbackOrderWeightParam();
param.setOrderNo(orderGoods.getOrderNo());
param.setResidueWeight(orderGoods.getResidueTransportWeight());
if (orderGoods.getTruckDemand().equals(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode())
|| orderGoods.getTruckDemand().equals(TruckDemandEnum.TruckType.OWNER_CAR.getCode())) {
param.setOwnResidueCarryWeight(BigDecimal.ZERO);
param.setPlatformResidueCarryWeight(BigDecimal.ZERO);
} else {
if (orderGoods.getVehicleUsage().equals(VehicleUsageEnum.Status.PLATFORM.getCode())) {
param.setOwnResidueCarryWeight(BigDecimal.ZERO);
param.setPlatformResidueCarryWeight(orderGoods.getResidueTransportWeight());
} else if (orderGoods.getVehicleUsage().equals(VehicleUsageEnum.Status.OWN.getCode())) {
param.setOwnResidueCarryWeight(orderGoods.getResidueTransportWeight());
param.setPlatformResidueCarryWeight(BigDecimal.ZERO);
}
}
orderFeign.rollbackOrderWeight(param);
//更新剩余吨数
update.setResidueTransportWeight(BigDecimal.ZERO);
}
//更新已完结 //更新已完结
orderGoodsDao.updateEntityByKey(update); orderGoodsDao.updateEntityByKey(update);
log.info("删除redis ORDER_GOODS_STATUS_LAZY id: {}", orderGoodsId.getValue()); log.info("删除redis ORDER_GOODS_STATUS_LAZY id: {}", orderGoodsId.getValue());
...@@ -238,35 +214,10 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean { ...@@ -238,35 +214,10 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
orderChildDao.batchUpdateOrderChildStatus(OrderChildEnum.Status.PLATFORM_CANCEL.getCode(), "系统自动取消,未按照最晚装货时间到达货源地", now, now, childNoList); orderChildDao.batchUpdateOrderChildStatus(OrderChildEnum.Status.PLATFORM_CANCEL.getCode(), "系统自动取消,未按照最晚装货时间到达货源地", now, now, childNoList);
} }
//更新货单未拉运吨数,已拉运吨数
orderGoodsDao.updateOrderGoodsSetResidueWeightAndAlreadyWeight(childSum, childSum, orderGoods.getId());
//当前货单已经到了最晚接单时间,所有相关状态均已经处理完毕,此刻单独处理运单的数据
if (OrderGoodsStatusEnum.Status.SUCCESS.getCode().equals(orderGoods.getOrderGoodsStatus())
|| OrderGoodsStatusEnum.Status.COMPLETED.getCode().equals(orderGoods.getOrderGoodsStatus())
) {
RollbackOrderWeightParam param = new RollbackOrderWeightParam();
param.setOrderNo(orderGoods.getOrderNo());
param.setResidueWeight(childSum);
//当前情况需要回填订单的余量
if (orderGoods.getTruckDemand().equals(1) || orderGoods.getTruckDemand().equals(3)) {
param.setOwnResidueCarryWeight(BigDecimal.ZERO);
param.setPlatformResidueCarryWeight(BigDecimal.ZERO);
} else {
if (orderGoods.getVehicleUsage().equals(VehicleUsageEnum.Status.PLATFORM.getCode())) {
param.setOwnResidueCarryWeight(BigDecimal.ZERO);
param.setPlatformResidueCarryWeight(orderGoods.getResidueTransportWeight());
} else if (orderGoods.getVehicleUsage().equals(VehicleUsageEnum.Status.OWN.getCode())) {
param.setOwnResidueCarryWeight(orderGoods.getResidueTransportWeight());
param.setPlatformResidueCarryWeight(BigDecimal.ZERO);
}
}
//只更新货单已拉运吨数
orderGoodsDao.updateOrderGoodsSetResidueWeightAndAlreadyWeight(childSum, childSum, orderGoods.getId());
orderFeign.rollbackOrderWeight(param);
} else {
//只更新货单未拉运吨数,已拉运吨数
orderGoodsDao.updateOrderGoodsSetResidueWeightAndAlreadyWeight(childSum, childSum, orderGoods.getId());
}
redisTemplate.opsForZSet().remove(RedisConstants.ORDER_GOODS_STATUS_LAZY_LAST_ARRIVE_SEND_TIME, orderGoodsId.getValue()); redisTemplate.opsForZSet().remove(RedisConstants.ORDER_GOODS_STATUS_LAZY_LAST_ARRIVE_SEND_TIME, orderGoodsId.getValue());
......
...@@ -12,6 +12,8 @@ import com.clx.performance.service.OrderChildService; ...@@ -12,6 +12,8 @@ import com.clx.performance.service.OrderChildService;
import com.clx.performance.service.OrderGoodsAdjustmentPriceService; import com.clx.performance.service.OrderGoodsAdjustmentPriceService;
import com.clx.performance.service.OrderGoodsService; import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.service.OrderGoodsTruckBindService; import com.clx.performance.service.OrderGoodsTruckBindService;
import com.clx.performance.service.*;
import com.clx.performance.vo.feign.OrderExtractWeightVO;
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;
...@@ -76,6 +78,9 @@ public class GoodsOrderController { ...@@ -76,6 +78,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)
...@@ -93,7 +98,11 @@ public class GoodsOrderController { ...@@ -93,7 +98,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());
......
package com.clx.performance.controller.pc; package com.clx.performance.controller.pc;
import com.clx.performance.model.OrderChild;
import com.clx.performance.service.LastTruckService; import com.clx.performance.service.LastTruckService;
import com.clx.performance.struct.OrderChildStruct;
import com.clx.performance.vo.app.OrderChildVO; import com.clx.performance.vo.app.OrderChildVO;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -32,13 +34,15 @@ import javax.validation.constraints.NotBlank; ...@@ -32,13 +34,15 @@ import javax.validation.constraints.NotBlank;
public class LastTruckController { public class LastTruckController {
private final LastTruckService lastTruckService; private final LastTruckService lastTruckService;
private final OrderChildStruct orderChildStruct;
@ApiOperation(value = "查询订单下的最后一车",notes = "<br>By:刘海泉") @ApiOperation(value = "查询订单下的最后一车",notes = "<br>By:刘海泉")
@GetMapping("/getOrderLastTruck") @GetMapping("/getOrderLastTruck")
public Result<OrderChildVO> getOrderLastTruck(@RequestParam("orderNo") public Result<OrderChildVO> getOrderLastTruck(@RequestParam("orderNo")
@NotBlank(message = "订单编号不能为空") String orderNo) throws Exception{ @NotBlank(message = "订单编号不能为空") String orderNo) throws Exception{
return Result.ok(lastTruckService.getOrderLastTruck(orderNo)); OrderChild child = lastTruckService.getOrderLastTruck(orderNo);
return Result.ok(orderChildStruct.convert(child));
} }
......
...@@ -69,4 +69,6 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe ...@@ -69,4 +69,6 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe
void batchUpdateBindTruckList(String orderGoodsNo, Integer code, List<String> truckNo); void batchUpdateBindTruckList(String orderGoodsNo, Integer code, List<String> truckNo);
List<OrderGoodsTruckBind> queryNotOrderTruck(List<String> cancelTruckBindOrderGoodsNoList); List<OrderGoodsTruckBind> queryNotOrderTruck(List<String> cancelTruckBindOrderGoodsNoList);
void batchCancelTruckList(List<OrderGoodsTruckBind> updateList);
} }
...@@ -231,4 +231,9 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM ...@@ -231,4 +231,9 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
return baseMapper.selectList(lQrWrapper().in(OrderGoodsTruckBind::getOrderGoodsNo, cancelTruckBindOrderGoodsNoList) return baseMapper.selectList(lQrWrapper().in(OrderGoodsTruckBind::getOrderGoodsNo, cancelTruckBindOrderGoodsNoList)
.eq(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.NORMAL.getCode())); .eq(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.NORMAL.getCode()));
} }
@Override
public void batchCancelTruckList(List<OrderGoodsTruckBind> updateList) {
baseMapper.batchCancelTruckList(updateList);
}
} }
...@@ -171,7 +171,7 @@ public class OrderChildDtsListener { ...@@ -171,7 +171,7 @@ public class OrderChildDtsListener {
Objects.nonNull(byCode)?byCode.getName():"未知状态"); Objects.nonNull(byCode)?byCode.getName():"未知状态");
child = lastTruckService.getOrderCompleteLastTruck(after.getOrderNo()); child = lastTruckService.getOrderCompleteLastTruck(after.getOrderNo());
}else{ // 订单除 已完成 || 已完结 外的其他状态 }else{ // 订单除 已完成 || 已完结 外的其他状态
child = lastTruckService.getLastTruckChild(after.getOrderNo()); child = lastTruckService.getOrderLastTruck(after.getOrderNo());
} }
if (Objects.nonNull(child)) { if (Objects.nonNull(child)) {
log.info("开始同步新货主客户端最后一车的运单,运单编号:{}", child.getChildNo()); log.info("开始同步新货主客户端最后一车的运单,运单编号:{}", child.getChildNo());
...@@ -222,7 +222,7 @@ public class OrderChildDtsListener { ...@@ -222,7 +222,7 @@ public class OrderChildDtsListener {
} }
} }
public void syncLastTruck(FeignOrderVO orderInfoFeign,OrderChildMessage after){ public void syncLastTruck(FeignOrderVO orderInfoFeign,OrderChildMessage after) {
//当运单状态为到达目的地之后的状态时候,需要判断最后一车的逻辑 //当运单状态为到达目的地之后的状态时候,需要判断最后一车的逻辑
if(Objects.equals(com.clx.open.sdk.enums.OrderChildEnum.Status.COMMON_CANCEL.getCode(),after.getStatus()) || if(Objects.equals(com.clx.open.sdk.enums.OrderChildEnum.Status.COMMON_CANCEL.getCode(),after.getStatus()) ||
(after.getStatus() >= OrderChildEnum.Status.ARRIVE_RECEIVE.getCode() && after.getStatus() <= OrderChildEnum.Status.COMPLETE.getCode())){ (after.getStatus() >= OrderChildEnum.Status.ARRIVE_RECEIVE.getCode() && after.getStatus() <= OrderChildEnum.Status.COMPLETE.getCode())){
...@@ -234,7 +234,7 @@ public class OrderChildDtsListener { ...@@ -234,7 +234,7 @@ public class OrderChildDtsListener {
Objects.nonNull(byCode)?byCode.getName():"未知状态"); Objects.nonNull(byCode)?byCode.getName():"未知状态");
child = lastTruckService.getOrderCompleteLastTruck(after.getOrderNo()); child = lastTruckService.getOrderCompleteLastTruck(after.getOrderNo());
}else{ // 订单除 已完成 || 已完结 外的其他状态 }else{ // 订单除 已完成 || 已完结 外的其他状态
child = lastTruckService.getLastTruckChild(after.getOrderNo()); child = lastTruckService.getOrderLastTruck(after.getOrderNo());
} }
if(Objects.nonNull(child)){ if(Objects.nonNull(child)){
lastTruckService.syncLastTruckChild(child); lastTruckService.syncLastTruckChild(child);
......
...@@ -57,7 +57,7 @@ public class OrderGoodsDtsListener { ...@@ -57,7 +57,7 @@ public class OrderGoodsDtsListener {
sendSaveOrderGoodsAdjustmentPriceMessage(before,after,DtsOperationTypeEnum.INSERT.getCode()); sendSaveOrderGoodsAdjustmentPriceMessage(before,after,DtsOperationTypeEnum.INSERT.getCode());
}else if(Objects.equals(DtsOperationTypeEnum.UPDATE.getCode(),dataTransportDTO.getOperationType().getCode())){ }else if(Objects.equals(DtsOperationTypeEnum.UPDATE.getCode(),dataTransportDTO.getOperationType().getCode())){
log.info("修改:{}",JSON.toJSONString(after)); log.info("修改:{}",JSON.toJSONString(after));
backFillOrderWeight(after); //backFillOrderWeight(after);
syncPerformanceProgress(before,after,DtsOperationTypeEnum.UPDATE.getCode()); syncPerformanceProgress(before,after,DtsOperationTypeEnum.UPDATE.getCode());
sendSaveOrderGoodsAdjustmentPriceMessage(before,after,DtsOperationTypeEnum.UPDATE.getCode()); sendSaveOrderGoodsAdjustmentPriceMessage(before,after,DtsOperationTypeEnum.UPDATE.getCode());
}else if(Objects.equals(DtsOperationTypeEnum.DELETE.getCode(),dataTransportDTO.getOperationType().getCode())){ }else if(Objects.equals(DtsOperationTypeEnum.DELETE.getCode(),dataTransportDTO.getOperationType().getCode())){
......
...@@ -38,4 +38,8 @@ public interface OrderGoodsTruckBindMapper extends BaseMapper<OrderGoodsTruckBin ...@@ -38,4 +38,8 @@ public interface OrderGoodsTruckBindMapper extends BaseMapper<OrderGoodsTruckBin
@SelectProvider(type = OrderGoodsTruckBindSqlProvider.class, method = "queryOrderGoodsTruckNum") @SelectProvider(type = OrderGoodsTruckBindSqlProvider.class, method = "queryOrderGoodsTruckNum")
List<OrderGoodsBindTruckNumDTO> queryOrderGoodsTruckNum(List<String> fleetNoList); 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; package com.clx.performance.service;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.vo.app.OrderChildVO;
import com.msl.common.result.Result; import com.msl.common.result.Result;
public interface LastTruckService { public interface LastTruckService {
...@@ -15,7 +14,7 @@ public interface LastTruckService { ...@@ -15,7 +14,7 @@ public interface LastTruckService {
Result<?> syncLastTruckChild4OrderTrigger(String orderNo); Result<?> syncLastTruckChild4OrderTrigger(String orderNo);
OrderChildVO getOrderLastTruck(String orderNo) throws Exception; OrderChild getOrderLastTruck(String orderNo);
......
package com.clx.performance.service; package com.clx.performance.service;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildLog; import com.clx.performance.model.OrderChildLog;
import java.util.List; import java.util.List;
...@@ -15,5 +16,5 @@ public interface OrderChildLogService { ...@@ -15,5 +16,5 @@ public interface OrderChildLogService {
void saveBatchOrderChildLog(List<OrderChildLog> logs); void saveBatchOrderChildLog(List<OrderChildLog> logs);
void batchSaveCarrierOrderChildLogs(List<OrderChildLog> logs); void batchSaveCarrierOrderChildLogs(List<OrderChild> canCancelOrderChildList,Long userNo,String userName);
} }
...@@ -14,11 +14,11 @@ import com.clx.performance.dao.OrderChildDao; ...@@ -14,11 +14,11 @@ import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.service.LastTruckService; import com.clx.performance.service.LastTruckService;
import com.clx.performance.struct.OrderChildStruct; import com.clx.performance.struct.OrderChildStruct;
import com.clx.performance.vo.app.OrderChildVO;
import com.msl.common.exception.ServiceSystemException; import com.msl.common.exception.ServiceSystemException;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.redisson.api.RLock; import org.redisson.api.RLock;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
...@@ -90,8 +90,15 @@ public class LastTruckServiceImpl implements LastTruckService { ...@@ -90,8 +90,15 @@ public class LastTruckServiceImpl implements LastTruckService {
return result; return result;
} }
//在没有算出最后一车的前提下,订单变成已完结或者已完成状态,但是订单量可能并没有提取完,所以只需要判断订单下是否还有未到达 目的地的运单,没有则进行最后一车运算
@Override @Override
public OrderChild getOrderCompleteLastTruck(String orderNo) { public OrderChild getOrderCompleteLastTruck(String orderNo) {
String lastTruckCacheKey = getLastTruckCacheKey(orderNo);
//已经计算出最后一车,则直接返回运单信息
if(Objects.equals(Boolean.TRUE,redisTemplate.hasKey(lastTruckCacheKey))){
String childNo = redisTemplate.opsForValue().get(lastTruckCacheKey);
return orderChildDao.getByChildNo(childNo).orElseThrow(ResultEnum.DATA_NOT_FIND);
}else{
//判断当前订单下是否存在未到达目的地之前的运单 && 排除掉已取消的运单 //判断当前订单下是否存在未到达目的地之前的运单 && 排除掉已取消的运单
Long count = orderChildDao.haveArriveReceiveChild(orderNo); Long count = orderChildDao.haveArriveReceiveChild(orderNo);
log.info("已完成/已完结的订单号:{},查询运单状态非取消并且在到达目的地之前的运单数量为:{}",orderNo,count); log.info("已完成/已完结的订单号:{},查询运单状态非取消并且在到达目的地之前的运单数量为:{}",orderNo,count);
...@@ -101,6 +108,7 @@ public class LastTruckServiceImpl implements LastTruckService { ...@@ -101,6 +108,7 @@ public class LastTruckServiceImpl implements LastTruckService {
} }
return null; return null;
} }
}
...@@ -120,8 +128,7 @@ public class LastTruckServiceImpl implements LastTruckService { ...@@ -120,8 +128,7 @@ public class LastTruckServiceImpl implements LastTruckService {
//调用此方法前查订单是否存在最后一车,存在则不进行该方法调用 //调用此方法前查订单是否存在最后一车,存在则不进行该方法调用
@Override @Override
public OrderChildVO getOrderLastTruck(String orderNo) throws Exception { public OrderChild getOrderLastTruck(String orderNo){
FeignOrderVO orderInfo = orderFeign.getOrderInfoFeign(orderNo); FeignOrderVO orderInfo = orderFeign.getOrderInfoFeign(orderNo);
if(Objects.isNull(orderInfo)){ if(Objects.isNull(orderInfo)){
log.error("计算订单最后一车,通过订单号:{},未查询到对应的订单",orderNo); log.error("计算订单最后一车,通过订单号:{},未查询到对应的订单",orderNo);
...@@ -131,13 +138,11 @@ public class LastTruckServiceImpl implements LastTruckService { ...@@ -131,13 +138,11 @@ public class LastTruckServiceImpl implements LastTruckService {
//为每个货主的订单进行加锁,计算最后一车进行排队,防止多个运单dts监听并发导致最后一车重复计算 //为每个货主的订单进行加锁,计算最后一车进行排队,防止多个运单dts监听并发导致最后一车重复计算
RLock lock = redissonClient.getLock(RedissonConstants.CALC_ORDER_LAST_TRUCK_LOCK + orderNo); RLock lock = redissonClient.getLock(RedissonConstants.CALC_ORDER_LAST_TRUCK_LOCK + orderNo);
try{ try{
String lastTruckCacheKey = getLastTruckCacheKey(orderNo); String lastTruckCacheKey = getLastTruckCacheKey(orderNo);
//已经计算出最后一车,则直接返回运单信息 //已经计算出最后一车,则直接返回运单信息
if(Objects.equals(Boolean.TRUE,redisTemplate.hasKey(lastTruckCacheKey))){ if(Objects.equals(Boolean.TRUE,redisTemplate.hasKey(lastTruckCacheKey))){
String childNo = redisTemplate.opsForValue().get(lastTruckCacheKey); String childNo = redisTemplate.opsForValue().get(lastTruckCacheKey);
OrderChild child = orderChildDao.getByChildNo(childNo).orElseThrow(ResultEnum.DATA_NOT_FIND); return orderChildDao.getByChildNo(childNo).orElseThrow(ResultEnum.DATA_NOT_FIND);
return orderChildStruct.convert(child);
} }
boolean flag = lock.tryLock(15, 30, TimeUnit.SECONDS); boolean flag = lock.tryLock(15, 30, TimeUnit.SECONDS);
if (!flag) { if (!flag) {
...@@ -154,14 +159,17 @@ public class LastTruckServiceImpl implements LastTruckService { ...@@ -154,14 +159,17 @@ public class LastTruckServiceImpl implements LastTruckService {
log.info("当前订单计算出最后一车,运单编号:{} ", child.getChildNo()); log.info("当前订单计算出最后一车,运单编号:{} ", child.getChildNo());
//更新订单最后一车到缓存,并设置有效期为60天 //更新订单最后一车到缓存,并设置有效期为60天
redisTemplate.opsForValue().set(getLastTruckCacheKey(orderNo),child.getChildNo(),60, TimeUnit.DAYS); redisTemplate.opsForValue().set(getLastTruckCacheKey(orderNo),child.getChildNo(),60, TimeUnit.DAYS);
return orderChildStruct.convert(child); return child;
} }
return null; return null;
} catch (InterruptedException e){
log.warn("计算订单最后一车发生异常,异常原因:{}", ExceptionUtils.getStackTrace(e));
}finally { }finally {
if (lock.isLocked() && lock.isHeldByCurrentThread()) { if (lock.isLocked() && lock.isHeldByCurrentThread()) {
lock.unlock(); lock.unlock();
} }
} }
return null;
} }
public String getLastTruckCacheKey(String orderNo){ public String getLastTruckCacheKey(String orderNo){
......
...@@ -2,12 +2,14 @@ package com.clx.performance.service.impl; ...@@ -2,12 +2,14 @@ package com.clx.performance.service.impl;
import com.clx.performance.dao.OrderChildLogDao; import com.clx.performance.dao.OrderChildLogDao;
import com.clx.performance.enums.OrderChildLogEnum; import com.clx.performance.enums.OrderChildLogEnum;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildLog; import com.clx.performance.model.OrderChildLog;
import com.clx.performance.service.OrderChildLogService; import com.clx.performance.service.OrderChildLogService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@Slf4j @Slf4j
...@@ -54,7 +56,20 @@ public class OrderChildLogServiceImpl implements OrderChildLogService { ...@@ -54,7 +56,20 @@ public class OrderChildLogServiceImpl implements OrderChildLogService {
} }
@Override @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); orderChildLogDao.saveBatchList(logs);
} }
} }
...@@ -240,6 +240,8 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -240,6 +240,8 @@ public class OrderChildServiceImpl implements OrderChildService {
private DocumentFeign documentFeign; private DocumentFeign documentFeign;
@Autowired @Autowired
private UserClxFeign userClxFeign; private UserClxFeign userClxFeign;
@Autowired
private OrderWeightService orderWeightService;
@PostConstruct @PostConstruct
public void init(){ public void init(){
...@@ -422,18 +424,8 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -422,18 +424,8 @@ public class OrderChildServiceImpl implements OrderChildService {
} }
} }
// 库存验证 // 验证是否有足量去接该运单
if (orderGoods.getResidueTransportWeight().compareTo(new BigDecimal("35")) < 0) { if(judgeNotEnoughWeightOrdered(orderGoods.getResidueTransportWeight(),orderInfo.getOrderNo())){
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){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_WEIGHT_LACK); throw new ServiceSystemException(PerformanceResultEnum.ORDER_WEIGHT_LACK);
} }
...@@ -559,6 +551,18 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -559,6 +551,18 @@ public class OrderChildServiceImpl implements OrderChildService {
return result; 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 * @Author kavin
* @Description 计算接单时,车辆距离发货地和收货地的用时时间 * @Description 计算接单时,车辆距离发货地和收货地的用时时间
...@@ -2112,7 +2116,15 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -2112,7 +2116,15 @@ public class OrderChildServiceImpl implements OrderChildService {
orderGoodsStatus = orderGoods.getOrderGoodsStatus(); orderGoodsStatus = orderGoods.getOrderGoodsStatus();
} }
if (dif.compareTo(BigDecimal.ZERO) != 0) { if (dif.compareTo(BigDecimal.ZERO) != 0) {
//判断是从订单借吨还是直接货单进行扣减(货单剩余吨数小于本运单的修改后的吨数差值) BigDecimal orderResidueWeight = orderWeightService.getOrderResidueWeight(orderGoods.getOrderNo());
if(orderResidueWeight.compareTo(dif) < 0){
throw new ServiceSystemException(ORDER_WEIGHT_LACK);
}
//运单修改装车吨数,从货单进行扣减
log.info("货单号:{},运单号 :{},扣减吨数:{}",orderGoods.getOrderGoodsNo(),childNo, dif);
orderGoodsDao.updateOrderGoodsReduceWeightAndStatus(orderGoods.getId(), dif, orderGoodsStatus);
/* //判断是从订单借吨还是直接货单进行扣减(货单剩余吨数小于本运单的修改后的吨数差值)
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,
...@@ -2121,7 +2133,7 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -2121,7 +2133,7 @@ public class OrderChildServiceImpl implements OrderChildService {
log.info("货单吨数有剩余,归还吨数:{}", dif); log.info("货单吨数有剩余,归还吨数:{}", dif);
// 货单吨数够扣减,直接更新货单剩余吨数和已拉运吨数和状态 // 货单吨数够扣减,直接更新货单剩余吨数和已拉运吨数和状态
orderGoodsDao.updateOrderGoodsReduceWeightAndStatus(orderGoods.getId(), dif, orderGoodsStatus); orderGoodsDao.updateOrderGoodsReduceWeightAndStatus(orderGoods.getId(), dif, orderGoodsStatus);
} }*/
} }
} }
...@@ -3178,25 +3190,15 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -3178,25 +3190,15 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setStatus(OrderChildEnum.Status.PLATFORM_CANCEL.getCode()); orderChild.setStatus(OrderChildEnum.Status.PLATFORM_CANCEL.getCode());
}); });
//取消运单
orderChildDao.batchUpdateCancel(canCancelOrderChildList); 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, canCancelOrderChildList.forEach(orderChild-> orderChildPostService.orderChildCancelByCarrier(orderChild,
...@@ -3279,4 +3281,36 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -3279,4 +3281,36 @@ public class OrderChildServiceImpl implements OrderChildService {
} }
driverService.batchUpdateDriverAndTruckStatusCancel(paramList); 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);
}
}
} }
...@@ -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)
......
...@@ -118,7 +118,7 @@ public class OrderGoodsSqlProvider { ...@@ -118,7 +118,7 @@ public class OrderGoodsSqlProvider {
} }
WHERE("a.last_arrive_send_time >= now()"); WHERE("a.last_arrive_send_time >= now()");
WHERE("a.order_goods_status IN ( "+OrderGoodsStatusEnum.Status.PAYING.getCode()+","+OrderGoodsStatusEnum.Status.GO_TO_SEND.getCode()+")"); WHERE("a.order_goods_status IN ( "+OrderGoodsStatusEnum.Status.PAYING.getCode()+","+OrderGoodsStatusEnum.Status.GO_TO_SEND.getCode()+")");
WHERE("a.residue_transport_weight >=35"); WHERE("a.residue_transport_weight > 0");
ORDER_BY("a.pending_order_time desc"); ORDER_BY("a.pending_order_time desc");
}}.toString(); }}.toString();
return sql; return sql;
...@@ -134,7 +134,7 @@ public class OrderGoodsSqlProvider { ...@@ -134,7 +134,7 @@ public class OrderGoodsSqlProvider {
WHERE(" a.pending_order_way = " + PendingOrderWayStatusEnum.Status.FLEET_GK.getCode()); WHERE(" a.pending_order_way = " + PendingOrderWayStatusEnum.Status.FLEET_GK.getCode());
WHERE("a.last_arrive_send_time >= now()"); WHERE("a.last_arrive_send_time >= now()");
WHERE("a.order_goods_status IN ( "+OrderGoodsStatusEnum.Status.PAYING.getCode()+","+OrderGoodsStatusEnum.Status.GO_TO_SEND.getCode()+")"); WHERE("a.order_goods_status IN ( "+OrderGoodsStatusEnum.Status.PAYING.getCode()+","+OrderGoodsStatusEnum.Status.GO_TO_SEND.getCode()+")");
WHERE("a.residue_transport_weight >=35"); WHERE("a.residue_transport_weight > 0");
WHERE("b.id is not null"); WHERE("b.id is not null");
}}.toString(); }}.toString();
return sql; return sql;
......
...@@ -2,6 +2,7 @@ package com.clx.performance.sqlProvider; ...@@ -2,6 +2,7 @@ package com.clx.performance.sqlProvider;
import com.clx.performance.enums.OrderGoodsStatusEnum; import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.enums.OrderGoodsTruckBindEnum; import com.clx.performance.enums.OrderGoodsTruckBindEnum;
import com.clx.performance.model.OrderGoodsTruckBind;
import org.apache.ibatis.jdbc.SQL; import org.apache.ibatis.jdbc.SQL;
import java.util.List; import java.util.List;
...@@ -59,4 +60,19 @@ public class OrderGoodsTruckBindSqlProvider { ...@@ -59,4 +60,19 @@ public class OrderGoodsTruckBindSqlProvider {
GROUP_BY("a.order_goods_no"); GROUP_BY("a.order_goods_no");
}}.toString(); }}.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();
}
} }
...@@ -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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论