24282 преди 1 година
родител
ревизия
fe19bdb4fe

+ 8 - 0
sd-business/src/main/java/com/sd/business/controller/order/OrderController.java

@@ -102,4 +102,12 @@ public class OrderController {
         orderService.turnToRegularOrder(dto.getId());
     }
 
+    /**
+     * 订单删除并回滚库存
+     */
+    @PostMapping("/deleteAndStore")
+    public void deleteAndStore(@RequestBody BaseSelectDto dto) {
+        orderService.deleteAndStore(dto.getId());
+    }
+
 }

+ 5 - 0
sd-business/src/main/java/com/sd/business/service/order/OrderService.java

@@ -70,4 +70,9 @@ public interface OrderService extends BaseService<OrderInfo> {
      */
     void turnToRegularOrder(Long id);
 
+    /**
+     * 订单删除并回滚库存
+     */
+    void deleteAndStore(Long id);
+
 }

+ 31 - 4
sd-business/src/main/java/com/sd/business/service/order/impl/OrderServiceImpl.java

@@ -268,10 +268,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
             throw new ServiceException("订单正在生产中,无法直接删除,需要走审批流程");
         }
 
-        this.removeById(id);
-        orderSkuService.remove(q -> q.eq(OrderSku::getOrderId, id));
-        orderSkuBomService.remove(q -> q.eq(OrderSkuBom::getOrderId, id));
-        orderPackageBomService.remove(q -> q.eq(OrderPackageBom::getOrderId, id));
+        // 删除订单以及订单关联数据
+        delete(id);
 
         if (saveLog) {
             OrderOperatingLog orderOperatingLog = new OrderOperatingLog();
@@ -422,4 +420,33 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
 
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public synchronized void deleteAndStore(Long id) {
+
+        OrderInfo orderInfo = getById(id);
+
+        if (orderInfo == null) {
+            throw new ServiceException("未找到订单");
+        }
+
+        delete(id);
+
+        if (orderInfo.getStatus() <= OrderStatusEnum.STOCK_PREPARATION.getKey()) {
+            return;
+        }
+
+
+    }
+
+    /**
+     * 删除订单以及订单关联数据
+     */
+    private void delete(Long id) {
+        this.removeById(id);
+        orderSkuService.remove(q -> q.eq(OrderSku::getOrderId, id));
+        orderSkuBomService.remove(q -> q.eq(OrderSkuBom::getOrderId, id));
+        orderPackageBomService.remove(q -> q.eq(OrderPackageBom::getOrderId, id));
+    }
+
 }

+ 3 - 0
sd-business/src/main/java/com/sd/business/service/production/impl/StockPreparationServiceImpl.java

@@ -374,6 +374,9 @@ public class StockPreparationServiceImpl implements StockPreparationService {
         wrapper.eq("bs", BomSpec::getName, dto.getBomSpecName());
         wrapper.eq("ss", SkuSpec::getCode, dto.getSkuSpecCode());
         wrapper.eq("ss", SkuSpec::getName, dto.getSkuSpecName());
+        wrapper.and(q -> q
+                .and(r -> r.eq("oi", OrderInfo::getWlnStorageCode, "T007").ge("oi", OrderInfo::getWlnStatus, 2))
+                .or(r -> r.ne("oi", OrderInfo::getWlnStorageCode, "T007").ge("oi", OrderInfo::getWlnStatus, 1)));
         return wrapper;
     }
 

+ 1 - 0
sd-business/src/main/resources/mapper/order/OrderMapper.xml

@@ -12,6 +12,7 @@
                o.wln_create_time,
                o.wln_approve_time,
                o.wln_print_time,
+               o.wln_storage_code,
                o.delivery_time,
                o.wln_modify_time,
                o.wln_modify_timestamp,