From c37ae85eab15d2c7566677bfb26920c31da879fe Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期五, 24 十一月 2023 12:07:51 +0800
Subject: [PATCH] agv拣货流程更改

---
 src/main/java/com/zy/asrs/controller/OutController.java |  183 +++++++++++++++------------------------------
 1 files changed, 63 insertions(+), 120 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index f851843..442a91a 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -53,6 +53,8 @@
     private ManLocDetlService manLocDetlService;
     @Autowired
     private ManPakOutService manPakOutService;
+    @Autowired
+    private DocTypeService docTypeService;
 
     @Autowired
     private AgvLocDetlService agvLocDetlService;
@@ -75,22 +77,36 @@
 
         for (OrderDetl orderDetl : orderDetlList) {
             double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D);
-            if (issued <= 0.0D) { continue; }
+            Order order = orderService.selectByNo(orderDetl.getOrderNo());
+            DocType docType = docTypeService.selectById(order.getDocType());
+            if("浜哄伐琛ヨ揣鍗�".equals(docType.getDocName())){
+                if (issued <= 0.0D) { continue; }
+                issued = locDetlService.queryStockAndSetLocDto1(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
+                if (issued > 0) {
+                    LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
+                    locDto.setLack(Boolean.TRUE);
+                    locDtoList.add(locDto);
+                }
+            }else {
+                if (issued <= 0.0D) { continue; }
 
-            //浠庡钩搴撳鎵�
-            issued = manLocDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
+                //浠庡钩搴撳鎵�
+                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());
+                //鍏堟壘AGV鐨勫簱瀛橈紝濡傛灉杩斿洖鐨刬ssued澶т簬0锛屽垯鍘诲洓椤瑰簱鎵�
+                issued = agvLocDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
 
-            //浠庡洓椤瑰簱鐨勫簱瀛橀噷闈㈡壘锛�
-            issued = locDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
+                //浠庡洓椤瑰簱鐨勫簱瀛橀噷闈㈡壘锛�
+                issued = locDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
 
-            if (issued > 0) {
-                LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
-                locDto.setLack(Boolean.TRUE);
-                locDtoList.add(locDto);
+                if (issued > 0) {
+                    LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
+                    locDto.setLack(Boolean.TRUE);
+                    locDtoList.add(locDto);
+                }
             }
+
+
         }
         return R.ok().add(locDtoList);
 
@@ -132,102 +148,12 @@
         agvWorkService.stockOutWrkMast(agvTaskDtos, getUserId());
 
         // 鐢熸垚鍑哄簱浠诲姟
-        List<String> excludeLocNos = taskDtos.stream().map(TaskDto::getLocNo).distinct().collect(Collectors.toList());
+        taskDtos.stream().map(TaskDto::getLocNo).distinct().collect(Collectors.toList());
         for (TaskDto taskDto : taskDtos) {
             BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo());
             workService.stockOut(staNo, taskDto, getUserId());
         }
         return R.ok();
