From c832c7f5d6f8c015d609e044e902e070da5240b0 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期日, 24 九月 2023 14:22:57 +0800
Subject: [PATCH] 拣货单

---
 src/main/java/com/zy/asrs/controller/OutController.java |  122 +++++++++++++++++++++++++++-------------
 1 files changed, 81 insertions(+), 41 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index efaaee0..f851843 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -17,9 +17,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -51,6 +49,10 @@
     private AgvBasDevpService agvBasDevpService;
     @Autowired
     private AgvWorkService agvWorkService;
+    @Autowired
+    private ManLocDetlService manLocDetlService;
+    @Autowired
+    private ManPakOutService manPakOutService;
 
     @Autowired
     private AgvLocDetlService agvLocDetlService;
@@ -75,6 +77,9 @@
             double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D);
             if (issued <= 0.0D) { continue; }
 
+            //浠庡钩搴撳鎵�
+            issued = manLocDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
+
             //鍏堟壘AGV鐨勫簱瀛橈紝濡傛灉杩斿洖鐨刬ssued澶т簬0锛屽垯鍘诲洓椤瑰簱鎵�
             issued = agvLocDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
 
@@ -89,44 +94,6 @@
         }
         return R.ok().add(locDtoList);
 
-        /*
-        if (Cools.isEmpty(ids)) {
-            return R.parse(BaseRes.PARAM);
-        }
-        List<OrderDetl> orderDetls = orderDetlService.selectBatchIds(ids);
-        List<LocDto> locDtos = new ArrayList<>();
-
-        Set<String> exist = new HashSet<>();
-
-        for (OrderDetl orderDetl : orderDetls) {
-            double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D);
-            if (issued <= 0.0D) { continue; }
-            List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist);
-            for (LocDetl locDetl : locDetls) {
-                if (issued > 0) {
-//                    LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(),
-//                            issued >= locDetl.getAnfme() ? locDetl.getAnfme() : issued);
-                    LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(),
-                            locDetl.getAnfme());
-//                    int ioType = (issued >= locDetl.getAnfme() && locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("loc_no", locDto.getLocNo())) == 1) ? 101 : 103;
-                    int ioType = 101;
-                    List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), ioType);
-                    locDto.setStaNos(staNos);
-                    locDtos.add(locDto);
-                    exist.add(locDetl.getLocNo());
-                    // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
-                    issued = issued - locDetl.getAnfme();
-                } else {
-                    break;
-                }
-            }
-            if (issued > 0) {
-                LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
-                locDto.setLack(Boolean.TRUE);
-                locDtos.add(locDto);
-            }
-        }
-        return R.ok().add(locDtos); */
     }
 
     @PostMapping("/out/pakout/auth")
@@ -350,6 +317,10 @@
             if (locDto.isLack()) { continue; }
             //AGV搴�
             if(!Cools.isEmpty(locDto.getAgvStaNos())){
+                //骞冲簱
+                if("鏃犻渶绔欑偣".equals(locDto.getAgvStaNo())){
+                    generateManPakout(locDto);
+                }
                 generateTaskDtoForAgv(locDto,agvTaskDtos);
 
                 //鍥涢」搴�
@@ -406,6 +377,75 @@
     }
 
     /*
+    鐢熸垚骞冲簱鎷h揣鍗�
+     */
+    private void generateManPakout(LocDto locDto){
+        ManLocDetl manLocDetl = manLocDetlService.selectItem(locDto.getLocNo(), locDto.getMatnr(), locDto.getBatch());
+        if (!Cools.isEmpty(manLocDetl) && !(locDto.getAnfme()>manLocDetl.getAnfme())) {
+            manLocDetl.setStatus(0);
+            manLocDetlService.update(manLocDetl, new EntityWrapper<ManLocDetl>().eq("loc_no", manLocDetl.getLocNo()).eq("matnr",manLocDetl.getMatnr()));
+            if (addPakOUT(locDto).equals(R.ok())) {
+                Order order = orderService.selectByNo(locDto.getOrderNo());
+                if (Cools.isEmpty(order)){
+                    throw new CoolException("鏌ヨ璁㈠崟澶辫触锛岃鑱旂郴绠$悊鍛�"+locDto.getOrderNo());
+                }
+                if (order.getSettle()==1){
+                    if (!orderService.updateSettle(order.getId(),2L,null)){
+                        throw new CoolException("淇敼璁㈠崟鐘舵�佸け璐ワ紝璇疯仈绯荤鐞嗗憳"+locDto.getOrderNo());
+                    }
+                }
+                OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", locDto.getOrderNo()).eq("matnr", locDto.getMatnr()));
+                if (Cools.isEmpty(orderDetl)){
+                    throw new CoolException("鏌ヨ璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"+locDto.getOrderNo()+locDto.getMatnr());
+                }
+                orderDetl.setQty(orderDetl.getQty() + locDto.getAnfme());
+                if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no", locDto.getOrderNo()).eq("matnr", locDto.getMatnr()))){
+                    throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"+locDto.getOrderNo()+locDto.getMatnr());
+                }
+            }
+        }else {
+            throw new CoolException("搴撳瓨涓嶈冻");
+        }
+    }
+
+    private R addPakOUT(LocDto locDto){
+        ManPakOut manPakOut=new ManPakOut();
+        manPakOut.setWrkNo(locDto.getOrderNo()+"-"+System.currentTimeMillis());
+        manPakOut.setWrkSts((long)1);
+        manPakOut.setAnfme(locDto.getAnfme());
+        manPakOut.setLocNo(locDto.getLocNo());
+        manPakOut.setMatnr(locDto.getMatnr());
+        manPakOut.setMaktx(locDto.getMaktx());
+        manPakOut.setDocNum(locDto.getOrderNo());
+        manPakOut.setCount(0.0);
+        manPakOut.setStatus(0);
+        manPakOut.setCreateTime(new Date());
+        manPakOut.setBatch(locDto.getBatch());
+        manPakOut.setUpdateTime(new Date());
+        manPakOut.setUuid(UUID.randomUUID().toString());
+
+        manPakOut.setContainerCode(locDto.getContainerCode());
+        manPakOut.setCsocode(locDto.getCsocode());
+        manPakOut.setIsoseq(locDto.getIsoseq());
+
+        ManPakOut manPakOutExist = manPakOutService.selectOne(new EntityWrapper<ManPakOut>().eq("doc_num", locDto.getOrderNo()));
+        if (Cools.isEmpty(manPakOutExist)){
+            manPakOut.setName(locDto.getMaktx());
+        }else{
+            manPakOut.setUuid(manPakOutExist.getUuid());
+        }
+        try{
+            if (!manPakOutService.insert(manPakOut)){
+                return R.error("娣诲姞鎷h揣鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
+            }
+        }catch (Exception e){
+            return R.error("娣诲姞鎷h揣鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
+        }
+        return R.ok();
+
+    }
+
+    /*
     璁㈠崟棰勬牎楠�  ===>> 1.璁㈠崟鐘舵�侊紱 2.璁㈠崟甯﹀嚭鏁伴噺
      */
     private List<OrderDto> orderPreVerification(List<LocDto> locDtos){

--
Gitblit v1.9.1