Jelajahi Sumber

成品库调整

fgd 1 tahun lalu
induk
melakukan
24431472ac

+ 7 - 0
sd-business/src/main/java/com/sd/business/service/inventory/InventoryFinishedOrderService.java

@@ -36,6 +36,13 @@ public interface InventoryFinishedOrderService extends BaseService<InventoryFini
     void removeByOrderId(Long orderId);
 
     /**
+     * 根据id删除记录
+     *
+     * @param ids
+     */
+    void removeByIds(List<Long> ids);
+
+    /**
      * 销售出库
      *
      * @param inventoryFinishedOrderList 成品仓库订单明细

+ 10 - 0
sd-business/src/main/java/com/sd/business/service/inventory/impl/InventoryFinishedOrderServiceImpl.java

@@ -104,6 +104,12 @@ public class InventoryFinishedOrderServiceImpl extends ServiceImpl<InventoryFini
     }
 
     @Override
+    public void removeByIds(List<Long> ids) {
+        remove(q -> q.in(BaseIdPo::getId, ids));
+        inventoryFinishedOrderDetailService.remove(q -> q.in(InventoryFinishedOrderDetail::getInventoryFinishedOrderId, ids));
+    }
+
+    @Override
     public void saleOutOfWarehouse(List<InventoryFinishedOrder> list) {
 
         List<Long> orderIdList = list.stream()
@@ -370,7 +376,11 @@ public class InventoryFinishedOrderServiceImpl extends ServiceImpl<InventoryFini
         List<OrderInfo> orderInfoList = orderService.list(q -> q
                 .eq(OrderInfo::getStatus, OrderStatusEnum.COMPLETION_PRODUCTION.getKey())
                 .ge(OrderInfo::getShippingTime, DateUtil.beginOfDay(DateUtil.yesterday())));
+        if (orderInfoList.isEmpty()) {
+            return;
+        }
         List<Long> orderIds = orderInfoList.stream().map(BaseIdPo::getId).collect(Collectors.toList());
+
         // 获取在库的成品入库数据
         List<InventoryFinishedOrder> finishedOrderList = this.list(q -> q.in(InventoryFinishedOrder::getOrderInfoId, orderIds)
                 .eq(InventoryFinishedOrder::getStatus, StatusConstant.YES));

+ 37 - 7
sd-business/src/main/java/com/sd/business/service/inventory/impl/InventoryFinishedServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.constant.StatusConstant;
+import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.core.domain.BasePo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.sd.business.entity.inventory.dto.InventoryFinishedSelectDto;
@@ -12,12 +13,15 @@ import com.sd.business.entity.inventory.po.InventoryFinished;
 import com.sd.business.entity.inventory.po.InventoryFinishedOrder;
 import com.sd.business.entity.inventory.po.InventoryFinishedOrderDetail;
 import com.sd.business.entity.inventory.vo.InventoryFinishedVo;
+import com.sd.business.entity.order.enums.OrderStatusEnum;
+import com.sd.business.entity.order.po.OrderInfo;
 import com.sd.business.entity.order.po.OrderSku;
 import com.sd.business.entity.sku.po.SkuSpec;
 import com.sd.business.mapper.inventory.InventoryFinishedMapper;
 import com.sd.business.service.inventory.InventoryFinishedOrderDetailService;
 import com.sd.business.service.inventory.InventoryFinishedOrderService;
 import com.sd.business.service.inventory.InventoryFinishedService;
+import com.sd.business.service.order.OrderService;
 import com.sd.business.service.order.OrderSkuService;
 import com.sd.business.service.sku.SkuSpecService;
 import com.sd.framework.util.excel.util.ExcelUtil;
@@ -30,6 +34,7 @@ import java.math.BigDecimal;
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 
 /**
@@ -58,6 +63,9 @@ public class InventoryFinishedServiceImpl extends ServiceImpl<InventoryFinishedM
     @Autowired
     private SkuSpecService skuSpecService;
 
+    @Autowired
+    private OrderService orderService;
+
     @Override
     public Page<InventoryFinishedVo> getPage(InventoryFinishedSelectDto dto) {
         IWrapper<InventoryFinished> wrapper = getWrapper();
@@ -115,8 +123,9 @@ public class InventoryFinishedServiceImpl extends ServiceImpl<InventoryFinishedM
         // 成品库存出库
         outByFinishedOrder(list);
 
+        List<Long> inventoryFinishedOrderIds = list.stream().map(BaseIdPo::getId).collect(Collectors.toList());
         // 删除成品仓库订单以及明细
-        inventoryFinishedOrderService.removeByOrderId(orderId);
+        inventoryFinishedOrderService.removeByIds(inventoryFinishedOrderIds);
     }
 
     @Override
@@ -381,26 +390,47 @@ public class InventoryFinishedServiceImpl extends ServiceImpl<InventoryFinishedM
 
     @Override
     public List<InventoryFinishedVo> getTodayInStorageList() {
+        Date date = DateUtil.beginOfDay(new Date());
         // 查询今日成品入库明细
         List<InventoryFinishedOrderDetail> finishedOrderDetailList = inventoryFinishedOrderDetailService.list(q -> q
                 .eq(InventoryFinishedOrderDetail::getOperationType, 1)
                 .isNull(InventoryFinishedOrderDetail::getOrderInfoId)
-                .ge(BasePo::getCreateTime, DateUtil.beginOfDay(new Date())));
+                .ge(BasePo::getCreateTime, date));
+
+        // 获取无理由订单
+        List<OrderInfo> orderInfoList = orderService.list(q -> q
+                .eq(OrderInfo::getStatus, OrderStatusEnum.COMPLETION_PRODUCTION.getKey())
+                .ge(OrderInfo::getShippingTime, date));
+        List<Long> orderIds = orderInfoList.stream().map(BaseIdPo::getId).collect(Collectors.toList());
+        List<InventoryFinishedOrder> inventoryFinishedOrderList = new ArrayList<>();
+        if (!orderIds.isEmpty()) {
+            inventoryFinishedOrderList = inventoryFinishedOrderService.list(q -> q
+                    .in(InventoryFinishedOrder::getOrderInfoId, orderIds)
+                    .eq(InventoryFinishedOrder::getStatus, StatusConstant.YES));
+        }
 
-        // 合并重复sku
-        Map<Long, InventoryFinishedVo> inventoryFinishedVoMap = finishedOrderDetailList.stream().collect(Collectors.toMap(
-                InventoryFinishedOrderDetail::getSkuSpecId,
-                item -> {
+        Map<Long, InventoryFinishedVo> inventoryFinishedVoMap = Stream.concat(
+                finishedOrderDetailList.stream().map(item -> {
+                    InventoryFinishedVo vo = new InventoryFinishedVo();
+                    vo.setSkuSpecId(item.getSkuSpecId());
+                    vo.setQuantity(item.getQuantity());
+                    return vo;
+                }),
+                inventoryFinishedOrderList.stream().map(item -> {
                     InventoryFinishedVo vo = new InventoryFinishedVo();
                     vo.setSkuSpecId(item.getSkuSpecId());
                     vo.setQuantity(item.getQuantity());
                     return vo;
-                },
+                })
+        ).collect(Collectors.toMap(
+                InventoryFinishedVo::getSkuSpecId,
+                Function.identity(),
                 (v1, v2) -> {
                     v1.setQuantity(v1.getQuantity().add(v2.getQuantity()));
                     return v1;
                 })
         );
+
         List<InventoryFinishedVo> list = new ArrayList<>(inventoryFinishedVoMap.values());
         // 赋值sku品号品名
         skuSpecService.attributeAssign(list, InventoryFinishedVo::getSkuSpecId, (item, skuSpec) -> {

+ 3 - 0
sd-business/src/main/java/com/sd/business/service/order/impl/OrderServiceImpl.java

@@ -954,6 +954,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
             packageBomInStorageDto.setInOutStorageBomList(new ArrayList<>(inStorageBomMap.values()));
             inOutStorageService.add(packageBomInStorageDto);
 
+            // 删除订单回滚成品仓库存
+            inventoryFinishedService.removeOrder(id);
+
             delete(id);
             OrderOperatingLog orderOperatingLog = new OrderOperatingLog();
             orderOperatingLog.setType(30);