|
@@ -15,6 +15,7 @@ import com.hys.app.framework.database.mybatisplus.base.BaseServiceImpl;
|
|
|
import com.hys.app.framework.exception.ServiceException;
|
|
|
import com.hys.app.framework.util.BeanUtils;
|
|
|
import com.hys.app.mapper.erp.OrderMapper;
|
|
|
+import com.hys.app.mapper.erp.WarehouseEntryMapper;
|
|
|
import com.hys.app.mapper.erp.WarehouseOutMapper;
|
|
|
import com.hys.app.mapper.goods.GoodsMapper;
|
|
|
import com.hys.app.model.erp.dos.*;
|
|
@@ -66,6 +67,8 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
|
|
|
private OrderCustomerFeeManager orderCustomerFeeManager;
|
|
|
private RedisTemplate redisTemplate;
|
|
|
private AreaStockManager areaStockManager;
|
|
|
+ private WarehouseEntryMapper warehouseEntryMapper;
|
|
|
+ private WarehouseEntryProductManager warehouseEntryProductManager;
|
|
|
|
|
|
@Override
|
|
|
public WebPage<OrderVO> list(OrderQueryParams queryParams) {
|
|
@@ -349,7 +352,7 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
|
|
|
if (OrderTypeEnum.TO_C.equals(aDo.getOrderType())) {
|
|
|
List<OrderItemDO> list2 = orderItemManager.list(new LambdaQueryWrapper<OrderItemDO>().eq(OrderItemDO::getOrderId, orderDO.getId()));
|
|
|
list2.forEach(item -> {
|
|
|
- item.setHasReturn(false);
|
|
|
+ item.setHasReturn(0);
|
|
|
item.setStockNum(item.getNum());
|
|
|
});
|
|
|
orderItemManager.updateBatchById(list2);
|
|
@@ -367,6 +370,8 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
|
|
|
WarehouseOutDO outDO = new WarehouseOutDO();
|
|
|
if (OrderTypeEnum.TO_C.equals(orderDO.getType())) {
|
|
|
outDO.setType(WarehouseOutTypeEnum.HAIL_OUT);
|
|
|
+ //生成入库单
|
|
|
+ createEntryWarehouse(orderDO.getId());
|
|
|
} else if (OrderTypeEnum.TO_B.equals(orderDO.getType())) {
|
|
|
outDO.setType(WarehouseOutTypeEnum.SALE_OUT);
|
|
|
}
|
|
@@ -465,6 +470,34 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
|
|
|
orderDO.setStatus(SaleOrderStatusEnum.SENDING);
|
|
|
updateById(orderDO);
|
|
|
redisTemplate.delete(sendOrderId.toString());
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void createEntryWarehouse(Long orderId ){
|
|
|
+ WarehouseEntryDO selected = warehouseEntryMapper.selectOne(new LambdaQueryWrapper<WarehouseEntryDO>()
|
|
|
+ .eq(WarehouseEntryDO::getOrderId,orderId)
|
|
|
+ .eq(WarehouseEntryDO::getType,WarehouseEntyrTypeEnum.HAIL_ENTRY)
|
|
|
+ .last("limit 1"));
|
|
|
+ if (ObjectUtil.isNull(selected)){
|
|
|
+ OrderDO orderDO = getById(orderId);
|
|
|
+ //生成入库单
|
|
|
+ WarehouseEntryDO warehouseEntryDO = new WarehouseEntryDO();
|
|
|
+ warehouseEntryDO.setWarehouseId(orderDO.getReturnWarehouseId());
|
|
|
+ warehouseEntryDO.setOrderId(orderDO.getId());
|
|
|
+ warehouseEntryDO.setType(WarehouseEntyrTypeEnum.HAIL_ENTRY);
|
|
|
+ warehouseEntryDO.setMemo("订单出库生成的入库单");
|
|
|
+ warehouseEntryDO.setSn(noGenerateManager.generate(NoBusinessTypeEnum.WarehouseEntry));
|
|
|
+ warehouseEntryMapper.insert(warehouseEntryDO);
|
|
|
+ // 保存入库单商品明细
|
|
|
+ List<OrderItemDO> list = orderItemManager.list(new LambdaQueryWrapper<OrderItemDO>().eq(OrderItemDO::getOrderId,orderId));
|
|
|
+ List<WarehouseEntryProductDO> productList = BeanUtils.toBean(list, WarehouseEntryProductDO.class);
|
|
|
+ productList.forEach(item -> {
|
|
|
+ item.setWarehouseEntryId(warehouseEntryDO.getId());
|
|
|
+ Integer num = list.stream().filter(it -> it.getProductId().equals(item.getProductId())).findFirst().get().getNum();
|
|
|
+ item.setNum(num);
|
|
|
+ });
|
|
|
+ warehouseEntryProductManager.saveBatch(productList);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -508,7 +541,7 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
|
|
|
scanOrder(orderVO);
|
|
|
}
|
|
|
|
|
|
- if (OrderTypeEnum.TO_C.equals(orderDO.getType()) && SaleOrderStatusEnum.SENDING.equals(orderDO.getStatus())) {
|
|
|
+ if (OrderTypeEnum.TO_C.equals(orderDO.getType()) && SaleOrderStatusEnum.TO_BE_RETURN.equals(orderDO.getStatus())) {
|
|
|
orderVO.setScanOrderType("return");
|
|
|
scanOrder(orderVO);
|
|
|
}
|