From cf55ca39fd7f7d65d5119313dff6315ac63aad8c Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期四, 12 十月 2023 08:29:10 +0800
Subject: [PATCH] 自动补货单

---
 src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java |   99 +++++++++++++++++++++++++++++++++
 src/main/java/com/zy/asrs/task/AutoReplenishmentScheduler.java       |   43 ++++++++++++++
 2 files changed, 142 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/asrs/task/AutoReplenishmentScheduler.java b/src/main/java/com/zy/asrs/task/AutoReplenishmentScheduler.java
new file mode 100644
index 0000000..7050458
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/AutoReplenishmentScheduler.java
@@ -0,0 +1,43 @@
+package com.zy.asrs.task;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.zy.asrs.entity.DocType;
+import com.zy.asrs.entity.Order;
+import com.zy.asrs.service.DocTypeService;
+import com.zy.asrs.service.OrderService;
+import com.zy.asrs.task.handler.AutoReplenishmentHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Slf4j
+@Component
+public class AutoReplenishmentScheduler {
+
+    @Autowired
+    private OrderService orderService;
+    @Autowired
+    private DocTypeService docTypeService;
+    @Autowired
+    private AutoReplenishmentHandler autoReplenishmentHandler;
+
+    /*
+    瀹氭椂澶勭悊鑷姩琛ヨ揣鍗曟嵁
+     */
+    @Scheduled(cron = "0/5 * * * * ? ")
+    public void excute(){
+        DocType docType = docTypeService.selectOne(new EntityWrapper<DocType>().eq("doc_name", "鑷姩琛ヨ揣鍗�"));
+        List<Order> orderList = orderService.selectList(new EntityWrapper<Order>()
+                .eq("doc_type", docType.getDocId())
+                .eq("settle",1));
+        if(!Cools.isEmpty(orderList)){
+            orderList.forEach(order -> {
+                autoReplenishmentHandler.start(order);
+            });
+        }
+    }
+}
diff --git a/src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java b/src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java
new file mode 100644
index 0000000..2a9cb89
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/handler/AutoReplenishmentHandler.java
@@ -0,0 +1,99 @@
+package com.zy.asrs.task.handler;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.LocDetl;
+import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.Order;
+import com.zy.asrs.entity.OrderDetl;
+import com.zy.asrs.service.LocDetlService;
+import com.zy.asrs.service.LocMastService;
+import com.zy.asrs.service.OrderDetlService;
+import com.zy.asrs.service.WorkService;
+import com.zy.asrs.task.AbstractHandler;
+import com.zy.asrs.task.core.ReturnT;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+@Service
+public class AutoReplenishmentHandler extends AbstractHandler<String> {
+
+    @Autowired
+    private OrderDetlService orderDetlService;
+    @Autowired
+    private LocDetlService locDetlService;
+    @Autowired
+    private LocMastService locMastService;
+    @Autowired
+    private WorkService workService;
+
+    @Transactional
+    public ReturnT<String> start(Order order) {
+
+        Set<String> locNos = pakoutLoc(order);
+        for (String locNo : locNos){
+            LocMast locMast = locMastService.selectByLoc(locNo);
+            if(!"F".equals(locMast.getLocSts())){
+                throw new CoolException("搴撲綅鐘舵�佸凡鍙樻洿");
+            }
+            //鐢熸垚宸ヤ綔妗�
+
+            //鐢熸垚宸ヤ綔妗f槑缁�
+            //淇敼搴撲綅鐘舵��
+        }
+
+
+        return SUCCESS;
+    }
+
+    private Set<String> pakoutLoc(Order order){
+        //闇�瑕佸嚭搴撶殑搴撲綅
+        Set<String> locNos = new HashSet<>();
+        //鏍规嵁璁㈠崟鐢熸垚鍥涢」搴撳嚭搴撳伐浣滄。
+        List<OrderDetl> orderDetlList = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", order.getOrderNo()));
+        orderDetlList.forEach(orderDetl -> {
+            String matnr = orderDetl.getMatnr();
+            Double orderAnfme = orderDetl.getAnfme();
+
+            List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
+                    .eq("matnr", matnr)
+                    .eq("loc_sts","F")
+                    .groupBy("loc_no"));
+            for (LocDetl locDetl : locDetls){
+                String locNo = locDetl.getLocNo();
+                //璁㈠崟寰呭嚭鏁伴噺鍑忓幓搴撳瓨鏁伴噺
+                orderAnfme -= locDetl.getAnfme();
+                //娣诲姞寰呭嚭搴撳簱浣�
+                locNos.add(locNo);
+
+                if(orderAnfme <= 0){
+                    orderDetl.setQty(orderDetl.getAnfme() - orderAnfme);
+                    orderDetlService.updateById(orderDetl);
+                    break;
+                }
+            }
+
+        });
+
+        return locNos;
+    }
+
+    public static void main(String[] args) {
+        for (int i=0; i<10; i++){
+            for (int y=0; y<10; y++){
+                System.out.println(i);
+                System.out.println(y);
+                if(y == 5){
+                    break;
+                }
+            }
+        }
+    }
+
+
+}

--
Gitblit v1.9.1