|
|
@@ -0,0 +1,76 @@
|
|
|
+package com.sckw.transport.utils;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.sckw.transport.model.KwtGatekeeperWaybillOrder;
|
|
|
+import com.sckw.transport.model.KwtParkingStrategySwitch;
|
|
|
+import com.sckw.transport.model.KwtWaybillOrder;
|
|
|
+import com.sckw.transport.model.param.EntryNotificationParam;
|
|
|
+import com.sckw.transport.model.param.ExitNotificationParam;
|
|
|
+import com.sckw.transport.model.param.WaybillOrderCmeIntoWeighParam;
|
|
|
+import com.sckw.transport.repository.KwtParkingStrategySwitchRepository;
|
|
|
+import com.sckw.transport.service.ParkingPlateInfoService;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.scheduling.annotation.Async;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.Objects;
|
|
|
+
|
|
|
+@Service
|
|
|
+@Slf4j
|
|
|
+public class ParkingNotificationAsyncService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ParkingPlateInfoService parkingPlateInfoService;
|
|
|
+ @Autowired
|
|
|
+ private KwtParkingStrategySwitchRepository parkingStrategySwitchRepository;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 异步通知第三方车辆入场
|
|
|
+ * 注意:此方法必须放在另一个 Bean 中,否则 @Async 会失效
|
|
|
+ */
|
|
|
+ @Async
|
|
|
+ public void asyncEntryNotification(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder) {
|
|
|
+ try {
|
|
|
+ log.info("异步调用第三方车辆入场通知接口,运单号:{}", waybillOrder.getId());
|
|
|
+
|
|
|
+ EntryNotificationParam entryParam = new EntryNotificationParam();
|
|
|
+ entryParam.setCarLicense(param.getTruckNo());
|
|
|
+ entryParam.setGateId(String.valueOf(param.getWeighbridgeId()));
|
|
|
+ entryParam.setBusinessId(waybillOrder.getWOrderNo());
|
|
|
+
|
|
|
+ parkingPlateInfoService.entryNotification(entryParam);
|
|
|
+ log.info("异步调用第三方车辆入场通知接口成功,运单号:{}", waybillOrder.getId());
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("异步通知第三方车辆入场失败, 运单号: {}, 车牌号: {}", waybillOrder.getWOrderNo(), param.getTruckNo(), e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 异步通知第三方出场扣费
|
|
|
+ * 注意:此方法必须放在另一个 Bean 中,否则 @Async 会失效
|
|
|
+ */
|
|
|
+ @Async
|
|
|
+ public void asyncExitNotification(KwtWaybillOrder waybillOrder, KwtGatekeeperWaybillOrder gatekeeperWaybillOrder, Boolean isEmptyLoadLeave) {
|
|
|
+ try {
|
|
|
+ log.info("异步调用第三方车辆出场扣费通知接口,运单号:{}", waybillOrder.getId());
|
|
|
+ KwtParkingStrategySwitch strategySwitch = parkingStrategySwitchRepository.queryParkingStrategySwitch();
|
|
|
+ // 入场收费开关关闭,不做扣费
|
|
|
+ if (strategySwitch == null || Objects.equals(strategySwitch.getIntoStatus(), 0)) {
|
|
|
+ log.info("入场收费开关,reslt:{}", "关闭");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ ExitNotificationParam exitParam = new ExitNotificationParam();
|
|
|
+ exitParam.setCarLicense(waybillOrder.getTruckNo());
|
|
|
+ exitParam.setGateId(String.valueOf(gatekeeperWaybillOrder.getWeighbridgeId()));
|
|
|
+ exitParam.setBusinessId(gatekeeperWaybillOrder.getWOrderNo());
|
|
|
+ exitParam.setNeedDeduct(isEmptyLoadLeave ? 0 : 1);
|
|
|
+
|
|
|
+ parkingPlateInfoService.exitNotification(exitParam);
|
|
|
+ log.error("异步调用第三方车辆出场扣款通知接口成功, 运单号: {}, 车牌号: {}, 是否空载:{}", waybillOrder.getWOrderNo(), waybillOrder.getTruckNo(), isEmptyLoadLeave);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("异步调用第三方车辆出场扣款通知失败, 运单号: {}, 车牌号: {}", waybillOrder.getWOrderNo(), waybillOrder.getTruckNo(), e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|