|
|
@@ -1,26 +1,26 @@
|
|
|
package com.sckw.transport.handler;
|
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.sckw.core.common.enums.enums.DictTypeEnum;
|
|
|
import com.sckw.core.common.enums.enums.ErrorCodeEnum;
|
|
|
import com.sckw.core.exception.BusinessPlatfromException;
|
|
|
import com.sckw.core.model.enums.CarWaybillV1Enum;
|
|
|
import com.sckw.core.model.enums.ForkliftStatusEnum;
|
|
|
+import com.sckw.core.model.enums.GatekeeperStatusEnum;
|
|
|
+import com.sckw.core.model.enums.LoadingTypeEnum;
|
|
|
import com.sckw.core.utils.CollectionUtils;
|
|
|
import com.sckw.core.utils.DateUtils;
|
|
|
+import com.sckw.core.utils.StringUtils;
|
|
|
import com.sckw.fleet.api.model.vo.DriverConductRulesVO;
|
|
|
import com.sckw.fleet.api.model.vo.RTruckVo;
|
|
|
import com.sckw.fleet.api.model.vo.TruckDispatchCoefficientVO;
|
|
|
import com.sckw.product.api.model.KwpGoods;
|
|
|
-import com.sckw.system.api.RemoteSystemService;
|
|
|
import com.sckw.system.api.model.dto.res.SysDictResDto;
|
|
|
import com.sckw.transport.model.*;
|
|
|
import com.sckw.transport.model.param.WaybillOrderCmeIntoWeighParam;
|
|
|
-import com.sckw.transport.repository.KwtForkliftWaybillOrderRepository;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
@@ -41,12 +41,8 @@ import java.util.stream.Collectors;
|
|
|
@Service
|
|
|
public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCmeIntoWeighParam> {
|
|
|
|
|
|
- @Autowired
|
|
|
- private KwtForkliftWaybillOrderRepository forkliftWaybillOrderRepository;
|
|
|
-
|
|
|
- @DubboReference(version = "1.0.0", group = "design", check = false)
|
|
|
- private RemoteSystemService remoteSystemService;
|
|
|
-
|
|
|
+ //用于存储动态状态
|
|
|
+ private Integer targetStatus;
|
|
|
|
|
|
@Override
|
|
|
protected KwtWaybillOrder getWaybillOrder(WaybillOrderCmeIntoWeighParam param) {
|
|
|
@@ -55,24 +51,53 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
|
|
|
|
|
|
@Override
|
|
|
protected void checkState(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder) {
|
|
|
- // 校验运单
|
|
|
- if (!Objects.equals(CarWaybillV1Enum.PENDING_VEHICLE.getCode(), waybillOrder.getStatus())) {
|
|
|
- throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_STATUS_ERROR, "当前物流运单状态不是“已接单”状态,无法推进下一节点!");
|
|
|
- }
|
|
|
- // 校验车辆
|
|
|
- RTruckVo truckNo = remoteFleetService.findTruckByTruckNo(param.getTruckNo());
|
|
|
- if (truckNo == null || !Objects.equals(truckNo.getStatus(), 0)) {
|
|
|
- throw new BusinessPlatfromException(ErrorCodeEnum.TRUCK_STATUS_ERROR, "当前车辆非正常状态,无法到达装货点!");
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
protected void doBusiness(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder) {
|
|
|
- //1.填充运单装货单皮重
|
|
|
+ //查询运单装卸货信息
|
|
|
KwtWaybillOrderTicket orderTicket = waybillOrderTicketRepository.queryByWOrderIdByIdAndType(param.getWaybillOrderId(), 1);
|
|
|
if (orderTicket == null) {
|
|
|
throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_TICKET_NOT_FOUND, "当前物流运单装卸货信息不存在,无法记录皮重!");
|
|
|
}
|
|
|
+ if (checkIsFirst(waybillOrder)) {
|
|
|
+ //第一次过磅
|
|
|
+ firstWeighbridge(param, waybillOrder, orderTicket);
|
|
|
+ } else {
|
|
|
+ //第二次过磅
|
|
|
+ laterWeighbridge(param,waybillOrder, orderTicket);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 校验是否第一次过磅
|
|
|
+ * @param waybillOrder
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private Boolean checkIsFirst(KwtWaybillOrder waybillOrder) {
|
|
|
+ List<KwtWaybillOrderWeighbridge> weighbridges = waybillOrderWeighbridgeRepository.queryWaybillOrderWeighbridgeByWOrderId(waybillOrder.getId());
|
|
|
+ return CollectionUtils.isEmpty(weighbridges);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 第一次过磅逻辑
|
|
|
+ * @param param
|
|
|
+ * @param waybillOrder
|
|
|
+ */
|
|
|
+ private void firstWeighbridge(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder, KwtWaybillOrderTicket orderTicket) {
|
|
|
+ if (StringUtils.isBlank(param.getTruckNo())) {
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "车牌号不能为空!");
|
|
|
+ }
|
|
|
+ if (param.getTareAmount() == null) {
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "皮重不能为空!");
|
|
|
+ }
|
|
|
+ // 校验运单
|
|
|
+ if (!Objects.equals(CarWaybillV1Enum.PENDING_VEHICLE.getCode(), waybillOrder.getStatus())) {
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_STATUS_ERROR, "当前物流运单状态不是“已接单”状态,无法称重过磅!");
|
|
|
+ }
|
|
|
+
|
|
|
+ //1.填充运单装货单皮重
|
|
|
orderTicket.setTareAmount(param.getTareAmount());
|
|
|
waybillOrderTicketRepository.updateById(orderTicket);
|
|
|
|
|
|
@@ -84,8 +109,15 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
|
|
|
truckNo.setTareWeight(param.getTareAmount());
|
|
|
remoteFleetService.updateTruckTareAmount(truckNo);
|
|
|
}
|
|
|
- //3. 创建铲车记录
|
|
|
+
|
|
|
+ //3. 修改门卫状态:已进场
|
|
|
+ updateGatekeeperOrderStatus(waybillOrder);
|
|
|
+
|
|
|
+ //4. 创建铲车记录
|
|
|
createForkliftWaybill(waybillOrder);
|
|
|
+
|
|
|
+ //5.创建过磅记录
|
|
|
+ createWeighbridges(waybillOrder);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -118,7 +150,7 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
|
|
|
forklift.setGoodsId(goods.getId());
|
|
|
forklift.setGoodsName(goods.getName()+"/"+goodsTypeMap.getOrDefault(goods.getGoodsType(),"")+"/"+goodsSpecMap.getOrDefault(goods.getSpec(), ""));
|
|
|
}
|
|
|
- forklift.setLoadingType(0);
|
|
|
+ forklift.setLoadingType(LoadingTypeEnum.LOADING.getCode());
|
|
|
forklift.setStatus(ForkliftStatusEnum.PENDING_ORDERS.getCode());
|
|
|
forklift.setDriverId(waybillOrder.getDriverId());
|
|
|
forklift.setDriverName(waybillOrder.getDriverName());
|
|
|
@@ -146,14 +178,179 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 修改门卫订单状态
|
|
|
+ * @param waybillOrder
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public void updateGatekeeperOrderStatus(KwtWaybillOrder waybillOrder) {
|
|
|
+ log.info("推进门卫数据为已进场:{}", JSON.toJSONString(waybillOrder));
|
|
|
+ KwtGatekeeperWaybillOrder gatekeeper = gatekeeperWaybillOrderRepository.queryGatekeeperWaybillOrderByWOrderId(waybillOrder.getId());
|
|
|
+ if (gatekeeper == null) {
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.GATEKEEPER_ORDER_NOT_FOUND, "当前门卫订单数据不存在!");
|
|
|
+ }
|
|
|
+ if (!(GatekeeperStatusEnum.PENDING_ENTRY.getCode().equals(gatekeeper.getStatus()))) {
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.GATEKEEPER_ORDER_STATUS_ERROR, "当前门卫订单状态异常,不能推进为已进场状态!");
|
|
|
+ }
|
|
|
+ //修改门卫已进场
|
|
|
+ gatekeeper.setStatus(GatekeeperStatusEnum.IN_YARD.getCode());
|
|
|
+ gatekeeperWaybillOrderRepository.updateById(gatekeeper);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建铲车记录
|
|
|
+ * @param waybillOrder
|
|
|
+ */
|
|
|
+ private void createWeighbridges(KwtWaybillOrder waybillOrder) {
|
|
|
+ CompletableFuture.runAsync(() ->{
|
|
|
+ try {
|
|
|
+ log.debug("开始异步保存地磅记录,运单ID:{}", waybillOrder.getId());
|
|
|
+ KwtWaybillOrderWeighbridge weighbridge = new KwtWaybillOrderWeighbridge();
|
|
|
+ weighbridge.setWOrderId(waybillOrder.getId());
|
|
|
+ weighbridge.setLOrderId(waybillOrder.getLOrderId());
|
|
|
+ weighbridge.setTruckId(waybillOrder.getTruckId());
|
|
|
+ weighbridge.setTruckNo(waybillOrder.getTruckNo());
|
|
|
+ weighbridge.setWeighbridgeId(10001l);
|
|
|
+ weighbridge.setWeight(BigDecimal.ZERO);
|
|
|
+ weighbridge.setWeighUrl(null);
|
|
|
+ weighbridge.setCreateTime(new Date());
|
|
|
+ weighbridge.setCreateUser(waybillOrder.getDriverId());
|
|
|
+ weighbridge.setUpdateUser(waybillOrder.getDriverId());
|
|
|
+
|
|
|
+ waybillOrderWeighbridgeRepository.save(weighbridge);
|
|
|
+ log.debug("异步保存过磅数据保存成功");
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("异步保存过磅数据失败!");
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 第二次过磅逻辑
|
|
|
+ * @param param
|
|
|
+ * @param waybillOrder
|
|
|
+ */
|
|
|
+ private void laterWeighbridge(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder, KwtWaybillOrderTicket orderTicket) {
|
|
|
+ if (StringUtils.isBlank(param.getGrossAmount())) {
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "毛重不能为空!");
|
|
|
+ }
|
|
|
+
|
|
|
+ //1.填充装货单毛重和装货净重
|
|
|
+ BigDecimal loadAmount = updateGrossAmount(param, orderTicket);
|
|
|
+ //2.填充运单装货净重
|
|
|
+ updateLoadAmount(param, waybillOrder, loadAmount);
|
|
|
+ //3.判断流程
|
|
|
+ checkProcess(waybillOrder, loadAmount);
|
|
|
+ //4.创建过磅记录
|
|
|
+ createWeighbridges(waybillOrder);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 填充毛重
|
|
|
+ * @param param
|
|
|
+ * @param shipmentTicket
|
|
|
+ */
|
|
|
+ private BigDecimal updateGrossAmount(WaybillOrderCmeIntoWeighParam 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 loadAmount
|
|
|
+ */
|
|
|
+ private void updateLoadAmount(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder, BigDecimal loadAmount) {
|
|
|
+ //更新子运单装货净重
|
|
|
+ KwtWaybillOrderSubtask subtask = getWaybillSubtask(waybillOrder.getId());
|
|
|
+ subtask.setLoadAmount(loadAmount);
|
|
|
+ subtask.setLoadTime(new Date());
|
|
|
+ waybillOrderSubtaskRepository.updateById(subtask);
|
|
|
+ log.info("物流运单离场过磅成功!运单ID: {}, 毛重: {}, 装货净重: {}", param.getWaybillOrderId(), param.getGrossAmount(), loadAmount);
|
|
|
+ }
|
|
|
+
|
|
|
+ //
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计算并设定离场目标状态
|
|
|
+ * 空载离场:净重<=0.5, 状态更改为:空载待离场
|
|
|
+ * 正常流程:0.5<净重<=任务量, 状态更改为:待离场
|
|
|
+ * 超载流程:净重>任务量, 状态更改为:卸货中
|
|
|
+ * @param waybillOrder
|
|
|
+ * @param loadAmount
|
|
|
+ */
|
|
|
+ private void checkProcess(KwtWaybillOrder waybillOrder, BigDecimal loadAmount) {
|
|
|
+ //获取运单任务量
|
|
|
+ KwtWaybillOrderSubtask waybillSubtask = getWaybillSubtask(waybillOrder.getId());
|
|
|
+ if (waybillSubtask.getEntrustAmount() == null) {
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.SYSTEM_ERROR, "[称重过磅]子运单任务量信息缺失!");
|
|
|
+ }
|
|
|
+ BigDecimal entrustAmount = waybillSubtask.getEntrustAmount();
|
|
|
+
|
|
|
+ //场景一:空载离场,净重<=0.5
|
|
|
+ if (loadAmount.compareTo(BigDecimal.valueOf(0.5)) <= 0) {
|
|
|
+ this.targetStatus = 1;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 非空载情况,必须校验是否完成装载
|
|
|
+ checkStatus(waybillOrder);
|
|
|
+
|
|
|
+ // 场景二:正常流程,0.5<净重<=任务量
|
|
|
+ if (loadAmount.compareTo(entrustAmount) <= 0) {
|
|
|
+ this.targetStatus = 2;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 场景三:超载流程, 净重>任务量
|
|
|
+ this.targetStatus = 3;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 正常流程和超载流程,需校验是否已完成装载
|
|
|
+ */
|
|
|
+ private void checkStatus(KwtWaybillOrder waybillOrder) {
|
|
|
+ if (!Objects.equals(CarWaybillV1Enum.EXIT_COMPLETED.getCode(), waybillOrder.getStatus())
|
|
|
+ && !Objects.equals(CarWaybillV1Enum.REPLENISH_FINISH.getCode(), waybillOrder.getStatus())) {
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_STATUS_ERROR, "当前物流运单状态不是“已装货/补货完成”状态,无法推进待离场/卸货中状态!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
protected String getProcessName() {
|
|
|
- return "到达装货地点";
|
|
|
+ return "称重过磅";
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- protected Integer getStatus() {
|
|
|
- return CarWaybillV1Enum.REFUSE_TRAFFIC.getCode();
|
|
|
+ protected void getStatus(KwtWaybillOrder waybillOrder) {
|
|
|
+ Integer status;
|
|
|
+ // 校验是否第一次过磅
|
|
|
+ if (checkIsFirst(waybillOrder)) {
|
|
|
+ status = CarWaybillV1Enum.REFUSE_TRAFFIC.getCode();
|
|
|
+ } else {
|
|
|
+ status = switch (this.targetStatus) {
|
|
|
+ case 1 -> CarWaybillV1Enum.EMPTY_WAIT_LEAVE.getCode();
|
|
|
+ case 2 -> CarWaybillV1Enum.WAIT_LEAVE.getCode();
|
|
|
+ case 3 -> CarWaybillV1Enum.UNLOADING.getCode();
|
|
|
+ default -> -1;
|
|
|
+ };
|
|
|
+ }
|
|
|
+ // 1. 修改运单状态
|
|
|
+ waybillOrder.setStatus(status);
|
|
|
+ waybillOrderRepository.updateById(waybillOrder);
|
|
|
+
|
|
|
+ // 2. 修改子运单状态
|
|
|
+ KwtWaybillOrderSubtask waybillSubtask = getWaybillSubtask(waybillOrder.getId());
|
|
|
+ waybillSubtask.setStatus(status);
|
|
|
+ waybillOrderSubtaskRepository.updateById(waybillSubtask);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -166,20 +363,48 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
|
|
|
*/
|
|
|
@Override
|
|
|
protected void createNodeTrace(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder) {
|
|
|
- // 第一条:装载完成
|
|
|
- KwtWaybillOrderNode node1 = getWaybillOrderNode(param, waybillOrder);
|
|
|
- node1.setRemark("车辆[" + waybillOrder.getTruckNo() + "]已到达装货点");
|
|
|
- waybillOrderNodeRepository.save(node1);
|
|
|
- log.info("记录【已装货】节点轨迹成功,节点ID:{}", node1.getId());
|
|
|
- // 间隔5秒钟,防止时间相同
|
|
|
- Date fiveSecondsLater = new Date(System.currentTimeMillis() + 5000);
|
|
|
- // 第二条:称重信息
|
|
|
- KwtWaybillOrderNode node2 = getWaybillOrderNode(param, waybillOrder);
|
|
|
- String tareAmount = Objects.isNull(param.getTareAmount()) ? "0.00" : param.getTareAmount().setScale(2, RoundingMode.HALF_UP).toPlainString();
|
|
|
- node2.setRemark("[" + param.getWeighbridgeName() + "]称重[" + tareAmount + "吨]");
|
|
|
- node2.setCreateTime(fiveSecondsLater);
|
|
|
- waybillOrderNodeRepository.save(node2);
|
|
|
- log.info("记录【称重】节点轨迹成功,节点ID:{}", node2.getId());
|
|
|
+ if (checkIsFirst(waybillOrder)) {
|
|
|
+ // 第一条:装载完成
|
|
|
+ KwtWaybillOrderNode node1 = getWaybillOrderNode(param, waybillOrder);
|
|
|
+ node1.setRemark("车辆[" + waybillOrder.getTruckNo() + "]已到达装货点");
|
|
|
+ waybillOrderNodeRepository.save(node1);
|
|
|
+ log.info("记录【已装货】节点轨迹成功,节点ID:{}", node1.getId());
|
|
|
+ // 间隔5秒钟,防止时间相同
|
|
|
+ Date fiveSecondsLater = new Date(System.currentTimeMillis() + 5000);
|
|
|
+ // 第二条:称重信息
|
|
|
+ KwtWaybillOrderNode node2 = getWaybillOrderNode(param, waybillOrder);
|
|
|
+ String tareAmount = Objects.isNull(param.getTareAmount()) ? "0.00" : param.getTareAmount().setScale(2, RoundingMode.HALF_UP).toPlainString();
|
|
|
+ node2.setRemark("[" + param.getWeighbridgeName() + "]首次称重[" + tareAmount + "吨]");
|
|
|
+ node2.setCreateTime(fiveSecondsLater);
|
|
|
+ waybillOrderNodeRepository.save(node2);
|
|
|
+ log.info("记录【称重】节点轨迹成功,节点ID:{}", node2.getId());
|
|
|
+ } else {
|
|
|
+ if (this.targetStatus == null) {
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.SYSTEM_ERROR, "[离场过磅]是否空载离场数据为空!");
|
|
|
+ }
|
|
|
+ String remark = buildRemark(waybillOrder, param, this.targetStatus);
|
|
|
+ KwtWaybillOrderNode node1 = getWaybillOrderNode(param, waybillOrder);
|
|
|
+ node1.setRemark(remark);
|
|
|
+ waybillOrderNodeRepository.save(node1);
|
|
|
+ log.info("记录【多次过磅】节点轨迹成功,节点ID:{}", node1.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 构建节点备注信息
|
|
|
+ */
|
|
|
+ private String buildRemark(KwtWaybillOrder waybillOrder, WaybillOrderCmeIntoWeighParam param, Integer targetStatus) {
|
|
|
+ switch (targetStatus) {
|
|
|
+ case 1: // 空载离场
|
|
|
+ return "司机[" + waybillOrder.getDriverName() + "]空载待离场";
|
|
|
+ case 2: // 正常离场
|
|
|
+ String grossAmount = Objects.isNull(param.getGrossAmount()) ? "0.00" : param.getGrossAmount().setScale(2, RoundingMode.HALF_UP).toPlainString();
|
|
|
+ return "[" + param.getWeighbridgeName() + "]称重[" + grossAmount + "吨]";
|
|
|
+ case 3: // 超载离场
|
|
|
+ return "司机[" + waybillOrder.getDriverName() + "]已超载,卸货中";
|
|
|
+ default:
|
|
|
+ return "";
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -191,44 +416,14 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
protected void calculateAutoDispatchScore(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder) {
|
|
|
-// if (true) {
|
|
|
-// //先不执行自动派单逻辑
|
|
|
-// return;
|
|
|
-// }
|
|
|
- // 司机到达装货点是否超时(未按时到场)
|
|
|
-// checkArrivedLoadingPointTimeout(waybillOrder);
|
|
|
-
|
|
|
- //校验连续按时到场次数
|
|
|
- checkContinuousArriveTimes(waybillOrder);
|
|
|
+ if (checkIsFirst(waybillOrder)) {
|
|
|
+ //校验连续按时到场次数
|
|
|
+ checkContinuousArriveTimes(waybillOrder);
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
-// /**
|
|
|
-// * 校验司机到达装货点是否超时
|
|
|
-// * @param waybillOrder
|
|
|
-// */
|
|
|
-// private void checkArrivedLoadingPointTimeout(KwtWaybillOrder waybillOrder) {
|
|
|
-// //计算司机到达装货点是否超时
|
|
|
-// Boolean isTimeOut = isTimeOut(waybillOrder.getEntId(), waybillOrder.getId());
|
|
|
-// if (isTimeOut) {
|
|
|
-// DriverConductRulesVO rulesVO = getDriverConductRulesByEntId(waybillOrder.getEntId());
|
|
|
-// Integer notOnTimeArrive = rulesVO.getNotOnTimeArriveScore();
|
|
|
-// if (notOnTimeArrive <= 0) {
|
|
|
-// log.warn("【司机未按时到场】司机扣分失败,企业{}的司机未按时到场分数配置异常,运单ID:{}", waybillOrder.getEntId(), waybillOrder.getId());
|
|
|
-// throw new BusinessPlatfromException(ErrorCodeEnum.DATA_NOT_EXIST, "【司机未按时到场】分数配置需大于0!");
|
|
|
-// }
|
|
|
-// //1、更新司机分数(减分)
|
|
|
-// notOnTimeArrive = -Math.abs(notOnTimeArrive);
|
|
|
-// Long supEntId = getSupplierId(waybillOrder);
|
|
|
-// updateDriverScore(supEntId, waybillOrder.getEntId(), waybillOrder.getDriverId(), notOnTimeArrive, "司机未按时到场");
|
|
|
-//
|
|
|
-// //2、更新企业分数(减分)
|
|
|
-// updateLogEntScore(waybillOrder, supEntId, notOnTimeArrive, "司机未按时到场");
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-
|
|
|
/**
|
|
|
* 校验连续按时到场次数
|
|
|
*
|