|
@@ -9,6 +9,7 @@ import cn.hutool.crypto.digest.DigestUtil;
|
|
import cn.hutool.http.HttpUtil;
|
|
import cn.hutool.http.HttpUtil;
|
|
import cn.hutool.json.JSONUtil;
|
|
import cn.hutool.json.JSONUtil;
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
+import com.alipay.api.domain.UserDTO;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.hys.app.converter.erp.OrderConverter;
|
|
import com.hys.app.converter.erp.OrderConverter;
|
|
@@ -18,11 +19,14 @@ import com.hys.app.framework.exception.ServiceException;
|
|
import com.hys.app.framework.util.BeanUtils;
|
|
import com.hys.app.framework.util.BeanUtils;
|
|
import com.hys.app.framework.util.ScriptUtil;
|
|
import com.hys.app.framework.util.ScriptUtil;
|
|
import com.hys.app.mapper.erp.KdnMapper;
|
|
import com.hys.app.mapper.erp.KdnMapper;
|
|
|
|
+import com.hys.app.mapper.erp.WarehouseEntryMapper;
|
|
import com.hys.app.mapper.goods.ProductMapper;
|
|
import com.hys.app.mapper.goods.ProductMapper;
|
|
import com.hys.app.model.erp.dos.*;
|
|
import com.hys.app.model.erp.dos.*;
|
|
|
|
+import com.hys.app.model.erp.dto.StockDTO;
|
|
import com.hys.app.model.erp.enums.*;
|
|
import com.hys.app.model.erp.enums.*;
|
|
import com.hys.app.service.erp.*;
|
|
import com.hys.app.service.erp.*;
|
|
import com.hys.app.service.kuaidiniao.entity.*;
|
|
import com.hys.app.service.kuaidiniao.entity.*;
|
|
|
|
+import lombok.AllArgsConstructor;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -35,6 +39,7 @@ import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
import java.util.regex.Pattern;
|
|
import java.util.regex.Pattern;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
@Service
|
|
public class KuaiDiNiaoServiceImpl implements KuaiDiNiaoService {
|
|
public class KuaiDiNiaoServiceImpl implements KuaiDiNiaoService {
|
|
@@ -74,17 +79,22 @@ public class KuaiDiNiaoServiceImpl implements KuaiDiNiaoService {
|
|
*/
|
|
*/
|
|
@Value("${kuaidianiao.kuaidi.apiUrl}")
|
|
@Value("${kuaidianiao.kuaidi.apiUrl}")
|
|
private String kuaiDiUrl;
|
|
private String kuaiDiUrl;
|
|
-
|
|
|
|
@Autowired
|
|
@Autowired
|
|
private OrderSendManager orderSendManager;
|
|
private OrderSendManager orderSendManager;
|
|
-
|
|
|
|
@Autowired
|
|
@Autowired
|
|
private OrderManager orderManager;
|
|
private OrderManager orderManager;
|
|
-
|
|
|
|
@Autowired
|
|
@Autowired
|
|
private OrderConverter converter;
|
|
private OrderConverter converter;
|
|
@Autowired
|
|
@Autowired
|
|
private KdnMapper kdnMapper;
|
|
private KdnMapper kdnMapper;
|
|
|
|
+ @Autowired
|
|
|
|
+ private WarehouseEntryMapper warehouseEntryMapper;
|
|
|
|
+ @Autowired
|
|
|
|
+ private OrderSendItemManager orderSendItemManager;
|
|
|
|
+ @Autowired
|
|
|
|
+ private ProductStockManager productStockManager;
|
|
|
|
+ @Autowired
|
|
|
|
+ private LockedStockDetailManager lockedStockDetailManager;
|
|
private static final Logger log = LoggerFactory.getLogger(ScriptUtil.class);
|
|
private static final Logger log = LoggerFactory.getLogger(ScriptUtil.class);
|
|
|
|
|
|
|
|
|
|
@@ -379,15 +389,11 @@ public class KuaiDiNiaoServiceImpl implements KuaiDiNiaoService {
|
|
break;
|
|
break;
|
|
case KdConstants.callBackCancelStatus:
|
|
case KdConstants.callBackCancelStatus:
|
|
//如果推送取消状态,需要重新下单
|
|
//如果推送取消状态,需要重新下单
|
|
- aDo.setKdnOrderCode("");
|
|
|
|
- aDo.setStatus(SaleOrderSendStatusEnum.TO_BE_SEND);
|
|
|
|
- aDo.setSendNo(aDo.getSendNo()+1);
|
|
|
|
|
|
+ cancelKdnOrder(orderDO,aDo);
|
|
break;
|
|
break;
|
|
case KdConstants.callBackCreateOrderFail:
|
|
case KdConstants.callBackCreateOrderFail:
|
|
//如果下单失败更爱订单状态,清空快递鸟单号,让用户可以重新下单
|
|
//如果下单失败更爱订单状态,清空快递鸟单号,让用户可以重新下单
|
|
- aDo.setKdnOrderCode("");
|
|
|
|
- aDo.setStatus(SaleOrderSendStatusEnum.TO_BE_SEND);
|
|
|
|
- aDo.setSendNo(aDo.getSendNo()+1);
|
|
|
|
|
|
+ cancelKdnOrder(orderDO,aDo);
|
|
break;
|
|
break;
|
|
case KdConstants.callBackFeeStatus:
|
|
case KdConstants.callBackFeeStatus:
|
|
aDo.setOrderFee(map);
|
|
aDo.setOrderFee(map);
|
|
@@ -397,9 +403,41 @@ public class KuaiDiNiaoServiceImpl implements KuaiDiNiaoService {
|
|
base.setReason("内部业务异常,麻烦尽快通知商家,tel:13127911751");
|
|
base.setReason("内部业务异常,麻烦尽快通知商家,tel:13127911751");
|
|
}
|
|
}
|
|
orderSendManager.updateById(aDo);
|
|
orderSendManager.updateById(aDo);
|
|
|
|
+ orderManager.updateById(orderDO);
|
|
return base;
|
|
return base;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private void cancelKdnOrder(OrderDO orderDO,OrderSendDO orderSendDO){
|
|
|
|
+ //更爱订单状态
|
|
|
|
+ orderDO.setStatus(SaleOrderStatusEnum.TO_BE_SEND);
|
|
|
|
+ //删除有订单生成的入库单不管是不是租赁的
|
|
|
|
+ warehouseEntryMapper.delete(new LambdaQueryWrapper<WarehouseEntryDO>().eq(WarehouseEntryDO::getOrderId,orderDO.getId()));
|
|
|
|
+ //还原发货单状态
|
|
|
|
+ orderSendDO.setStatus(SaleOrderSendStatusEnum.TO_BE_SEND);
|
|
|
|
+ orderSendDO.setKdnOrderCode("");
|
|
|
|
+ //更改库存,增加实际库存,增加冻结库存,如果是租赁订单减少在途库存
|
|
|
|
+ List<OrderSendItemDO> sendItemDOS = orderSendItemManager.list(new LambdaQueryWrapper<OrderSendItemDO>().eq(OrderSendItemDO::getSendOrderId, orderSendDO.getId()));
|
|
|
|
+ List<ProductStockDO> productStockDOS = productStockManager.list(new LambdaQueryWrapper<ProductStockDO>().in(ProductStockDO::getId, sendItemDOS.stream().map(OrderSendItemDO::getProductStockId).collect(Collectors.toList())));
|
|
|
|
+ for (ProductStockDO stockDO : productStockDOS) {
|
|
|
|
+ OrderSendItemDO orderSendItemDO = sendItemDOS.stream().filter(item -> item.getProductStockId().equals(stockDO.getId())).findFirst().get();
|
|
|
|
+ stockDO.setActualStock(stockDO.getActualStock() + orderSendItemDO.getNum());
|
|
|
|
+ stockDO.setLockedStock(stockDO.getLockedStock() + orderSendItemDO.getNum());
|
|
|
|
+ stockDO.setUsableStock(stockDO.getActualStock() - stockDO.getLockedStock());
|
|
|
|
+ if (OrderTypeEnum.TO_C.equals(orderDO.getType())) {
|
|
|
|
+ stockDO.setTransitStock(stockDO.getTransitStock() - orderSendItemDO.getNum());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ productStockManager.updateBatchById(productStockDOS);
|
|
|
|
+ //更改冻结库存明细
|
|
|
|
+ List<LockedStockDetailDO> list = lockedStockDetailManager.list(new LambdaQueryWrapper<LockedStockDetailDO>()
|
|
|
|
+ .in(LockedStockDetailDO::getOrderItemId, sendItemDOS.stream().map(OrderSendItemDO::getOrderItemId).collect(Collectors.toList())));
|
|
|
|
+ for (LockedStockDetailDO detailDO : list) {
|
|
|
|
+ detailDO.setUnLockedNum(0);
|
|
|
|
+ detailDO.setUnLockedTime(null);
|
|
|
|
+ }
|
|
|
|
+ lockedStockDetailManager.updateBatchById(list);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
// private Boolean checkDesign(OrderSendDO aDo, String dataSign) {
|
|
// private Boolean checkDesign(OrderSendDO aDo, String dataSign) {
|
|
// try {
|
|
// try {
|