|
|
@@ -148,20 +148,19 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
|
|
|
public HttpResult completeLogisticsOrder(CompleteLogisticsOrderParam param) {
|
|
|
log.info("物流订单完结入参:{}", JSON.toJSONString(param));
|
|
|
Long id = param.getTOrderId();
|
|
|
- BigDecimal entrustAmount = param.getEntrustAmount();
|
|
|
BigDecimal actualLoadAmount = param.getActualLoadAmount();
|
|
|
BigDecimal actualUnloadAmount = param.getActualUnloadAmount();
|
|
|
Long updateBy = param.getUpdateBy();
|
|
|
String updateByName = param.getUpdateByName();
|
|
|
- if (Objects.isNull(updateBy) || StringUtils.isBlank(updateByName)) {
|
|
|
- return HttpResult.error("操作人信息不能为空!");
|
|
|
- }
|
|
|
- if (Objects.isNull(entrustAmount) || Objects.isNull(actualLoadAmount) || Objects.isNull(actualUnloadAmount)) {
|
|
|
- return HttpResult.error("任务量或装卸量不能为空!");
|
|
|
+ if (Objects.isNull(actualLoadAmount) || Objects.isNull(actualUnloadAmount)) {
|
|
|
+ return HttpResult.error("装卸总量不能为空!");
|
|
|
}
|
|
|
if (Objects.isNull(param.getIsAllComplete())) {
|
|
|
return HttpResult.error("物流订单是否已全部完结不能为空!");
|
|
|
}
|
|
|
+ if (Objects.isNull(updateBy) || StringUtils.isBlank(updateByName)) {
|
|
|
+ return HttpResult.error("操作人信息不能为空!");
|
|
|
+ }
|
|
|
String lockKey = String.format(RedisConstant.TORDER_UPDATE_AMOUNT_KEY, id);
|
|
|
if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 5L, 10L))) {
|
|
|
return HttpResult.error("业务繁忙,请稍后再试!");
|
|
|
@@ -174,15 +173,9 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
|
|
|
if (!Objects.equals(String.valueOf(order.getStatus()), DictEnum.TORDER_STATUS_4.getValue())) {
|
|
|
return HttpResult.error("执行中的订单才可物流托运!");
|
|
|
}
|
|
|
- BigDecimal totalEntrustAmount = Objects.isNull(order.getEntrustAmount()) ? entrustAmount : order.getEntrustAmount().add(entrustAmount);
|
|
|
- BigDecimal totalActualAmount;
|
|
|
- if (Objects.equals(order.getDeliveryType(), DictEnum.DELIVERY_TYPE_0.getValue())) {
|
|
|
- totalActualAmount = Objects.isNull(order.getActualAmount()) ? actualLoadAmount : order.getActualAmount().add(actualLoadAmount);
|
|
|
- } else {
|
|
|
- totalActualAmount = Objects.isNull(order.getActualAmount()) ? actualUnloadAmount : order.getActualAmount().add(actualUnloadAmount);
|
|
|
- }
|
|
|
- order.setEntrustAmount(totalEntrustAmount).setActualAmount(totalActualAmount).setUpdateBy(param.getUpdateBy());
|
|
|
- if (param.getIsAllComplete() && totalActualAmount.compareTo(order.getAmount()) >= 0) {
|
|
|
+ BigDecimal actualAmount = Objects.equals(order.getDeliveryType(), DictEnum.DELIVERY_TYPE_0.getValue()) ? actualLoadAmount : actualUnloadAmount;
|
|
|
+ order.setActualAmount(actualAmount).setUpdateBy(param.getUpdateBy());
|
|
|
+ if (param.getIsAllComplete() && actualAmount.compareTo(order.getAmount()) >= 0) {
|
|
|
order.setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_5.getValue()));
|
|
|
KwoTradeOrderTrack track = new KwoTradeOrderTrack();
|
|
|
track.setTOrderId(order.getId()).setTOrderNo(order.getTOrderNo()).setStatus(order.getStatus())
|
|
|
@@ -192,8 +185,8 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
|
|
|
kwoTradeOrderService.updateById(order);
|
|
|
//更新mongodb
|
|
|
SckwTradeOrder updateParam = new SckwTradeOrder();
|
|
|
- updateParam.setTOrderId(order.getId()).setEntrustAmount(totalEntrustAmount).setActualAmount(totalActualAmount)
|
|
|
- .setStatus(order.getStatus()).setUpdateBy(param.getUpdateBy()).setUpdateByName(param.getUpdateByName()).setUpdateTime(new Date());
|
|
|
+ updateParam.setTOrderId(order.getId()).setActualAmount(actualAmount).setStatus(order.getStatus())
|
|
|
+ .setUpdateBy(param.getUpdateBy()).setUpdateByName(param.getUpdateByName()).setUpdateTime(new Date());
|
|
|
saveMongoDb(updateParam);
|
|
|
} finally {
|
|
|
RedissonUtils.unlock(lockKey);
|