-
-        /*
-        if (Cools.isEmpty(locDtos)) {
-            return R.parse(BaseRes.PARAM);
-        }
-        boolean lack = true;
-        for (LocDto locDto : locDtos) {
-            if (Cools.isEmpty(locDto.getStaNo()) && !locDto.isLack()) {
-                return R.error(locDto.getLocNo()+"搴撲綅璇烽�夋嫨鍑哄簱绔�");
-            }
-        }
-        for (LocDto locDto : locDtos) {
-            if (!locDto.isLack()) {
-                lack = false;
-                break;
-            }
-        }
-        if (lack) {
-            return R.error("搴撳瓨涓嶈冻");
-        }
-
-        Thread.sleep(500L);
-
-        // 璁㈠崟棰勬牎楠�  ===>> 1.璁㈠崟鐘舵�侊紱 2.璁㈠崟甯﹀嚭鏁伴噺
-        List<OrderDto> orderDtos = new ArrayList<>();
-        for (LocDto locDto : locDtos) {
-            if (!isJSON(locDto.getOrderNo())) {
-                if (Cools.isEmpty(locDto.getOrderNo())) { continue; }
-                OrderDto orderDto = new OrderDto(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getAnfme());
-                if (OrderDto.has(orderDtos, orderDto)) {
-                    OrderDto dto = OrderDto.find(orderDtos, orderDto);
-                    assert dto != null;
-                    dto.setAnfme(dto.getAnfme() + orderDto.getAnfme());
-                } else {
-                    orderDtos.add(orderDto);
-                }
-            } else {
-                // 璁㈠崟鍚堝苟鍑哄簱
-                List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
-                for (OrderDto one : orderDtoList) {
-                    OrderDto orderDto = new OrderDto(one.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), one.getAnfme());
-                    if (OrderDto.has(orderDtos, orderDto)) {
-                        OrderDto dto = OrderDto.find(orderDtos, orderDto);
-                        assert dto != null;
-                        dto.setAnfme(dto.getAnfme() + orderDto.getAnfme());
-                    } else {
-                        orderDtos.add(orderDto);
-                    }
-                }
-            }
-        }
-        for (OrderDto orderDto : orderDtos) {
-            Order order = orderService.selectByNo(orderDto.getOrderNo());
-            if (order.getSettle() > 2) {
-                return R.error(orderDto.getOrderNo() + "璁㈠崟宸插け鏁堬紝璇峰強鏃跺埛鏂伴〉闈�");
-            }
-//            OrderDetl orderDetl = orderDetlService.selectItemNoneOfBatch(orderDto.getOrderNo(), orderDto.getMatnr());
-//            if (orderDetl.getAnfme() - orderDetl.getQty() < orderDto.getAnfme()) {
-//                return R.ok(orderDto.getOrderNo() + "璁㈠崟宸蹭綔涓氾紝璇峰強鏃跺埛鏂伴〉闈�");
-//            }
-        }
-
-        List<TaskDto> taskDtos = new ArrayList<>();
-        // 鏍规嵁 锛堝簱浣� & 鍑哄簱绔欙級 鍒嗙粍锛� 鐞嗘兂鐘舵�侊細涓�缁勪负涓�娆″嚭搴撲换鍔�
-        for (LocDto locDto : locDtos) {
-            if (locDto.isLack()) { continue; }
-            // 闃叉鍓嶇椤甸潰鎻愬彇搴撲綅淇℃伅鍚庯紝鍦ㄥ叾浠栧湴鏂瑰璇ュ簱浣嶇敓鎴愪簡鍑哄簱浠诲姟(搴撲綅鐘舵�侀潪F鐘舵��)
-            LocMast locMast = locMastService.selectById(locDto.getLocNo());
-            if(!Cools.isEmpty(locMast) && !locMast.getLocSts().equals("F")){
-                return R.error("搴撲綅鍙烽潪鍦ㄥ簱鐘舵�侊紝璇烽噸鏂伴�夋嫨鍑哄簱搴撲綅===>>" + locDto.getLocNo());
-            }
-
-            TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getStaNo(), locDto);
-            if (TaskDto.has(taskDtos, taskDto)) {
-                TaskDto dto = TaskDto.find(taskDtos, taskDto);
-                assert dto != null;
-                dto.getLocDtos().addAll(taskDto.getLocDtos());
-            } else {
-                taskDtos.add(taskDto);
-            }
-        }
-
-        // -----------------------------------------------------------------------------------------------
-        List<String> excludeLocNos = taskDtos.stream().map(TaskDto::getLocNo).distinct().collect(Collectors.toList());
-        for (TaskDto taskDto : taskDtos) {
-            BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo());
-            workService.stockOut(staNo, taskDto, getUserId());
-            locMastService.breakUp(taskDto.getLocNo(), excludeLocNos);
-        }
-        return R.ok();*/
     }
 
 
