|
@@ -1608,25 +1608,116 @@ public class WaybillOrderService {
|
|
|
*/
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void comeInto(WaybillOrderCmeIntoWeighParam param) {
|
|
public void comeInto(WaybillOrderCmeIntoWeighParam param) {
|
|
|
|
|
+ log.info("[过磅]开始过磅,入参参数:{}", JSON.toJSONString(param));
|
|
|
|
|
+ if (param.getEntId() == null){
|
|
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "地磅企业id不能为空!");
|
|
|
|
|
+ }
|
|
|
if (StringUtils.isBlank(param.getTruckNo())){
|
|
if (StringUtils.isBlank(param.getTruckNo())){
|
|
|
throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "车牌号不能为空!");
|
|
throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "车牌号不能为空!");
|
|
|
}
|
|
}
|
|
|
if (param.getWeighAmount() == null) {
|
|
if (param.getWeighAmount() == null) {
|
|
|
throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "称重重量不能为空!");
|
|
throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "称重重量不能为空!");
|
|
|
}
|
|
}
|
|
|
- // 1.装货过磅
|
|
|
|
|
- comeIntoHandler(param);
|
|
|
|
|
|
|
+ // 定义运单可以过磅的状态集合
|
|
|
|
|
+ List<Integer> FORBIDDEN_STATUSES = Arrays.asList(
|
|
|
|
|
+ CarWaybillV1Enum.PENDING_VEHICLE.getCode(),
|
|
|
|
|
+ CarWaybillV1Enum.REFUSE_TRAFFIC.getCode(),
|
|
|
|
|
+ CarWaybillV1Enum.EXIT_COMPLETED.getCode(),
|
|
|
|
|
+ CarWaybillV1Enum.EMPTY_WAIT_LEAVE.getCode(),
|
|
|
|
|
+ CarWaybillV1Enum.WAIT_LEAVE.getCode(),
|
|
|
|
|
+ CarWaybillV1Enum.UNLOADING.getCode(),
|
|
|
|
|
+ CarWaybillV1Enum.REPLENISHING.getCode(),
|
|
|
|
|
+ CarWaybillV1Enum.REPLENISH_FINISH.getCode(),
|
|
|
|
|
+ CarWaybillV1Enum.WAIT_LOADING.getCode(),
|
|
|
|
|
+ CarWaybillV1Enum.UNLOADING_POINT.getCode()
|
|
|
|
|
+ );
|
|
|
|
|
+ List<KwtWaybillOrder> waybillOrders = waybillOrderRepository.findWbOrderByTruckNoAndStatus(param.getTruckNo(), FORBIDDEN_STATUSES);
|
|
|
|
|
+ if (CollectionUtils.isEmpty(waybillOrders)) {
|
|
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_NOT_FOUND, "[称重过磅]当前车辆没有称重过磅状态的运单!");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (waybillOrders.size() > 1) {
|
|
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_NOT_FOUND, "[称重过磅]当前车辆过磅称重运单数据存在多条!");
|
|
|
|
|
+ }
|
|
|
|
|
+ KwtWaybillOrder waybillOrder = waybillOrders.get(0);
|
|
|
|
|
+
|
|
|
|
|
+ //查询物流订单
|
|
|
|
|
+ KwtLogisticsOrder logisticsOrder = logisticsOrderRepository.queryByLogisticsOrderId(waybillOrder.getLOrderId());
|
|
|
|
|
+ if (logisticsOrder == null) {
|
|
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_NOT_FOUND, "[称重过磅]当前物流运单不存在!");
|
|
|
|
|
+ }
|
|
|
|
|
+ // 山上企业
|
|
|
|
|
+ Long upEntId = 538039617157337089L;
|
|
|
|
|
+ // 山下企业
|
|
|
|
|
+ Long downEntId = 538040297439891457L;
|
|
|
|
|
+ // 原矿运输
|
|
|
|
|
+ if (Objects.equals(1, logisticsOrder.getOrderType())) {
|
|
|
|
|
+ log.info("[过磅]该过磅订单为原矿运输,订单信息:{}", JSON.toJSONString(logisticsOrder));
|
|
|
|
|
+ KwtLogisticsOrderUnit logisticsOrderUnit = logisticsOrderUnitRepository.queryByLOrderIdAndUnitType(logisticsOrder.getId(), 1);
|
|
|
|
|
+ if (logisticsOrderUnit == null) {
|
|
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_NOT_FOUND, "[称重过磅]当前物流订单关联企业信息不存在!");
|
|
|
|
|
+ }
|
|
|
|
|
+ //校验走山上还是山下
|
|
|
|
|
+ if (Objects.equals(param.getEntId(), logisticsOrderUnit.getEntId()) && Objects.equals(logisticsOrderUnit.getEntId(), upEntId)) {
|
|
|
|
|
+ // 1. 山上装货过磅
|
|
|
|
|
+ comeIntoHandler(param, waybillOrder);
|
|
|
|
|
+ } else if (Objects.equals(param.getEntId(), logisticsOrderUnit.getEntId()) && Objects.equals(logisticsOrderUnit.getEntId(), downEntId)) {
|
|
|
|
|
+ // 2. 山下卸货过磅
|
|
|
|
|
+ unloadingWeighHnadler(param, waybillOrder);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ log.info("[称重过磅]过磅称重匹配失败,地磅企业:{},供应企业:{}",
|
|
|
|
|
+ JSON.toJSONString(param.getEntId()), JSON.toJSONString(logisticsOrderUnit.getEntId()));
|
|
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_NOT_FOUND, "[称重过磅]过磅称重匹配失败!");
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ log.info("[过磅]该过磅订单为产品销售,订单信息:{}", JSON.toJSONString(logisticsOrder));
|
|
|
|
|
+ // 查询贸易订单企业id
|
|
|
|
|
+ List<OrderUnitInfoDetailVO> unitInfoDetailVOS = tradeOrderInfoService.queryOrderUnitByTradeOrderId(logisticsOrder.getTOrderId());
|
|
|
|
|
+ OrderUnitInfoDetailVO unitInfoDetailVO = unitInfoDetailVOS.stream()
|
|
|
|
|
+ .filter(unit -> Objects.equals(unit.getUnitType(), "2"))
|
|
|
|
|
+ .findFirst().orElse(new OrderUnitInfoDetailVO());
|
|
|
|
|
+
|
|
|
|
|
+ //产品销售流程只能过自己接单的企业所属地磅
|
|
|
|
|
+ if (Objects.equals(param.getEntId(), unitInfoDetailVO.getEntId())) {
|
|
|
|
|
+ // 装货过磅
|
|
|
|
|
+ comeIntoHandler(param, waybillOrder);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ log.info("[过磅]过磅结束!");
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- // 2.卸货过磅
|
|
|
|
|
- unloadingWeighHnadler(param);
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取企业id
|
|
|
|
|
+ * @param logOrder
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ private Long getEntId(KwtLogisticsOrder logOrder) {
|
|
|
|
|
+ log.info("[创建装货门卫]开始查询企业id,入参参数:{}", JSON.toJSONString(logOrder));
|
|
|
|
|
+ Long entId;
|
|
|
|
|
+ KwtLogisticsOrderUnit kwtLogisticsOrderUnit = logisticsOrderUnitRepository.queryByLOrderIdAndUnitType(logOrder.getId(), 1);
|
|
|
|
|
+ if (kwtLogisticsOrderUnit == null) {
|
|
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.LOGISTICS_ORDER_NOT_FOUND, "[接单]物流企业信息数据不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+ // 原矿运输山上、上下门卫企业id
|
|
|
|
|
+ List<Long> mockEntIds = Arrays.asList(538039617157337089L, 538040297439891457L);
|
|
|
|
|
+ if (Objects.equals(1, logOrder.getOrderType()) && mockEntIds.contains(kwtLogisticsOrderUnit.getEntId())) {
|
|
|
|
|
+ entId = mockEntIds.get(0);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ List<OrderUnitInfoDetailVO> unitInfoDetailVOS = tradeOrderInfoService.queryOrderUnitByTradeOrderId(logOrder.getTOrderId());
|
|
|
|
|
+ OrderUnitInfoDetailVO unitInfoDetailVO = unitInfoDetailVOS.stream()
|
|
|
|
|
+ .filter(unit -> Objects.equals(unit.getUnitType(), "2"))
|
|
|
|
|
+ .findFirst().orElse(new OrderUnitInfoDetailVO());
|
|
|
|
|
+ entId = unitInfoDetailVO.getEntId();
|
|
|
|
|
+ }
|
|
|
|
|
+ log.info("[创建装货门卫]查询企业id完成,入参参数:{}", JSON.toJSONString(entId));
|
|
|
|
|
+ return entId;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 装货过磅
|
|
* 装货过磅
|
|
|
* @param param
|
|
* @param param
|
|
|
*/
|
|
*/
|
|
|
- private void comeIntoHandler(WaybillOrderCmeIntoWeighParam param) {
|
|
|
|
|
-
|
|
|
|
|
|
|
+ private void comeIntoHandler(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder) {
|
|
|
|
|
+ log.info("[装货过磅]开始装货过磅,参数:{}", JSON.toJSONString(param));
|
|
|
// 定义运单可以过磅的状态集合
|
|
// 定义运单可以过磅的状态集合
|
|
|
List<Integer> FORBIDDEN_STATUSES = Arrays.asList(
|
|
List<Integer> FORBIDDEN_STATUSES = Arrays.asList(
|
|
|
CarWaybillV1Enum.PENDING_VEHICLE.getCode(),
|
|
CarWaybillV1Enum.PENDING_VEHICLE.getCode(),
|
|
@@ -1638,19 +1729,20 @@ public class WaybillOrderService {
|
|
|
CarWaybillV1Enum.REPLENISHING.getCode(),
|
|
CarWaybillV1Enum.REPLENISHING.getCode(),
|
|
|
CarWaybillV1Enum.REPLENISH_FINISH.getCode()
|
|
CarWaybillV1Enum.REPLENISH_FINISH.getCode()
|
|
|
);
|
|
);
|
|
|
- List<KwtWaybillOrder> wbOrderByTruckNo = waybillOrderRepository.findWbOrderByTruckNoAndStatus(param.getTruckNo(), FORBIDDEN_STATUSES);
|
|
|
|
|
- if (CollectionUtils.isEmpty(wbOrderByTruckNo) || wbOrderByTruckNo.size() > 1) {
|
|
|
|
|
- throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_NOT_FOUND, "当前车辆没有可以称重过磅状态的运单");
|
|
|
|
|
|
|
+ if (!FORBIDDEN_STATUSES.contains(waybillOrder.getStatus())) {
|
|
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_STATUS_ERROR, "[装货过磅]当前车辆没有称重过磅状态的运单");
|
|
|
}
|
|
}
|
|
|
- param.setWaybillOrderId(wbOrderByTruckNo.get(0).getId());
|
|
|
|
|
|
|
+ param.setWaybillOrderId(waybillOrder.getId());
|
|
|
comeIntoHandler.handler(param);
|
|
comeIntoHandler.handler(param);
|
|
|
|
|
+ log.info("[装货过磅]装货过磅结束!");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 卸货过磅
|
|
* 卸货过磅
|
|
|
* @param param
|
|
* @param param
|
|
|
*/
|
|
*/
|
|
|
- private void unloadingWeighHnadler(WaybillOrderCmeIntoWeighParam param) {
|
|
|
|
|
|
|
+ private void unloadingWeighHnadler(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder) {
|
|
|
|
|
+ log.info("[卸货过磅]开始装货过磅,参数:{}", JSON.toJSONString(param));
|
|
|
WaybillOrderUnloadingWeighParam unloadingWeighParam = new WaybillOrderUnloadingWeighParam();
|
|
WaybillOrderUnloadingWeighParam unloadingWeighParam = new WaybillOrderUnloadingWeighParam();
|
|
|
unloadingWeighParam.setTruckNo(param.getTruckNo());
|
|
unloadingWeighParam.setTruckNo(param.getTruckNo());
|
|
|
unloadingWeighParam.setWeighAmount(param.getWeighAmount());
|
|
unloadingWeighParam.setWeighAmount(param.getWeighAmount());
|
|
@@ -1663,12 +1755,12 @@ public class WaybillOrderService {
|
|
|
CarWaybillV1Enum.WAIT_LOADING.getCode(),
|
|
CarWaybillV1Enum.WAIT_LOADING.getCode(),
|
|
|
CarWaybillV1Enum.UNLOADING_POINT.getCode()
|
|
CarWaybillV1Enum.UNLOADING_POINT.getCode()
|
|
|
);
|
|
);
|
|
|
- List<KwtWaybillOrder> wbOrderByTruckNo = waybillOrderRepository.findWbOrderByTruckNoAndStatus(param.getTruckNo(), FORBIDDEN_STATUSES);
|
|
|
|
|
- if (CollectionUtils.isEmpty(wbOrderByTruckNo) || wbOrderByTruckNo.size() > 1) {
|
|
|
|
|
- throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_NOT_FOUND, "当前车辆没有可以卸货过磅称重状态的运单");
|
|
|
|
|
|
|
+ if (!FORBIDDEN_STATUSES.contains(waybillOrder.getStatus())) {
|
|
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_STATUS_ERROR, "[卸货过磅]当前车辆没有称重过磅状态的运单");
|
|
|
}
|
|
}
|
|
|
- unloadingWeighParam.setWaybillOrderId(wbOrderByTruckNo.get(0).getId());
|
|
|
|
|
|
|
+ unloadingWeighParam.setWaybillOrderId(waybillOrder.getId());
|
|
|
unloadingWeighHandler.handler(unloadingWeighParam);
|
|
unloadingWeighHandler.handler(unloadingWeighParam);
|
|
|
|
|
+ log.info("[卸货过磅]卸货过磅结束!");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|