|
|
@@ -1,7 +1,9 @@
|
|
|
package com.gree.mall.miniapp.logic.order;
|
|
|
|
|
|
+import cn.hutool.core.date.DateTime;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.gree.mall.miniapp.bean.order.OrderDeliverBean;
|
|
|
@@ -9,17 +11,33 @@ import com.gree.mall.miniapp.bean.user.CurrentCompanyWechat;
|
|
|
import com.gree.mall.miniapp.bean.workorder.CountOrderStatusBean;
|
|
|
import com.gree.mall.miniapp.commonmapper.CommonMapper;
|
|
|
import com.gree.mall.miniapp.commonmapper.workorder.OrderBaseCMapper;
|
|
|
+import com.gree.mall.miniapp.enums.DeliveryStatusEnum;
|
|
|
+import com.gree.mall.miniapp.enums.IsYesNoEnum;
|
|
|
import com.gree.mall.miniapp.enums.OrderStatusEnum;
|
|
|
import com.gree.mall.miniapp.exception.RemoteServiceException;
|
|
|
import com.gree.mall.miniapp.logic.common.CommonLogic;
|
|
|
+import com.gree.mall.miniapp.plus.entity.OrderDelivery;
|
|
|
+import com.gree.mall.miniapp.plus.entity.OrderDeliveryDetail;
|
|
|
+import com.gree.mall.miniapp.plus.entity.OrderDetail;
|
|
|
import com.gree.mall.miniapp.plus.entity.OrderInfo;
|
|
|
+import com.gree.mall.miniapp.plus.service.OrderDeliveryDetailService;
|
|
|
+import com.gree.mall.miniapp.plus.service.OrderDeliveryService;
|
|
|
+import com.gree.mall.miniapp.plus.service.OrderDetailService;
|
|
|
import com.gree.mall.miniapp.plus.service.OrderInfoService;
|
|
|
+import io.swagger.models.auth.In;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
@Slf4j
|
|
|
@@ -29,6 +47,8 @@ public class OrderDeliverLogic {
|
|
|
private final CommonLogic commonLogic;
|
|
|
private final OrderInfoService orderInfoService;
|
|
|
private final OrderBaseCMapper orderBaseCMapper;
|
|
|
+ private final OrderDetailService orderDetailService;
|
|
|
+ private final OrderDeliveryDetailService orderDeliveryDetailService;
|
|
|
|
|
|
public IPage<OrderInfo> orderList(String orderStatus, Integer pageNum, Integer pageSize) {
|
|
|
CurrentCompanyWechat currentCompanyWechat = commonLogic.getCurrentCompanyWechat();
|
|
|
@@ -49,20 +69,71 @@ public class OrderDeliverLogic {
|
|
|
return orderBaseCMapper.countDeliverOrder(currentCompanyWechat.getUserId());
|
|
|
}
|
|
|
|
|
|
+ @Transactional
|
|
|
public void finish(String orderId, String url, String finishRemark, String lng, String lat) {
|
|
|
CurrentCompanyWechat currentCompanyWechat = commonLogic.getCurrentCompanyWechat();
|
|
|
- // TODO 完成配送逻辑
|
|
|
+
|
|
|
final OrderInfo orderInfo = orderInfoService.getById(orderId);
|
|
|
if (!orderInfo.getOrderStatus().equals(OrderStatusEnum.PSZ.toString())) {
|
|
|
throw new RemoteServiceException("订单状态非“配送中”,不能操作完成配送");
|
|
|
}
|
|
|
|
|
|
+ final DateTime curDate = DateUtil.date();
|
|
|
orderInfoService.lambdaUpdate()
|
|
|
.set(OrderInfo::getOrderStatus, OrderStatusEnum.OVER.toString())
|
|
|
.set(OrderInfo::getLastOrderStatus, OrderStatusEnum.PSZ.toString())
|
|
|
- .set(OrderInfo::getOverTime, DateUtil.date())
|
|
|
+ .set(OrderInfo::getOverTime, curDate)
|
|
|
.eq(OrderInfo::getOrderId, orderId)
|
|
|
.eq(OrderInfo::getDeliveryUserId, currentCompanyWechat.getUserId())
|
|
|
.update();
|
|
|
+
|
|
|
+ orderInfo.setOverTime(curDate);
|
|
|
+ this.updateDeliverItem(orderInfo, url, finishRemark, lng, lat);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void updateDeliverItem(OrderInfo orderInfo, String url, String finishRemark, String lng, String lat) {
|
|
|
+ List<OrderDetail> orderDetails = orderDetailService.lambdaQuery()
|
|
|
+ .eq(OrderDetail::getOrderId, orderInfo.getOrderId()).list();
|
|
|
+
|
|
|
+ int totalNum = 0;
|
|
|
+ final String orderDeliveryId = IdWorker.getIdStr();
|
|
|
+
|
|
|
+ List<OrderDeliveryDetail> orderDeliveryDetailList = new ArrayList<>();
|
|
|
+ for (OrderDetail orderDetail : orderDetails) {
|
|
|
+ OrderDeliveryDetail orderDeliveryDetail = new OrderDeliveryDetail();
|
|
|
+
|
|
|
+ totalNum = totalNum + orderDetail.getNum();
|
|
|
+
|
|
|
+ orderDeliveryDetail.setDeliveryId(orderDeliveryId)
|
|
|
+ .setOrderDetailId(orderDetail.getOrderDetailId())
|
|
|
+ .setSendNum(orderDetail.getNum());
|
|
|
+ orderDeliveryDetailList.add(orderDeliveryDetail);
|
|
|
+ }
|
|
|
+
|
|
|
+ OrderDelivery orderDelivery = new OrderDelivery();
|
|
|
+
|
|
|
+ orderDelivery.setDeliveryId(orderDeliveryId);
|
|
|
+ orderDelivery.setOrderId(orderInfo.getOrderId());
|
|
|
+ orderDelivery.setStatus(DeliveryStatusEnum.SEND.getKey());
|
|
|
+ orderDelivery.setDeliverTime(new Date());
|
|
|
+ orderDelivery.setPickType(IsYesNoEnum.NO.getKey());
|
|
|
+ orderDelivery.setCompanyName(orderInfo.getCompanyName());
|
|
|
+ orderDelivery.setCompanyWechatId(orderInfo.getCompanyWechatId());
|
|
|
+ orderDelivery.setCompanyWechatName(orderInfo.getCompanyWechatName());
|
|
|
+
|
|
|
+ orderDelivery.setStorageStockId(orderInfo.getPickStorageId());
|
|
|
+ orderDelivery.setStorageStockName(orderInfo.getPickStorageName());
|
|
|
+ orderDelivery.setCompanyWechatId(orderInfo.getCompanyWechatId());
|
|
|
+
|
|
|
+ orderDelivery.setSendNum(totalNum);
|
|
|
+ orderDelivery.setNum(totalNum);
|
|
|
+ orderDelivery.setFinishImgUrl(url)
|
|
|
+ .setFinishRemark(finishRemark)
|
|
|
+ .setFinishLng(lng)
|
|
|
+ .setFinishLat(lat);
|
|
|
+
|
|
|
+ orderDelivery.insert();
|
|
|
+
|
|
|
+ orderDeliveryDetailService.saveBatch(orderDeliveryDetailList);
|
|
|
}
|
|
|
}
|