提交 7b40c951 authored 作者: aiqingguo's avatar aiqingguo

司机积分统计逻辑优化

上级 78fb337a
...@@ -22,13 +22,15 @@ public enum IntegralRecordEnum { ...@@ -22,13 +22,15 @@ public enum IntegralRecordEnum {
ORDER_CHILD_COMPLETE_NUM(12, "运单完成数量"), ORDER_CHILD_COMPLETE_NUM(12, "运单完成数量"),
ORDER_CHILD_COMPLETE_WATER(13, "流水单"), ORDER_CHILD_COMPLETE_WATER(13, "流水单"),
ORDER_CHILD_COMPLETE_SUPPORT(14, "支援单"), ORDER_CHILD_COMPLETE_SUPPORT(14, "支援单"),
ORDER_CHILD_COMPLETE_TIMEOUT(15, "运单完成超时"),
ORDER_CHILD_CANCEL(21, "运单取消"), ORDER_CHILD_CANCEL(21, "运单取消"),
ORDER_CHILD_CANCEL_TIMEOUT(22, "运单取消超时"), ORDER_CHILD_ARRIVE_SEND_ADDRESS_TIMEOUT_CANCEL(22, "超时未到达货源地"),
ORDER_CHILD_PLATFORM_CANCEL(23, "平台取消"), ORDER_CHILD_ARRIVE_RECEIVE_ADDRESS_TIMEOUT(23, "超时到达目的地"),
ORDER_CHILD_PLATFORM_CANCEL(24, "平台取消补偿"),
ORDER_CHILD_PLATFORM_COMPENSATION(25, "平台补偿"), ORDER_CHILD_PLATFORM_COMPENSATION(25, "平台补偿"),
REPORT_TRUCK_INFO(50, "提交基础信息"), REPORT_TRUCK_INFO(50, "提交基础信息"),
REPORT_REFUEL(51, "油表上报"), REPORT_REFUEL(51, "油表上报"),
REPORT_TRAFFIC(52, "上报交通拥堵"), REPORT_TRAFFIC(52, "上报交通拥堵"),
......
package com.clx.performance.param.mq; package com.clx.performance.param.mq;
import lombok.Getter; import lombok.*;
import lombok.NoArgsConstructor;
import lombok.Setter; import java.util.Arrays;
import lombok.ToString; import java.util.Objects;
import java.util.Optional;
/** /**
* @Author: aiqingguo * @Author: aiqingguo
...@@ -18,5 +19,31 @@ import lombok.ToString; ...@@ -18,5 +19,31 @@ import lombok.ToString;
public class IntegralOrderChildFinishMqParam { public class IntegralOrderChildFinishMqParam {
private String childNo; //运单编号 private String childNo; //运单编号
private Integer type; //类型:
@Getter
@AllArgsConstructor
public enum Type {
ARRIVE_SEND_ADDRESS_TIMEOUT_CANCEL(11, "到达货源地超时取消"),
ARRIVE_RECEIVE_ADDRESS_TIMEOUT(12, "到达目的地超时"),
DRIVER_CONFIRM(13, "司机确认收货"),
DRIVER_CANCEL(14, "司机取消"),
CARRIER_CANCEL(21, "承运取消"),
ARTIFICIAL_CANCEL(22, "客服取消"),
ORDER_CANCEL(23, "订单取消"),
ORDER_GOODS_CANCEL(24, "货单取消"),
;
private final Integer code;
private final String msg;
public static Optional<Type> getByCode(int code) {
return Arrays.stream(values()).filter(e -> Objects.equals(e.getCode(), code)).findFirst();
}
}
} }
...@@ -18,6 +18,6 @@ public interface IntegralMqService { ...@@ -18,6 +18,6 @@ public interface IntegralMqService {
void truckProtectionCancel(String statisticsDate, String truckNo); void truckProtectionCancel(String statisticsDate, String truckNo);
void orderChildFinish(String childNo); void orderChildFinish(String childNo, Integer type);
} }
...@@ -4,6 +4,7 @@ import com.clx.performance.model.OrderChild; ...@@ -4,6 +4,7 @@ import com.clx.performance.model.OrderChild;
public interface OrderChildPostService { public interface OrderChildPostService {
void orderChildArriveReceiveAddress(OrderChild orderChild);
void orderChildDriverConfirm(OrderChild orderChild); void orderChildDriverConfirm(OrderChild orderChild);
void orderChildCancelByDriver(OrderChild orderChild, Integer opUserType, Long opUserNo, String opUserName); void orderChildCancelByDriver(OrderChild orderChild, Integer opUserType, Long opUserNo, String opUserName);
......
...@@ -20,6 +20,7 @@ import java.time.LocalDateTime; ...@@ -20,6 +20,7 @@ import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Slf4j @Slf4j
...@@ -328,27 +329,41 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService { ...@@ -328,27 +329,41 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService {
IntegralTruck truck = integralTruckDao.getByTruckNo(orderChild.getTruckNo()).orNull(); IntegralTruck truck = integralTruckDao.getByTruckNo(orderChild.getTruckNo()).orNull();
if (null == truck) {return;} if (null == truck) {return;}
List<Integer> finishStatusList = Arrays.asList(OrderChildEnum.Status.UNSETTLE.getCode(), OrderChildEnum.Status.COMPLETE.getCode());
List<Integer> cancelStatusList = Arrays.asList(OrderChildEnum.Status.DRIVER_CANCEL.getCode());;
List<Integer> platformCancelStatusList = Arrays.asList(
OrderChildEnum.Status.OWNER_CANCEL.getCode(),
OrderChildEnum.Status.PLATFORM_CANCEL.getCode(),
OrderChildEnum.Status.ARTIFICIAL_CANCEL.getCode()
);
int integral = 0; int integral = 0;
if (finishStatusList.contains(orderChild.getStatus())){ if (Objects.equals(mq.getType(), IntegralOrderChildFinishMqParam.Type.ARRIVE_SEND_ADDRESS_TIMEOUT_CANCEL.getCode())){
// 完成 // 到达货源地超时
integral = orderChildCompleteIntegralSettlement(statistics, ruleInfo, integralOrder, orderChild, orderGoods); integral = orderChildArriveSendAddress(statistics, ruleInfo);
}
else if (Objects.equals(mq.getType(), IntegralOrderChildFinishMqParam.Type.ARRIVE_RECEIVE_ADDRESS_TIMEOUT.getCode())){
// 到达目的地超时
integral = orderChildArriveReceiveAddress(statistics, ruleInfo, orderChild, orderGoods);
}
else if (Objects.equals(mq.getType(), IntegralOrderChildFinishMqParam.Type.DRIVER_CONFIRM.getCode())){
// 司机确认收货
integral = orderChildDriverConfirm(statistics, ruleInfo, orderChild);
}
else if (Objects.equals(mq.getType(), IntegralOrderChildFinishMqParam.Type.DRIVER_CANCEL.getCode())){
// 司机取消
integral = orderChildCancel(statistics, ruleInfo);
}
else if (Objects.equals(mq.getType(), IntegralOrderChildFinishMqParam.Type.CARRIER_CANCEL.getCode())){
// 承运取消
integral = orderChildPlatformCancel(statistics, ruleInfo, orderChild);
} }
else if (cancelStatusList.contains(orderChild.getStatus())){ else if (Objects.equals(mq.getType(), IntegralOrderChildFinishMqParam.Type.ARTIFICIAL_CANCEL.getCode())){
// 取消 // 客服取消
integral = orderChildCancelIntegralSettlement(statistics, ruleInfo, integralOrder, orderChild, orderGoods); integral = orderChildPlatformCancel(statistics, ruleInfo, orderChild);
} }
else if (platformCancelStatusList.contains(orderChild.getStatus())){ else if (Objects.equals(mq.getType(), IntegralOrderChildFinishMqParam.Type.ORDER_CANCEL.getCode())){
// 平台取消 // 订单取消
orderChildPlatformCancelIntegralSettlement(statistics, ruleInfo, integralOrder, orderChild, orderGoods); integral = orderChildPlatformCancel(statistics, ruleInfo, orderChild);
} }
else if (Objects.equals(mq.getType(), IntegralOrderChildFinishMqParam.Type.ORDER_GOODS_CANCEL.getCode())){
// 货单取消
integral = orderChildPlatformCancel(statistics, ruleInfo, orderChild);
}
log.info("司机积分, 运单:{}, 累计积分:{}", orderChild.getChildNo(), integral); log.info("司机积分, 运单:{}, 累计积分:{}", orderChild.getChildNo(), integral);
if (integral == 0) {return;} if (integral == 0) {return;}
...@@ -365,33 +380,60 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService { ...@@ -365,33 +380,60 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService {
} }
/** /**
* 运单完成 * 到达货源地超时
*/ */
private int orderChildCompleteIntegralSettlement(IntegralStatistics statistics, AppIntegralRuleVO ruleInfo, IntegralOrder integralOrder, OrderChild orderChild, OrderGoods orderGoods){ private int orderChildArriveSendAddress(IntegralStatistics statistics, AppIntegralRuleVO ruleInfo){
LocalDateTime dateTimeDayStart = LocalDateTimeUtils.getDayStart(); int integralSum = 0;
LocalDateTime dateTimeDayNext = dateTimeDayStart.plusDays(1);
Integer cancelIntegral = -ruleInfo.getOrderChildTimeoutRule().getIntegralSendAddressTimeout();
String dayStartTime = LocalDateTimeUtils.formatTime(dateTimeDayStart); if (cancelIntegral < 0){
String nextDayStartTime = LocalDateTimeUtils.formatTime(dateTimeDayNext); integralRecordService.save(statistics.getId(), statistics.getStatisticsDate(), statistics.getTruckNo(),
IntegralRecordEnum.Type.ORDER_CHILD_ARRIVE_SEND_ADDRESS_TIMEOUT_CANCEL.getValue(), cancelIntegral,
IntegralRecordEnum.Type.ORDER_CHILD_ARRIVE_SEND_ADDRESS_TIMEOUT_CANCEL.getMsg());
}
integralSum = cancelIntegral;
return integralSum;
}
/**
* 到达目的地超时
*/
private int orderChildArriveReceiveAddress(IntegralStatistics statistics, AppIntegralRuleVO ruleInfo, OrderChild orderChild, OrderGoods orderGoods){
int integralSum = 0; int integralSum = 0;
// 运单完成积分 LocalDateTime lastArriveReceiveTime = orderGoods.getLastArriveReceiveTime();
int completeIntegral = 0;
// if (completeIntegral > 0){ int receiveAddressTimeoutIntegral = 0;
// Integer sum = integralRecordDao.sumByStatisticsIdAndTypeAndTime(statistics.getId(), IntegralRecord.type.ORDER_CHILD_COMPLETE.getValue(), dayStartTime, nextDayStartTime); if (null != lastArriveReceiveTime && orderChild.getArriveReceiveTime().isAfter(lastArriveReceiveTime)){
// if (null == sum) {sum = 0;} receiveAddressTimeoutIntegral = -ruleInfo.getOrderChildTimeoutRule().getIntegralSendAddressTimeout();
// if (sum+completeIntegral > 30) {completeIntegral = 0;} }
// }
// if (completeIntegral > 0){ if (receiveAddressTimeoutIntegral < 0){
// String remark=""; integralRecordService.save(statistics.getId(), statistics.getStatisticsDate(), statistics.getTruckNo(),
// if (IntegralOrder.OrderType.HIGH_QUALITY.getValue().equals(integralOrder.getOrderType())){remark = "完成优质单";} IntegralRecordEnum.Type.ORDER_CHILD_ARRIVE_RECEIVE_ADDRESS_TIMEOUT.getValue(), receiveAddressTimeoutIntegral,
// else if (IntegralOrder.OrderType.NORMAL.getValue().equals(integralOrder.getOrderType())){remark = "完成普通单";} IntegralRecordEnum.Type.ORDER_CHILD_ARRIVE_RECEIVE_ADDRESS_TIMEOUT.getMsg());
// else if (IntegralOrder.OrderType.WATER.getValue().equals(integralOrder.getOrderType())){remark = "完成流水单";} }
// else if (IntegralOrder.OrderType.SUPPORT.getValue().equals(integralOrder.getOrderType())){remark = "完成支援单";}
// integralRecordService.save(statistics.getId(), statistics.getStatisticsDate(), statistics.getTruckNo(), IntegralRecord.type.ORDER_CHILD_COMPLETE.getValue(), completeIntegral, remark); integralSum = receiveAddressTimeoutIntegral;
// }
return integralSum;
}
/**
* 司机确认收货
*/
private int orderChildDriverConfirm(IntegralStatistics statistics, AppIntegralRuleVO ruleInfo, OrderChild orderChild){
LocalDateTime dateTimeDayStart = LocalDateTimeUtils.getDayStart();
LocalDateTime dateTimeDayNext = dateTimeDayStart.plusDays(1);
int integralSum = 0;
// 完成量积分 // 完成量积分
int completeNumIntegral = 0; int completeNumIntegral = 0;
...@@ -423,140 +465,34 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService { ...@@ -423,140 +465,34 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService {
else if (finishNum > 4){ else if (finishNum > 4){
completeNumIntegral = 0; completeNumIntegral = 0;
} }
if (completeNumIntegral > 0){
integralRecordService.save(statistics.getId(), statistics.getStatisticsDate(), statistics.getTruckNo(), IntegralRecordEnum.Type.ORDER_CHILD_COMPLETE_NUM.getValue(), completeNumIntegral, completeNumIntegralRemark);
}
// 奖励积分(低价)(下期启用)
int waterOrderIntegral = 0;
// if (IntegralOrder.OrderType.WATER.getValue().equals(integralOrder.getOrderType())){
// waterOrderIntegral = ruleInfo.getOrderAwardRule().getIntegerWater();
// }
// if (waterOrderIntegral > 0){
// Integer sum = integralRecordDao.countByStatisticsIdAndTypeAndTime(statistics.getId(), IntegralRecord.type.ORDER_CHILD_COMPLETE_WATER.getValue(), dayStartTime, nextDayStartTime);
// if (null == sum) {sum = 0;}
// if ((sum + 1) > ruleInfo.getOrderAwardRule().getCountWaterLimit()) {waterOrderIntegral = 0;}
// }
// if (waterOrderIntegral > 0){
// integralRecordService.save(statistics.getId(), statistics.getStatisticsDate(), statistics.getTruckNo(), IntegralRecord.type.ORDER_CHILD_COMPLETE_WATER.getValue(), waterOrderIntegral, "流水单奖励");
// }
// 奖励积分(支持单)(下期启用)
int supportOrderIntegral = 0;
// if (IntegralOrder.OrderType.SUPPORT.getValue().equals(integralOrder.getOrderType())){
// supportOrderIntegral = ruleInfo.getOrderAwardRule().getIntegerSupport();
// }
// if (supportOrderIntegral > 0){
// Integer sum = integralRecordDao.countByStatisticsIdAndTypeAndTime(statistics.getId(), IntegralRecord.type.ORDER_CHILD_COMPLETE_SUPPORT.getValue(), dayStartTime, nextDayStartTime);
// if (null == sum) {sum = 0;}
// if ((sum + 1) > ruleInfo.getOrderAwardRule().getCountSupportLimit()) {supportOrderIntegral = 0;}
// }
// if (supportOrderIntegral > 0){
// integralRecordService.save(statistics.getId(), statistics.getStatisticsDate(), statistics.getTruckNo(), IntegralRecord.type.ORDER_CHILD_COMPLETE_SUPPORT.getValue(), supportOrderIntegral, "支援单奖励");
// }
// 到达货源地目的地超时
if (null == orderGoods.getLastArriveSendTime() && null == orderGoods.getLastArriveReceiveTime()){
integralSum = completeIntegral+completeNumIntegral+waterOrderIntegral+supportOrderIntegral;
return integralSum;
}
LocalDateTime lastArriveSendTime = orderGoods.getLastArriveSendTime();
LocalDateTime lastArriveReceiveTime = orderGoods.getLastArriveReceiveTime();
int sendAddressTimeoutIntegral = 0;
if (null != lastArriveSendTime && orderChild.getArriveSendTime().isAfter(lastArriveSendTime)){
sendAddressTimeoutIntegral = -ruleInfo.getOrderChildTimeoutRule().getIntegralSendAddressTimeout();
}
if (sendAddressTimeoutIntegral < 0){
integralRecordService.save(statistics.getId(), statistics.getStatisticsDate(), statistics.getTruckNo(), IntegralRecordEnum.Type.ORDER_CHILD_COMPLETE_TIMEOUT.getValue(), sendAddressTimeoutIntegral, "未按时到达货源地减分");
}
int receiveAddressTimeoutIntegral = 0; if (completeNumIntegral > 0){
if (null != lastArriveReceiveTime && orderChild.getArriveReceiveTime().isAfter(lastArriveReceiveTime)){ integralRecordService.save(statistics.getId(), statistics.getStatisticsDate(), statistics.getTruckNo(),
receiveAddressTimeoutIntegral = -ruleInfo.getOrderChildTimeoutRule().getIntegralSendAddressTimeout(); IntegralRecordEnum.Type.ORDER_CHILD_COMPLETE_NUM.getValue(), completeNumIntegral,
} completeNumIntegralRemark);
if (receiveAddressTimeoutIntegral < 0){
integralRecordService.save(statistics.getId(), statistics.getStatisticsDate(), statistics.getTruckNo(), IntegralRecordEnum.Type.ORDER_CHILD_COMPLETE_TIMEOUT.getValue(), receiveAddressTimeoutIntegral, "未按时到达目的地减分");
} }
// 装卸车超时(下期开发) integralSum = completeNumIntegral;
integralSum = completeIntegral+completeNumIntegral+waterOrderIntegral+supportOrderIntegral+sendAddressTimeoutIntegral+receiveAddressTimeoutIntegral;
return integralSum; return integralSum;
} }
/** /**
* 运单取消 * 司机取消
*/ */
private int orderChildCancelIntegralSettlement(IntegralStatistics statistics, AppIntegralRuleVO ruleInfo, IntegralOrder integralOrder, OrderChild orderChild, OrderGoods orderGoods){ private int orderChildCancel(IntegralStatistics statistics, AppIntegralRuleVO ruleInfo){
int integralSum = 0; int integralSum = 0;
// 运单取消积分 int cancelIntegral = -ruleInfo.getOrderChildCancelRule().getIntegralCancel();
Integer cancelIntegral = -ruleInfo.getOrderChildCancelRule().getIntegralCancel();
String cancelIntegralRemark="取消运单";
//(下期启用)
// if (IntegralOrder.OrderType.HIGH_QUALITY.getValue().equals(integralOrder.getOrderType())){
//
// cancelIntegralRemark = "取消优质单";
// }
// else if (IntegralOrder.OrderType.NORMAL.getValue().equals(integralOrder.getOrderType())){
//
// cancelIntegralRemark = "取消普通单";
// }
// else if (IntegralOrder.OrderType.WATER.getValue().equals(integralOrder.getOrderType())){
// cancelIntegral -= ruleInfo.getOrderChildCancelRule().getIntegralWaterCancel();
// cancelIntegralRemark = "取消流水单";
// }
// else if (IntegralOrder.OrderType.SUPPORT.getValue().equals(integralOrder.getOrderType())){
// cancelIntegral -= ruleInfo.getOrderChildCancelRule().getIntegralSupportCancel();
// cancelIntegralRemark = "取消支援单";
// }
if (cancelIntegral < 0){ if (cancelIntegral < 0){
integralRecordService.save(statistics.getId(), statistics.getStatisticsDate(), statistics.getTruckNo(), IntegralRecordEnum.Type.ORDER_CHILD_CANCEL.getValue(), cancelIntegral, cancelIntegralRemark); integralRecordService.save(statistics.getId(), statistics.getStatisticsDate(), statistics.getTruckNo(),
IntegralRecordEnum.Type.ORDER_CHILD_CANCEL.getValue(), cancelIntegral,
IntegralRecordEnum.Type.ORDER_CHILD_CANCEL.getMsg());
} }
// 超时
if (null == orderGoods.getLastArriveSendTime() && null == orderGoods.getLastArriveReceiveTime()){
integralSum = cancelIntegral; integralSum = cancelIntegral;
return integralSum;
}
LocalDateTime lastArriveSendTime = orderGoods.getLastArriveSendTime();
LocalDateTime lastArriveReceiveTime = orderGoods.getLastArriveReceiveTime();
int sendAddressTimeoutIntegral = 0;
if (null != lastArriveSendTime && null != orderChild.getArriveSendTime() && orderChild.getArriveSendTime().isAfter(lastArriveSendTime)){
sendAddressTimeoutIntegral = -ruleInfo.getOrderChildTimeoutRule().getIntegralSendAddressTimeout();
}
else if (null != lastArriveSendTime && null == orderChild.getArriveSendTime() && orderChild.getFinishTime().isAfter(lastArriveSendTime)){
sendAddressTimeoutIntegral = -ruleInfo.getOrderChildTimeoutRule().getIntegralSendAddressTimeout();
}
if (sendAddressTimeoutIntegral < 0){
integralRecordService.save(statistics.getId(), statistics.getStatisticsDate(), statistics.getTruckNo(), IntegralRecordEnum.Type.ORDER_CHILD_CANCEL_TIMEOUT.getValue(), sendAddressTimeoutIntegral, "未按时到达货源地减分");
}
int receiveAddressTimeoutIntegral = 0;
if (null != lastArriveReceiveTime && null != orderChild.getArriveReceiveTime() && orderChild.getArriveReceiveTime().isAfter(lastArriveReceiveTime)){
receiveAddressTimeoutIntegral = -ruleInfo.getOrderChildTimeoutRule().getIntegralReceiveAddressTimeout();
}
else if (null != lastArriveReceiveTime && null != orderChild.getLoadTime() && orderChild.getFinishTime().isAfter(lastArriveReceiveTime)){
receiveAddressTimeoutIntegral = -ruleInfo.getOrderChildTimeoutRule().getIntegralReceiveAddressTimeout();
}
if (receiveAddressTimeoutIntegral < 0){
integralRecordService.save(statistics.getId(), statistics.getStatisticsDate(), statistics.getTruckNo(), IntegralRecordEnum.Type.ORDER_CHILD_CANCEL_TIMEOUT.getValue(), receiveAddressTimeoutIntegral, "未按时到达目的地减分");
}
// 装卸车超时(下期开发)
integralSum = cancelIntegral+sendAddressTimeoutIntegral+receiveAddressTimeoutIntegral;
return integralSum; return integralSum;
...@@ -565,46 +501,34 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService { ...@@ -565,46 +501,34 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService {
/** /**
* 平台运单取消 * 平台运单取消
*/ */
private int orderChildPlatformCancelIntegralSettlement(IntegralStatistics statistics, AppIntegralRuleVO ruleInfo, IntegralOrder integralOrder, OrderChild orderChild, OrderGoods orderGoods){ private int orderChildPlatformCancel(IntegralStatistics statistics, AppIntegralRuleVO ruleInfo, OrderChild orderChild){
int integralSum = 0; int integralSum = 0;
int cancelIntegral = 0; int integral = ruleInfo.getPlatformCompensationRule().getIntegralCancel();;
LocalDateTime lastArriveSendTime = orderGoods.getLastArriveSendTime();
LocalDateTime lastArriveReceiveTime = orderGoods.getLastArriveReceiveTime();
int sendAddressTimeoutIntegral = 0; Integer sum = integralRecordDao.sumByStatisticsIdAndTypes(statistics.getId(), Arrays.asList(IntegralRecordEnum.Type.ORDER_CHILD_PLATFORM_CANCEL.getValue()));
if (null != lastArriveSendTime && null != orderChild.getArriveSendTime() && orderChild.getArriveSendTime().isAfter(lastArriveSendTime)){ if (sum == null) {sum = 0;}
sendAddressTimeoutIntegral = -ruleInfo.getOrderChildTimeoutRule().getIntegralSendAddressTimeout(); if (sum > ruleInfo.getPlatformCompensationRule().getIntegralCancelLimit()){
} log.info("平台取消补偿超上限,本次无效, childNo:{}", orderChild.getChildNo());
else if (null != lastArriveSendTime && null == orderChild.getArriveSendTime() && orderChild.getFinishTime().isAfter(lastArriveSendTime)){ integral = 0;
sendAddressTimeoutIntegral = -ruleInfo.getOrderChildTimeoutRule().getIntegralSendAddressTimeout();
} }
if (sendAddressTimeoutIntegral < 0){ else if (sum+integral > ruleInfo.getPlatformCompensationRule().getIntegralCancelLimit()){
integralRecordService.save(statistics.getId(), statistics.getStatisticsDate(), statistics.getTruckNo(), IntegralRecordEnum.Type.ORDER_CHILD_CANCEL_TIMEOUT.getValue(), sendAddressTimeoutIntegral, "未按时到达货源地减分"); integral = ruleInfo.getPlatformCompensationRule().getIntegralCancelLimit()-sum;
} }
else {
int receiveAddressTimeoutIntegral = 0;
if (null != lastArriveReceiveTime && null != orderChild.getArriveReceiveTime() && orderChild.getArriveReceiveTime().isAfter(lastArriveReceiveTime)){
receiveAddressTimeoutIntegral = -ruleInfo.getOrderChildTimeoutRule().getIntegralReceiveAddressTimeout();
}
else if (null != lastArriveReceiveTime && null != orderChild.getLoadTime() && orderChild.getFinishTime().isAfter(lastArriveReceiveTime)){
receiveAddressTimeoutIntegral = -ruleInfo.getOrderChildTimeoutRule().getIntegralReceiveAddressTimeout();
} }
if (receiveAddressTimeoutIntegral < 0){ if (integral > 0){
integralRecordService.save(statistics.getId(), statistics.getStatisticsDate(), statistics.getTruckNo(), IntegralRecordEnum.Type.ORDER_CHILD_CANCEL_TIMEOUT.getValue(), receiveAddressTimeoutIntegral, "未按时到达目的地减分"); integralRecordService.save(statistics.getId(), statistics.getStatisticsDate(), statistics.getTruckNo(),
IntegralRecordEnum.Type.ORDER_CHILD_PLATFORM_CANCEL.getValue(), integral,
IntegralRecordEnum.Type.ORDER_CHILD_PLATFORM_CANCEL.getMsg());
} }
// 装卸车超时(下期开发) integralSum = integral;
integralSum = cancelIntegral+sendAddressTimeoutIntegral+receiveAddressTimeoutIntegral;
return integralSum; return integralSum;
} }
/** /**
......
...@@ -144,10 +144,11 @@ public class IntegralMqServiceImpl implements IntegralMqService { ...@@ -144,10 +144,11 @@ public class IntegralMqServiceImpl implements IntegralMqService {
* 运单结束 (performance) * 运单结束 (performance)
*/ */
@Override @Override
public void orderChildFinish(String childNo){ public void orderChildFinish(String childNo, Integer type){
IntegralOrderChildFinishMqParam mq = new IntegralOrderChildFinishMqParam(); IntegralOrderChildFinishMqParam mq = new IntegralOrderChildFinishMqParam();
mq.setChildNo(childNo); mq.setChildNo(childNo);
mq.setType(type);
MqDelay<MqWrapper<IntegralOrderChildFinishMqParam>> delay = new MqDelay<>(RabbitKeyIntegralConstants.DEFAULT_EXCHANGE, RabbitKeyIntegralConstants.INTEGRAL_ORDER_CHILD_FINISH_ROUTING_KEY, new MqWrapper<>(mq)); MqDelay<MqWrapper<IntegralOrderChildFinishMqParam>> delay = new MqDelay<>(RabbitKeyIntegralConstants.DEFAULT_EXCHANGE, RabbitKeyIntegralConstants.INTEGRAL_ORDER_CHILD_FINISH_ROUTING_KEY, new MqWrapper<>(mq));
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build(); Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
......
...@@ -204,6 +204,8 @@ public class IntegralTruckServiceImpl implements IntegralTruckService { ...@@ -204,6 +204,8 @@ public class IntegralTruckServiceImpl implements IntegralTruckService {
IntegralRecordEnum.Type.PROTECTION_CANCEL.getValue(), IntegralRecordEnum.Type.PROTECTION_CANCEL.getValue(),
IntegralRecordEnum.Type.SETTLEMENT.getValue(), IntegralRecordEnum.Type.SETTLEMENT.getValue(),
IntegralRecordEnum.Type.BASE.getValue(), IntegralRecordEnum.Type.BASE.getValue(),
IntegralRecordEnum.Type.ORDER_CHILD_PLATFORM_CANCEL.getValue(),
IntegralRecordEnum.Type.ORDER_CHILD_PLATFORM_COMPENSATION.getValue() IntegralRecordEnum.Type.ORDER_CHILD_PLATFORM_COMPENSATION.getValue()
); );
...@@ -211,8 +213,8 @@ public class IntegralTruckServiceImpl implements IntegralTruckService { ...@@ -211,8 +213,8 @@ public class IntegralTruckServiceImpl implements IntegralTruckService {
IntegralRecordEnum.Type.ORDER_CHILD_CANCEL.getValue() IntegralRecordEnum.Type.ORDER_CHILD_CANCEL.getValue()
); );
List<Integer> orderChildTimeoutTypeList = Arrays.asList( List<Integer> orderChildTimeoutTypeList = Arrays.asList(
IntegralRecordEnum.Type.ORDER_CHILD_COMPLETE_TIMEOUT.getValue(), IntegralRecordEnum.Type.ORDER_CHILD_ARRIVE_RECEIVE_ADDRESS_TIMEOUT.getValue(),
IntegralRecordEnum.Type.ORDER_CHILD_CANCEL_TIMEOUT.getValue() IntegralRecordEnum.Type.ORDER_CHILD_ARRIVE_SEND_ADDRESS_TIMEOUT_CANCEL.getValue()
); );
List<Integer> reportTypeList = Arrays.asList( List<Integer> reportTypeList = Arrays.asList(
IntegralRecordEnum.Type.REPORT_TRUCK_INFO.getValue(), IntegralRecordEnum.Type.REPORT_TRUCK_INFO.getValue(),
......
...@@ -1046,6 +1046,7 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1046,6 +1046,7 @@ public class OrderChildServiceImpl implements OrderChildService {
// 司机确认收货后置逻辑 // 司机确认收货后置逻辑
orderChildPostService.orderChildDriverConfirm(orderChild); orderChildPostService.orderChildDriverConfirm(orderChild);
} }
@Override @Override
...@@ -1063,8 +1064,6 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1063,8 +1064,6 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.SETTLEMENT.getCode(), orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.SETTLEMENT.getCode(),
OrderChildLogEnum.Type.SETTLEMENT.getMsg(), loginUserInfo.getUserNo(), loginUserInfo.getUserName()); OrderChildLogEnum.Type.SETTLEMENT.getMsg(), loginUserInfo.getUserNo(), loginUserInfo.getUserName());
// 运单结束
orderChildFinish(orderChild);
} }
@Override @Override
...@@ -1224,8 +1223,6 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1224,8 +1223,6 @@ public class OrderChildServiceImpl implements OrderChildService {
*/ */
private void orderChildFinish(OrderChild orderChild){ private void orderChildFinish(OrderChild orderChild){
// 运单结束 统计积分
integralMqService.orderChildFinish(orderChild.getChildNo());
} }
......
...@@ -4,6 +4,7 @@ import com.clx.performance.enums.OrderChildEnum; ...@@ -4,6 +4,7 @@ import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.enums.OrderChildLogEnum; import com.clx.performance.enums.OrderChildLogEnum;
import com.clx.performance.enums.UserTypeEnum; import com.clx.performance.enums.UserTypeEnum;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.param.mq.IntegralOrderChildFinishMqParam;
import com.clx.performance.service.IntegralMqService; import com.clx.performance.service.IntegralMqService;
import com.clx.performance.service.OrderChildMqService; import com.clx.performance.service.OrderChildMqService;
import com.clx.performance.service.breakcontract.BreakContractDriverRecordService; import com.clx.performance.service.breakcontract.BreakContractDriverRecordService;
...@@ -25,9 +26,23 @@ public class OrderChildPostServiceImpl implements OrderChildPostService { ...@@ -25,9 +26,23 @@ public class OrderChildPostServiceImpl implements OrderChildPostService {
@Autowired @Autowired
private BreakContractDriverRecordService breakContractDriverRecordService; private BreakContractDriverRecordService breakContractDriverRecordService;
@Override
public void orderChildArriveReceiveAddress(OrderChild orderChild) {
// 到达货源地 统计积分
integralMqService.orderChildFinish(orderChild.getChildNo(), IntegralOrderChildFinishMqParam.Type.ARRIVE_RECEIVE_ADDRESS_TIMEOUT.getCode());
}
/**
* 司机确认收货
*/
@Override @Override
public void orderChildDriverConfirm(OrderChild orderChild) { public void orderChildDriverConfirm(OrderChild orderChild) {
// 司机确认收货 统计积分
integralMqService.orderChildFinish(orderChild.getChildNo(), IntegralOrderChildFinishMqParam.Type.DRIVER_CONFIRM.getCode());
orderChildFinish(orderChild.getChildNo()); orderChildFinish(orderChild.getChildNo());
// 发送mq 司机确认收货 // 发送mq 司机确认收货
...@@ -35,12 +50,14 @@ public class OrderChildPostServiceImpl implements OrderChildPostService { ...@@ -35,12 +50,14 @@ public class OrderChildPostServiceImpl implements OrderChildPostService {
} }
/** /**
* 司机取消 * 司机取消
*/ */
@Override @Override
public void orderChildCancelByDriver(OrderChild orderChild, Integer opUserType, Long opUserNo, String opUserName){ public void orderChildCancelByDriver(OrderChild orderChild, Integer opUserType, Long opUserNo, String opUserName){
// 司机取消 统计积分
integralMqService.orderChildFinish(orderChild.getChildNo(), IntegralOrderChildFinishMqParam.Type.DRIVER_CANCEL.getCode());
orderChildFinish(orderChild.getChildNo()); orderChildFinish(orderChild.getChildNo());
// 发送mq (运单取消) // 发送mq (运单取消)
...@@ -52,6 +69,10 @@ public class OrderChildPostServiceImpl implements OrderChildPostService { ...@@ -52,6 +69,10 @@ public class OrderChildPostServiceImpl implements OrderChildPostService {
*/ */
@Override @Override
public void orderChildCancelByCarrier(OrderChild orderChild, Integer opUserType, Long opUserNo, String opUserName) { public void orderChildCancelByCarrier(OrderChild orderChild, Integer opUserType, Long opUserNo, String opUserName) {
// 承运取消 统计积分
integralMqService.orderChildFinish(orderChild.getChildNo(), IntegralOrderChildFinishMqParam.Type.CARRIER_CANCEL.getCode());
orderChildFinish(orderChild.getChildNo()); orderChildFinish(orderChild.getChildNo());
// 发送mq (运单取消) // 发送mq (运单取消)
...@@ -68,6 +89,9 @@ public class OrderChildPostServiceImpl implements OrderChildPostService { ...@@ -68,6 +89,9 @@ public class OrderChildPostServiceImpl implements OrderChildPostService {
// 保存违约记录 // 保存违约记录
breakContractDriverRecordService.saveDriverRecordOfArriveSendAddressTimeout(orderChild, 0L, "系统"); breakContractDriverRecordService.saveDriverRecordOfArriveSendAddressTimeout(orderChild, 0L, "系统");
// 到达货源地超时取消 统计积分
integralMqService.orderChildFinish(orderChild.getChildNo(), IntegralOrderChildFinishMqParam.Type.ARRIVE_SEND_ADDRESS_TIMEOUT_CANCEL.getCode());
orderChildFinish(orderChild.getChildNo()); orderChildFinish(orderChild.getChildNo());
// 发送mq (运单取消) // 发送mq (运单取消)
...@@ -75,8 +99,15 @@ public class OrderChildPostServiceImpl implements OrderChildPostService { ...@@ -75,8 +99,15 @@ public class OrderChildPostServiceImpl implements OrderChildPostService {
} }
/**
* 订单取消
*/
@Override @Override
public void orderCancel(String childNo) { public void orderCancel(String childNo) {
// 订单取消 统计积分
integralMqService.orderChildFinish(childNo, IntegralOrderChildFinishMqParam.Type.ORDER_CANCEL.getCode());
orderChildFinish(childNo); orderChildFinish(childNo);
// 发送mq (运单取消) // 发送mq (运单取消)
...@@ -84,8 +115,15 @@ public class OrderChildPostServiceImpl implements OrderChildPostService { ...@@ -84,8 +115,15 @@ public class OrderChildPostServiceImpl implements OrderChildPostService {
} }
/**
* 货单取消
*/
@Override @Override
public void orderGoodsCancel(String childNo) { public void orderGoodsCancel(String childNo) {
// 货单取消 统计积分
integralMqService.orderChildFinish(childNo, IntegralOrderChildFinishMqParam.Type.ORDER_GOODS_CANCEL.getCode());
orderChildFinish(childNo); orderChildFinish(childNo);
// 发送mq (运单取消) // 发送mq (运单取消)
...@@ -93,8 +131,14 @@ public class OrderChildPostServiceImpl implements OrderChildPostService { ...@@ -93,8 +131,14 @@ public class OrderChildPostServiceImpl implements OrderChildPostService {
} }
/**
* 客服取消
*/
@Override @Override
public void orderChildCancelByArtificial(String childNo) { public void orderChildCancelByArtificial(String childNo) {
// 货单取消 统计积分
integralMqService.orderChildFinish(childNo, IntegralOrderChildFinishMqParam.Type.ARTIFICIAL_CANCEL.getCode());
orderChildFinish(childNo); orderChildFinish(childNo);
// 发送mq (运单取消) // 发送mq (运单取消)
...@@ -107,8 +151,7 @@ public class OrderChildPostServiceImpl implements OrderChildPostService { ...@@ -107,8 +151,7 @@ public class OrderChildPostServiceImpl implements OrderChildPostService {
*/ */
@Override @Override
public void orderChildFinish(String childNo) { public void orderChildFinish(String childNo) {
// 运单结束 统计积分
integralMqService.orderChildFinish(childNo);
} }
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论