提交 a238c6a1 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/dao/impl/OrderGoodsDaoImpl.java
...@@ -2,7 +2,6 @@ package com.clx.performance.dao; ...@@ -2,7 +2,6 @@ package com.clx.performance.dao;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO; import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderExtractWeightDTO;
import com.clx.performance.dto.OrderGoodsCancelWeightDTO; import com.clx.performance.dto.OrderGoodsCancelWeightDTO;
import com.clx.performance.mapper.OrderGoodsMapper; import com.clx.performance.mapper.OrderGoodsMapper;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
...@@ -113,5 +112,4 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int ...@@ -113,5 +112,4 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
void batchCancelOrderGoodsWeight(List<OrderGoodsCancelWeightDTO> cancelOrderGoodsList); void batchCancelOrderGoodsWeight(List<OrderGoodsCancelWeightDTO> cancelOrderGoodsList);
List<OrderExtractWeightDTO> calcOrderGoodsExtractWeightByOrderNoList(List<String> orderNoList);
} }
...@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.OrderGoodsDao; import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO; import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderExtractWeightDTO;
import com.clx.performance.dto.OrderGoodsCancelWeightDTO; import com.clx.performance.dto.OrderGoodsCancelWeightDTO;
import com.clx.performance.enums.OrderGoodsStatusEnum; import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.mapper.OrderGoodsMapper; import com.clx.performance.mapper.OrderGoodsMapper;
......
package com.clx.performance.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
/**
* @ClassName OrderExtractWeightDTO
* @Description
* @Author kavin
* @Date 2024/8/8 11:47
* @Version 1.0
*/
@Getter
@Setter
public class OrderExtractWeightDTO {
@ApiModelProperty("订单编号")
private String orderNo;
@ApiModelProperty("已提取吨数")
private BigDecimal extractWeight;
}
...@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO; import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderExtractWeightDTO;
import com.clx.performance.dto.OrderGoodsCancelWeightDTO; import com.clx.performance.dto.OrderGoodsCancelWeightDTO;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.OrderGoodsFleetOpenTruck; import com.clx.performance.model.OrderGoodsFleetOpenTruck;
...@@ -110,7 +109,4 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> { ...@@ -110,7 +109,4 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
@UpdateProvider(type = OrderGoodsSqlProvider.class, method = "batchCancelOrderGoodsWeight") @UpdateProvider(type = OrderGoodsSqlProvider.class, method = "batchCancelOrderGoodsWeight")
void batchCancelOrderGoodsWeight(@Param("cancelOrderGoodsList") List<OrderGoodsCancelWeightDTO> cancelOrderGoodsList); void batchCancelOrderGoodsWeight(@Param("cancelOrderGoodsList") List<OrderGoodsCancelWeightDTO> cancelOrderGoodsList);
@SelectProvider(type = OrderGoodsSqlProvider.class, method = "calcOrderGoodsExtractWeightByOrderNoList")
List<OrderExtractWeightDTO> calcOrderGoodsExtractWeightByOrderNoList(List<String> orderNoList);
} }
package com.clx.performance.service; package com.clx.performance.service;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.vo.feign.OrderExtractWeightVO; import com.clx.performance.vo.feign.OrderExtractWeightVO;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -8,4 +9,7 @@ public interface OrderWeightService { ...@@ -8,4 +9,7 @@ public interface OrderWeightService {
OrderExtractWeightVO getOrderCanExtractWeight(String orderNo); OrderExtractWeightVO getOrderCanExtractWeight(String orderNo);
BigDecimal getOrderResidueWeight(String orderNo); BigDecimal getOrderResidueWeight(String orderNo);
//计算货单真实的提取量
BigDecimal calcOrderGoodsRealExtractWeight(OrderGoods item);
} }
...@@ -2186,8 +2186,8 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -2186,8 +2186,8 @@ public class OrderChildServiceImpl implements OrderChildService {
} }
if (dif.compareTo(BigDecimal.ZERO) != 0) { if (dif.compareTo(BigDecimal.ZERO) != 0) {
BigDecimal orderResidueWeight = orderWeightService.getOrderResidueWeight(orderGoods.getOrderNo()); BigDecimal orderResidueWeight = orderWeightService.getOrderResidueWeight(orderGoods.getOrderNo());
if(orderResidueWeight.compareTo(dif) < 0){ if(orderResidueWeight.compareTo(BigDecimal.ZERO) <= 0){
throw new ServiceSystemException(ORDER_WEIGHT_LACK); throw new ServiceSystemException(ORDER_WEIGHT_LACK);
} }
//运单修改装车吨数,从货单进行扣减 //运单修改装车吨数,从货单进行扣减
log.info("货单号:{},运单号 :{},扣减吨数:{}",orderGoods.getOrderGoodsNo(),childNo, dif); log.info("货单号:{},运单号 :{},扣减吨数:{}",orderGoods.getOrderGoodsNo(),childNo, dif);
......
...@@ -18,7 +18,6 @@ import com.clx.performance.component.OrderCancelComponent; ...@@ -18,7 +18,6 @@ import com.clx.performance.component.OrderCancelComponent;
import com.clx.performance.component.OrderGoodsStatusLazyComponent; import com.clx.performance.component.OrderGoodsStatusLazyComponent;
import com.clx.performance.constant.RabbitKeyConstants; import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.*; import com.clx.performance.dao.*;
import com.clx.performance.dto.OrderExtractWeightDTO;
import com.clx.performance.dto.OrderGoodsBindTruckNumDTO; import com.clx.performance.dto.OrderGoodsBindTruckNumDTO;
import com.clx.performance.dto.OrderGoodsCancelDTO; import com.clx.performance.dto.OrderGoodsCancelDTO;
import com.clx.performance.enums.*; import com.clx.performance.enums.*;
...@@ -223,12 +222,19 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea ...@@ -223,12 +222,19 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
log.warn("通过订单号批量查询订单信息失败,失败原因"); log.warn("通过订单号批量查询订单信息失败,失败原因");
throw new ServiceSystemException(ResultEnum.DATA_ERROR,"查询货单对应的订单信息失败"); throw new ServiceSystemException(ResultEnum.DATA_ERROR,"查询货单对应的订单信息失败");
} }
Map<String, FeignOrderInfoVO> orderInfoMap = orderListOption.get();
List<OrderExtractWeightDTO> list = orderGoodsDao.calcOrderGoodsExtractWeightByOrderNoList(orderNoList);
Map<String, BigDecimal> orderExtractWeightMap = list.stream().collect( List<OrderGoods> orderGoods = orderGoodsDao.listInField(OrderGoods::getOrderNo, orderNoList);
Collectors.toMap(OrderExtractWeightDTO::getOrderNo, OrderExtractWeightDTO::getExtractWeight));
Map<String, BigDecimal> orderExtractWeightMap = new HashMap<>();
for (OrderGoods orderGood : orderGoods) {
//计算货单真实的提取量
BigDecimal weight = orderWeightService.calcOrderGoodsRealExtractWeight(orderGood);
String orderNo = orderGood.getOrderNo();
orderExtractWeightMap.put(orderNo,Objects.nonNull(orderExtractWeightMap.get(orderNo))?
orderExtractWeightMap.get(orderNo).add(weight): weight);
}
Map<String, FeignOrderInfoVO> orderInfoMap = orderListOption.get();
page.getRecords().forEach(item->{ page.getRecords().forEach(item->{
FeignOrderInfoVO orderInfo = orderInfoMap.get(item.getOrderNo()); FeignOrderInfoVO orderInfo = orderInfoMap.get(item.getOrderNo());
BigDecimal orderExtractWeight = orderExtractWeightMap.get(item.getOrderNo()); BigDecimal orderExtractWeight = orderExtractWeightMap.get(item.getOrderNo());
...@@ -753,7 +759,7 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea ...@@ -753,7 +759,7 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
} }
} }
orderGoodsTruckBindDao.updateOrderGoodsBindStatus(orderGoods.getOrderGoodsNo(), OrderGoodsTruckBindEnum.Status.CANCEL.getCode()); orderGoodsTruckBindDao.updateOrderGoodsBindStatus(orderGoods.getOrderGoodsNo(), OrderGoodsTruckBindEnum.Status.CANCEL.getCode());
orderGoodsDao.updateOrderGoodsWeightAlreadyAndStatus(orderGoods.getGoodsId(),childResidueWeight,OrderGoodsStatusEnum.Status.COMPLETED.getCode()); orderGoodsDao.updateOrderGoodsWeightAlreadyAndStatus(orderGoods.getId(),childResidueWeight,OrderGoodsStatusEnum.Status.COMPLETED.getCode());
} }
private void cancelOperateOneTypeStrategy(OrderGoodsCancelDTO dto) { private void cancelOperateOneTypeStrategy(OrderGoodsCancelDTO dto) {
......
...@@ -63,15 +63,7 @@ public class OrderWeightServiceImpl implements OrderWeightService { ...@@ -63,15 +63,7 @@ public class OrderWeightServiceImpl implements OrderWeightService {
BigDecimal platOrderGoodsWeight = BigDecimal.ZERO; BigDecimal platOrderGoodsWeight = BigDecimal.ZERO;
for (OrderGoods item : orderGoodsList) { for (OrderGoods item : orderGoodsList) {
BigDecimal weight; //取消,完成,完结的货单取 已拉运吨数 作为提取吨数, BigDecimal weight = calcOrderGoodsRealExtractWeight(item);
if(Objects.equals(item.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.CANCEL.getCode())
|| Objects.equals(item.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.SUCCESS.getCode())
|| Objects.equals(item.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.COMPLETED.getCode())){
weight = item.getAlreadyTransportWeight();
}else{
weight = item.getExtractWeight();
}
if(Objects.equals(item.getVehicleUsage(), VehicleUsageEnum.Status.OWN.getCode())){ if(Objects.equals(item.getVehicleUsage(), VehicleUsageEnum.Status.OWN.getCode())){
ownOrderGoodsWeight = ownOrderGoodsWeight.add(weight); ownOrderGoodsWeight = ownOrderGoodsWeight.add(weight);
} }
...@@ -155,4 +147,26 @@ public class OrderWeightServiceImpl implements OrderWeightService { ...@@ -155,4 +147,26 @@ public class OrderWeightServiceImpl implements OrderWeightService {
} }
return orderInfo.getTransportWeight().subtract(alreadyWeight); return orderInfo.getTransportWeight().subtract(alreadyWeight);
} }
//计算货单真实的提取量
@Override
public BigDecimal calcOrderGoodsRealExtractWeight(OrderGoods item){
//取消,完成,完结的货单取 已拉运吨数 作为提取吨数,
BigDecimal weight;
if(Objects.equals(item.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.CANCEL.getCode())
|| Objects.equals(item.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.SUCCESS.getCode())
|| Objects.equals(item.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.COMPLETED.getCode())){
weight = item.getAlreadyTransportWeight();
}else{
//货单的已拉运吨数大于提取吨数,使用已拉运吨数作为提取吨数
if(item.getExtractWeight().compareTo
(Objects.nonNull(item.getAlreadyLoadWeight())?item.getAlreadyLoadWeight():BigDecimal.ZERO) >=0){
weight = item.getExtractWeight();
}else{
weight = item.getAlreadyTransportWeight();
}
}
return weight;
}
} }
...@@ -402,18 +402,5 @@ public class OrderGoodsSqlProvider { ...@@ -402,18 +402,5 @@ public class OrderGoodsSqlProvider {
return sj.toString(); return sj.toString();
} }
public String calcOrderGoodsExtractWeightByOrderNoList(List<String> orderNoList){
String sql = new SQL() {{
SELECT("order_no,sum(extract_weight) extractWeight");
FROM("order_goods");
StringJoiner sj = new StringJoiner(",","order_no in (",")");
orderNoList.forEach(item -> sj.add("'"+item+"'"));
WHERE(sj.toString());
GROUP_BY("order_no");
}}.toString();
return sql;
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论