@@ -340,18 +266,33 @@
         if(!Cools.isEmpty(agvLocMast) && !agvLocMast.getLocSts().equals("F")){
             throw new CoolException("搴撲綅鍙烽潪鍦ㄥ簱鐘舵�侊紝璇烽噸鏂伴�夋嫨鍑哄簱搴撲綅===>>" + locDto.getLocNo());
         }
-        AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>()
-                .eq("station_code", locDto.getAgvStaNo())
-                .eq("loc_sts", "O"));
-        if(Cools.isEmpty(agvBasDevp)){
-            //TODO 鍋囧鍑哄簱绔欑偣涓嶈冻锛岃褰曟湭鍑哄簱鐨勫簱浣嶏紱
+        TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getAgvStaNo(), locDto);
+        if (TaskDto.has(agvTaskDtos, taskDto)) {
+            TaskDto dto = TaskDto.find(agvTaskDtos, taskDto);
+            assert dto != null;
+            dto.getLocDtos().addAll(taskDto.getLocDtos());
             return;
+        } else {
+            agvTaskDtos.add(taskDto);
         }
-        agvBasDevp.setLocSts("S");
-        agvBasDevpService.updateById(agvBasDevp);
-        TaskDto taskDto = new TaskDto(locDto.getLocNo(), agvBasDevp.getDevNo(), locDto);
-        //TODO 鏆備笉鑰冭檻搴撲綅娣疯浇鐘舵�侊紙鍚庣画鐪嬫儏鍐垫槸鍚﹂渶瑕佸垽鏂級
-        agvTaskDtos.add(taskDto);
+
+//        //瀵绘壘绌虹珯鐐逛綅缃�
+//        AgvBasDevp agvBasDevp = agvBasDevpService.selectEmptyDevpByStation(locDto.getAgvStaNo());
+//        if(Cools.isEmpty(agvBasDevp)){
+//            //濡傛灉娌℃湁鎵惧埌绌虹珯鐐癸紝鍒欑敓鎴愬噯澶囦换鍔�
+//            //TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getAgvStaNo(), locDto);
+//            //agvTaskDtos.add(taskDto);
+//            //濡傛灉搴撲綅瀛樺湪娣疯浇
+//
+//            return;
+//        }
+////        agvBasDevp.setLocSts("S");
+////        agvBasDevpService.updateById(agvBasDevp);
+//        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvBasDevp.getDevNo(),"S",null);
+//        //TaskDto taskDto = new TaskDto(locDto.getLocNo(), agvBasDevp.getDevNo(), locDto);
+//        taskDto.setAgvStaNo(agvBasDevp.getDevNo());
+
+        //agvTaskDtos.add(taskDto);
 
     }
 
@@ -380,10 +321,11 @@
     鐢熸垚骞冲簱鎷h揣鍗�
      */
     private void generateManPakout(LocDto locDto){
-        ManLocDetl manLocDetl = manLocDetlService.selectItem(locDto.getLocNo(), locDto.getMatnr(), locDto.getBatch());
+        ManLocDetl manLocDetl = manLocDetlService.selectItem(locDto.getLocNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getCsocode(),locDto.getIsoseq(),locDto.getContainerCode());
         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()));
+            //addPakOUT 鐢熸垚鎷h揣鍗曟垚鍔�
             if (addPakOUT(locDto).equals(R.ok())) {
                 Order order = orderService.selectByNo(locDto.getOrderNo());
                 if (Cools.isEmpty(order)){
@@ -434,13 +376,14 @@
         }else{
             manPakOut.setUuid(manPakOutExist.getUuid());
         }
-        try{
-            if (!manPakOutService.insert(manPakOut)){
-                return R.error("娣诲姞鎷h揣鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
-            }
-        }catch (Exception e){
-            return R.error("娣诲姞鎷h揣鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
-        }
+        manPakOutService.insert(manPakOut);
+//        try{
+//            if (!manPakOutService.insert(manPakOut)){
+//                return R.error("娣诲姞鎷h揣鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
+//            }
+//        }catch (Exception e){
+//            return R.error("娣诲姞鎷h揣鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
+//        }
         return R.ok();
 
     }

--
Gitblit v1.9.1