|
|
@@ -5,6 +5,7 @@ import com.sckw.core.common.enums.enums.ErrorCodeEnum;
|
|
|
import com.sckw.core.exception.BusinessPlatfromException;
|
|
|
import com.sckw.core.model.enums.AddressTypeEnum;
|
|
|
import com.sckw.core.model.enums.CarWaybillV1Enum;
|
|
|
+import com.sckw.core.utils.CollectionUtils;
|
|
|
import com.sckw.transport.model.KwtWaybillOrder;
|
|
|
import com.sckw.transport.model.KwtWaybillOrderSubtask;
|
|
|
import com.sckw.transport.model.KwtWaybillOrderTicket;
|
|
|
@@ -32,12 +33,6 @@ import java.util.stream.Collectors;
|
|
|
@Service
|
|
|
public class LeaveMockHandler extends AbstractWaybillOrderHandler<WaybillOrderLeaveMockParam> {
|
|
|
|
|
|
- @Autowired
|
|
|
- private KwtWaybillOrderTicketRepository waybillOrderTicketRepository;
|
|
|
- @Autowired
|
|
|
- private KwtWaybillOrderSubtaskRepository waybillOrderSubtaskRepository;
|
|
|
-
|
|
|
-
|
|
|
@Override
|
|
|
protected KwtWaybillOrder getWaybillOrder(WaybillOrderLeaveMockParam param) {
|
|
|
return getWaybillOrder(param.getWaybillOrderId());
|
|
|
@@ -52,14 +47,14 @@ public class LeaveMockHandler extends AbstractWaybillOrderHandler<WaybillOrderLe
|
|
|
|
|
|
@Override
|
|
|
protected void doBusiness(WaybillOrderLeaveMockParam param, KwtWaybillOrder waybillOrder) {
|
|
|
- List<KwtWaybillOrderTicket> ticketList = waybillOrderTicketRepository.queryByWOrderId(param.getWaybillOrderId());
|
|
|
- // 按 type 分组
|
|
|
- Map<Integer, KwtWaybillOrderTicket> ticketMap = ticketList.stream()
|
|
|
- .collect(Collectors.toMap(KwtWaybillOrderTicket::getType, Function.identity(), (a, b) -> a));
|
|
|
- //1.填充毛重
|
|
|
- updateGrossAmount(param, ticketMap);
|
|
|
- //2.填充运单装货重
|
|
|
- updateLoadAmount(param, waybillOrder, ticketMap);
|
|
|
+ KwtWaybillOrderTicket shipmentTicket = waybillOrderTicketRepository.queryByWOrderIdByIdAndType(param.getWaybillOrderId(), 1);
|
|
|
+ if (shipmentTicket == null) {
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_TICKET_NOT_FOUND, "当前物流运单装卸货信息不存在,无法记录毛重!");
|
|
|
+ }
|
|
|
+ //1.填充装货单毛重和装货净重
|
|
|
+ BigDecimal loadAmount = updateGrossAmount(param, shipmentTicket);
|
|
|
+ //2.填充运单装货净重
|
|
|
+ updateLoadAmount(param, waybillOrder, loadAmount);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -70,40 +65,33 @@ public class LeaveMockHandler extends AbstractWaybillOrderHandler<WaybillOrderLe
|
|
|
/**
|
|
|
* 填充毛重
|
|
|
* @param param
|
|
|
- * @param ticketMap
|
|
|
+ * @param shipmentTicket
|
|
|
*/
|
|
|
- private void updateGrossAmount(WaybillOrderLeaveMockParam param, Map<Integer, KwtWaybillOrderTicket> ticketMap) {
|
|
|
- //查询卸货信息,用于记录毛重
|
|
|
- KwtWaybillOrderTicket takeTicket = ticketMap.get(AddressTypeEnum.TAKE.getCode());
|
|
|
- if (takeTicket == null) {
|
|
|
- throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_TICKET_NOT_FOUND, "当前物流运单装卸货信息不存在,无法记录毛重!");
|
|
|
- }
|
|
|
- takeTicket.setGrossAmount(param.getGrossAmount());
|
|
|
- waybillOrderTicketRepository.updateById(takeTicket);
|
|
|
+ private BigDecimal updateGrossAmount(WaybillOrderLeaveMockParam param, KwtWaybillOrderTicket shipmentTicket) {
|
|
|
+ //毛重
|
|
|
+ shipmentTicket.setGrossAmount(param.getGrossAmount());
|
|
|
+ //皮重
|
|
|
+ BigDecimal tareAmount = shipmentTicket.getTareAmount();
|
|
|
+ //装货单装货净重
|
|
|
+ BigDecimal loadAmount = param.getGrossAmount().subtract(Optional.ofNullable(tareAmount).orElse(BigDecimal.ZERO));
|
|
|
+ shipmentTicket.setAmount(loadAmount);
|
|
|
+ waybillOrderTicketRepository.updateById(shipmentTicket);
|
|
|
+ return loadAmount;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 填充装货净重
|
|
|
* @param param
|
|
|
* @param waybillOrder
|
|
|
- * @param ticketMap
|
|
|
+ * @param loadAmount
|
|
|
*/
|
|
|
- private void updateLoadAmount(WaybillOrderLeaveMockParam param, KwtWaybillOrder waybillOrder, Map<Integer, KwtWaybillOrderTicket> ticketMap) {
|
|
|
- //查询装货信息,用于获取皮重
|
|
|
- KwtWaybillOrderTicket shipmentTicket = ticketMap.get(AddressTypeEnum.SHIPMENT.getCode());
|
|
|
- if (shipmentTicket == null) {
|
|
|
- throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_TICKET_NOT_FOUND, "当前物流运单装卸货信息不存在,无法获取皮重!");
|
|
|
- }
|
|
|
- //皮重
|
|
|
- BigDecimal tareAmount = shipmentTicket.getTareAmount();
|
|
|
-
|
|
|
+ private void updateLoadAmount(WaybillOrderLeaveMockParam param, KwtWaybillOrder waybillOrder, BigDecimal loadAmount) {
|
|
|
//更新子运单装货净重
|
|
|
KwtWaybillOrderSubtask subtask = getWaybillSubtask(waybillOrder.getId());
|
|
|
- BigDecimal loadAmount = param.getGrossAmount().subtract(Optional.ofNullable(tareAmount).orElse(BigDecimal.ZERO));
|
|
|
subtask.setLoadAmount(loadAmount);
|
|
|
subtask.setLoadTime(new Date());
|
|
|
waybillOrderSubtaskRepository.updateById(subtask);
|
|
|
- log.info("物流运单离场过磅成功!运单ID: {}, 毛重: {}, 皮重: {}, 装货净重: {}", param.getWaybillOrderId(), param.getGrossAmount(), tareAmount, loadAmount);
|
|
|
+ log.info("物流运单离场过磅成功!运单ID: {}, 毛重: {}, 装货净重: {}", param.getWaybillOrderId(), param.getGrossAmount(), loadAmount);
|
|
|
}
|
|
|
|
|
|
@Override
|