Commit 8745d501 by 周晓航
parent f9cd22d5
...@@ -75,4 +75,9 @@ public class ExpandFieldsDTO { ...@@ -75,4 +75,9 @@ public class ExpandFieldsDTO {
*/ */
private List<DispatchConfig> dispatchConfig; private List<DispatchConfig> dispatchConfig;
/**
* 高峰时段出餐时长配置
*/
private List<PeakShipmentDTO> peakShipment;
} }
package cn.freemud.management.entities.dto.request.console;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/3/28 10:37
* @description : 高峰期时间 订单流转设置
*/
@Data
public class PeakShipmentDTO {
/**
* 开始时间 18:13
*/
private String startTime;
/**
* 结束时间 19:13
*/
private String endTime;
/**
* 出餐时长 15
*/
private String costMinute;
}
...@@ -73,4 +73,9 @@ public class OrderManagerRequest { ...@@ -73,4 +73,9 @@ public class OrderManagerRequest {
* 半自动派单时间 (分钟) * 半自动派单时间 (分钟)
*/ */
private Integer dispatchTimeout; private Integer dispatchTimeout;
/**
* 内部使用字段, 订单流转时间设置
*/
private Integer timeout;
} }
...@@ -75,11 +75,12 @@ public class DeliveryHandle { ...@@ -75,11 +75,12 @@ public class DeliveryHandle {
/** /**
* 创建配送单 * 创建配送单
* 【ID1036616】 【野萃山】【万象&小助手】支持门店手动创建运单,通知骑手到店取餐 * 【ID1036616】 【野萃山】【万象&小助手】支持门店手动创建运单,通知骑手到店取餐
*
* @param orderBean * @param orderBean
* @param request * @param request
* @return * @return
*/ */
public BaseResponse createDelivery(OrderBeanV1 orderBean, OrderManagerRequest request, ConsoleResponseDTO<BizDTO> storeInfo,boolean idAutoCreate) { public BaseResponse createDelivery(OrderBeanV1 orderBean, OrderManagerRequest request, ConsoleResponseDTO<BizDTO> storeInfo, boolean idAutoCreate) {
if (storeInfo == null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), storeInfo.getStatusCode()) || storeInfo.getBizVO() == null || storeInfo.getBizVO().getStoreInfo() == null) { if (storeInfo == null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), storeInfo.getStatusCode()) || storeInfo.getBizVO() == null || storeInfo.getBizVO().getStoreInfo() == null) {
return ResponseUtil.error(ResponseResult.STORE_INFO_NOT_FOUND); return ResponseUtil.error(ResponseResult.STORE_INFO_NOT_FOUND);
} }
...@@ -90,7 +91,7 @@ public class DeliveryHandle { ...@@ -90,7 +91,7 @@ public class DeliveryHandle {
String dispatchType = expandFields.getDispatchType(); String dispatchType = expandFields.getDispatchType();
// 1. 手动派单 // 1. 手动派单
if (Objects.equals(dispatchType, "1")) { if (Objects.equals(dispatchType, "1")) {
ApiLog.printLog("oms 门店自动创建运单->", JSON.toJSONString(orderBean.getOid()),null,null); ApiLog.printLog("oms 门店自动创建运单->", JSON.toJSONString(orderBean.getOid()), null, null);
return ResponseUtil.success(); return ResponseUtil.success();
} }
} }
...@@ -139,7 +140,7 @@ public class DeliveryHandle { ...@@ -139,7 +140,7 @@ public class DeliveryHandle {
//商家退款取消配送 //商家退款取消配送
cancelDeliveryOrderRequestDto.setOrderCancelDescription("顾客取消订单"); cancelDeliveryOrderRequestDto.setOrderCancelDescription("顾客取消订单");
DeliveryResponseDto deliveryResponse = deliveryService.deliveryOrderCancel(cancelDeliveryOrderRequestDto, LogThreadLocal.getTrackingNo()); DeliveryResponseDto deliveryResponse = deliveryService.deliveryOrderCancel(cancelDeliveryOrderRequestDto, LogThreadLocal.getTrackingNo());
if (deliveryResponse == null || !StringUtils.equals(ResponseResult.SUCCESS.getCode(), deliveryResponse.getCode()+"")) { if (deliveryResponse == null || !StringUtils.equals(ResponseResult.SUCCESS.getCode(), deliveryResponse.getCode() + "")) {
return ResponseUtil.error(ResponseResult.DELIVERY_CANCEL_ORDER_ERROR); return ResponseUtil.error(ResponseResult.DELIVERY_CANCEL_ORDER_ERROR);
} }
} }
...@@ -154,12 +155,12 @@ public class DeliveryHandle { ...@@ -154,12 +155,12 @@ public class DeliveryHandle {
*/ */
public BaseResponse haltedDelivery(OrderBeanV1 data) { public BaseResponse haltedDelivery(OrderBeanV1 data) {
if (data.getOrderType() == 1 && data.getAddInfo() != null && ObjectUtils.equals(data.getAddInfo().getDeliveryType(), THIRD)) { if (data.getOrderType() == 1 && data.getAddInfo() != null && ObjectUtils.equals(data.getAddInfo().getDeliveryType(), THIRD)) {
DeliveryOrderHaltedRequest deliveryOrderHaltedRequest =new DeliveryOrderHaltedRequest(); DeliveryOrderHaltedRequest deliveryOrderHaltedRequest = new DeliveryOrderHaltedRequest();
deliveryOrderHaltedRequest.setHaltedReason("foe入机失败"); deliveryOrderHaltedRequest.setHaltedReason("foe入机失败");
deliveryOrderHaltedRequest.setOrderKey(data.getOid()); deliveryOrderHaltedRequest.setOrderKey(data.getOid());
deliveryOrderHaltedRequest.setStoreId(data.getShopId()); deliveryOrderHaltedRequest.setStoreId(data.getShopId());
DeliveryResponseDto deliveryResponse = deliveryMCCafeClient.halted(deliveryOrderHaltedRequest); DeliveryResponseDto deliveryResponse = deliveryMCCafeClient.halted(deliveryOrderHaltedRequest);
if (deliveryResponse == null || !StringUtils.equals(ResponseResult.SUCCESS.getCode(), deliveryResponse.getCode()+"")) { if (deliveryResponse == null || !StringUtils.equals(ResponseResult.SUCCESS.getCode(), deliveryResponse.getCode() + "")) {
emailAlertService.sendEmailAlert("配送单停单失败", String.format("request:%s \r\nresponse:%s", JSONObject.toJSONString(deliveryOrderHaltedRequest), JSONObject.toJSONString(deliveryResponse))); emailAlertService.sendEmailAlert("配送单停单失败", String.format("request:%s \r\nresponse:%s", JSONObject.toJSONString(deliveryOrderHaltedRequest), JSONObject.toJSONString(deliveryResponse)));
return ResponseUtil.error(ResponseResult.DELIVERY_ORDER_STOP_ERROR); return ResponseUtil.error(ResponseResult.DELIVERY_ORDER_STOP_ERROR);
} }
...@@ -168,8 +169,6 @@ public class DeliveryHandle { ...@@ -168,8 +169,6 @@ public class DeliveryHandle {
} }
/** /**
* 校验是否要创建配送单 * 校验是否要创建配送单
* *
...@@ -184,13 +183,13 @@ public class DeliveryHandle { ...@@ -184,13 +183,13 @@ public class DeliveryHandle {
//订单来源异常 //订单来源异常
boolean sourceCheck = false; boolean sourceCheck = false;
String[] supportSource = supportOrderSource.split(","); // OrderSourceType.SAAS.getCode() String[] supportSource = supportOrderSource.split(","); // OrderSourceType.SAAS.getCode()
for (String source : supportSource){ for (String source : supportSource) {
if (orderBean.getSource().equalsIgnoreCase(source)) { if (orderBean.getSource().equalsIgnoreCase(source)) {
sourceCheck = true; sourceCheck = true;
break; break;
} }
} }
if (!sourceCheck){ if (!sourceCheck) {
return false; return false;
} }
//配送信息为空,则不创建配送单 //配送信息为空,则不创建配送单
...@@ -207,6 +206,7 @@ public class DeliveryHandle { ...@@ -207,6 +206,7 @@ public class DeliveryHandle {
/** /**
* 半自动派单 获取时间区间范围 * 半自动派单 获取时间区间范围
* 对外暴露的方法 * 对外暴露的方法
*
* @param dispatchConfig * @param dispatchConfig
* @return * @return
*/ */
...@@ -235,13 +235,13 @@ public class DeliveryHandle { ...@@ -235,13 +235,13 @@ public class DeliveryHandle {
* @param currentDate * @param currentDate
* @param startTimeStr 时间格式 HH:mm:ss * @param startTimeStr 时间格式 HH:mm:ss
* @param endTimeStr 时间格式 HH:mm:ss * @param endTimeStr 时间格式 HH:mm:ss
* @param formatTime 自定义时间格式
* @return * @return
*/ */
private Boolean timeScoreVerify(Date currentDate, String startTimeStr, String endTimeStr) { public Boolean timeScoreVerify(Date currentDate, String startTimeStr, String endTimeStr, String formatTime) {
if (StringUtils.isEmpty(startTimeStr) || StringUtils.isEmpty(endTimeStr)) { if (StringUtils.isEmpty(startTimeStr) || StringUtils.isEmpty(endTimeStr) || StringUtils.isEmpty(formatTime)) {
return Boolean.FALSE; return Boolean.FALSE;
} }
String formatTime = DateUtil.FORMAT_time;
Date nowTime = DateUtil.convert2Date(currentDate, formatTime); Date nowTime = DateUtil.convert2Date(currentDate, formatTime);
Date startTime = DateUtil.convert2Date(startTimeStr, formatTime); Date startTime = DateUtil.convert2Date(startTimeStr, formatTime);
Date endTime = DateUtil.convert2Date(endTimeStr, formatTime); Date endTime = DateUtil.convert2Date(endTimeStr, formatTime);
...@@ -269,6 +269,18 @@ public class DeliveryHandle { ...@@ -269,6 +269,18 @@ public class DeliveryHandle {
} }
/** /**
* 校验时间 是否命中范围
*
* @param currentDate
* @param startTimeStr 时间格式 HH:mm:ss
* @param endTimeStr 时间格式 HH:mm:ss
* @return
*/
private Boolean timeScoreVerify(Date currentDate, String startTimeStr, String endTimeStr) {
return this.timeScoreVerify(currentDate, startTimeStr, endTimeStr, DateUtil.FORMAT_time);
}
/**
* 获取配置 * 获取配置
* *
* @param currentDate * @param currentDate
...@@ -323,10 +335,66 @@ public class DeliveryHandle { ...@@ -323,10 +335,66 @@ public class DeliveryHandle {
/** /**
* 是否商家自配送 * 是否商家自配送
*
* @param deliveryType * @param deliveryType
* @return true 自配送 * @return true 自配送
*/ */
public boolean deliveryTypeSelf(String deliveryType){ public boolean deliveryTypeSelf(String deliveryType) {
return delivery_type_self.equalsIgnoreCase(deliveryType); return delivery_type_self.equalsIgnoreCase(deliveryType);
} }
/**
* 到店订单,出餐模式设置的 出餐时长
*
* @param businessInfo
* @return
*/
public Integer getPeakTimeDelivery(BusinessInfoDTO businessInfo) {
Integer peakTimeDelivery = this.getPeakTimeDelivery(businessInfo.getExpandFields());
if (Objects.nonNull(peakTimeDelivery)) {
return peakTimeDelivery;
}
// 到店订单,门店接单 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟
Integer takeOrderWorkflowFinishTime = businessInfo.getAutoSelfmentionTakeOrderWorkflowFinishTime();
if (Objects.isNull(takeOrderWorkflowFinishTime)) {
return null;
}
switch (takeOrderWorkflowFinishTime) {
case 1:
return 120;
case 2:
return 60;
case 3:
return 30;
case 4:
return 15;
case 5:
return 10;
case 6:
return 5;
default:
return null;
}
}
/**
* 获取高峰时期的配置时间 是否命中
*
* @param expandFields
* @return null标识没有命中高峰期配置时间
*/
private Integer getPeakTimeDelivery(ExpandFieldsDTO expandFields) {
List<PeakShipmentDTO> peakShipmentDTOList = expandFields.getPeakShipment();
if (CollectionUtils.isEmpty(peakShipmentDTOList)) {
return null;
}
Date currentDate = new Date();
for (PeakShipmentDTO peakShipmentDTO : peakShipmentDTOList) {
Boolean isHit = this.timeScoreVerify(currentDate, peakShipmentDTO.getStartTime(), peakShipmentDTO.getEndTime(), "HH:mm");
if (isHit) {
return Integer.valueOf(peakShipmentDTO.getCostMinute());
}
}
return null;
}
} }
...@@ -32,6 +32,7 @@ import org.springframework.beans.factory.annotation.Value; ...@@ -32,6 +32,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.UUID; import java.util.UUID;
//import com.freemud.application.sdk.api.log.LogThreadLocal; //import com.freemud.application.sdk.api.log.LogThreadLocal;
...@@ -78,6 +79,9 @@ public class SaasOrderHandle { ...@@ -78,6 +79,9 @@ public class SaasOrderHandle {
BaseQueryOrderRequest orderConfirmRequest = orderSdkAdapter.getOrderConfirmRequest(request.getOperator(), orderBean, dto); BaseQueryOrderRequest orderConfirmRequest = orderSdkAdapter.getOrderConfirmRequest(request.getOperator(), orderBean, dto);
orderSdkAdapter.convert2wmDeliveryTimeOut(orderConfirmRequest,this.wmDeliveryTimeOut); orderSdkAdapter.convert2wmDeliveryTimeOut(orderConfirmRequest,this.wmDeliveryTimeOut);
if (Objects.isNull(request.getTimeout())) {
orderConfirmRequest.setTimeout(request.getTimeout());
}
//合阔pos 商户订单状态不自动扭转 //合阔pos 商户订单状态不自动扭转
// 2021-07-07 合阔自动 // 2021-07-07 合阔自动
// if (CollectionUtils.isNotEmpty(notAutomaticTwistPartnerId) && notAutomaticTwistPartnerId.contains(orderBean.getCompanyId())) { // if (CollectionUtils.isNotEmpty(notAutomaticTwistPartnerId) && notAutomaticTwistPartnerId.contains(orderBean.getCompanyId())) {
......
...@@ -117,6 +117,15 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -117,6 +117,15 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
request.setDispatchTimeout(deliveryHandle.getDispatchTimeout(expandFields.getDispatchConfig())); request.setDispatchTimeout(deliveryHandle.getDispatchTimeout(expandFields.getDispatchConfig()));
idAutoCreate = true; idAutoCreate = true;
} }
// fisherman 到店,自提 出餐时间->订单接单状态流转 timeout字段维护 【【POS】业务设置】 https://www.tapd.cn/43862731/prong/stories/view/1143862731001044130
if (Objects.nonNull(bizVO) && Objects.nonNull(bizVO.getBusinessInfo())) {
// 必须是 到店订单
boolean eatIn = Objects.equals(orderBean.getNewOrderType(), OrderType.GENERAL_DINE_IN.getIndex());
if (eatIn) {
BusinessInfoDTO businessInfo = bizVO.getBusinessInfo();
request.setTimeout(deliveryHandle.getPeakTimeDelivery(businessInfo));
}
}
} }
// 订单接单 // 订单接单
BaseResponse baseResponse = saasOrderHandle.orderConfirm(request, orderBean); BaseResponse baseResponse = saasOrderHandle.orderConfirm(request, orderBean);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment