From 19b3cd8d64af08e5c0b3bd680c699e46a07e13d3 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期五, 18 七月 2025 15:50:44 +0800
Subject: [PATCH] #预调度生成任务

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  106 ++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 80 insertions(+), 26 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index fc27a46..0c9f582 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -49,6 +49,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
+import java.io.IOException;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -125,16 +126,90 @@
                 LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
                 SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                 StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
+                StaProtocol staProtocolIn = devpThread.getStation().get(inSta.getStaNo() -1);
+                if (staProtocolIn == null) {
+                    continue;
+                } else {
+                    staProtocolIn = staProtocolIn.clone();
+                }
+                if (barcodeThread == null) {
+                    continue;
+                }
+                String barcode = barcodeThread.getBarcode();
+                if(staProtocolIn.getStamp() == 1) {
+                    WrkMast checkPick = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+                            .eq("barcode", barcode)
+                            .in("io_type", 107, 103, 57));
+                    if (!Cools.isEmpty(checkPick)) {
+                        continue;
+                    }
+                    try {
+                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
+
+                        SearchLocParam param = new SearchLocParam();
+                        locTypeDto.setLocType1((short) 1);
+                        param.setBarcode(barcode);
+                        param.setIoType(1);
+                        param.setSourceStaNo(inSta.getStaNo());
+                        param.setLocType1(locTypeDto.getLocType1());
+                        param.setWeight(staProtocol.getWeight());
+                        String response = new HttpHandler.Builder()
+                                .setTimeout(30, TimeUnit.SECONDS)
+                                .setUri(wmsUrl)
+                                .setPath("/rpc/pakin/loc/v1")
+                                .setJson(JSON.toJSONString(param))
+                                .build()
+                                .doPost();
+                        JSONObject jsonObject = JSON.parseObject(response);
+                        if (jsonObject.getInteger("code").equals(200)) {
+                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
+                            barcodeThread.setBarcode("");
+                            staProtocol.setWorkNo(dto.getWorkNo());
+                            //staProtocol.setStaNo(RouteUtils.SouStaEnd(dto.getStaNo(),dto.getSourceStaNo()));
+                            staProtocol.setStaNo(dto.getStaNo().shortValue());
+                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, staProtocol));
+                            log.error("杈撻�佺嚎涓嬪彂2锛�" + dto.getWorkNo() + "," + dto.getStaNo());
+
+                            ledThread.errorReset();
+                            log.error("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎");
+
+                            if (!result) {
+                                News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
+
+                                throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+                            }
+                        } else {
+                            if (jsonObject.getString("msg").equals("宸ヤ綔妗e凡瀛樺湪")) {
+                                continue;
+                            }
+                            staProtocol.setWorkNo(wrkNo);
+                            wrkNo++;
+                            staProtocol.setStaNo(inSta.getBackSta().shortValue());
+                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                            log.error("杈撻�佺嚎涓嬪彂2锛�" + staProtocol.getWorkNo() + "," + staProtocol.getStaNo());
+
+//                            if (ledThread != null) {
+                            String errorMsg = jsonObject.getString("msg");
+                            if (!Cools.isEmpty(errorMsg)) {
+                                MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
+                            }
+//                            }
+//                            News.error(methodName + ":璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
+                        }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    }
+                }
+
                 if (staProtocol == null) {
                     continue;
                 } else {
                     staProtocol = staProtocol.clone();
                 }
 
-                if (barcodeThread == null) {
-                    continue;
-                }
-                String barcode = barcodeThread.getBarcode();
                 // 灏哄妫�娴嬪紓甯�
                 boolean back = false;
                 String errMsg = "";
@@ -226,7 +301,7 @@
 //
 //                        }
                         News.error(barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,璇锋煡鐪媁CS杈撻�佺嚎鐣岄潰,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
-                        MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑浠诲姟,宸ヤ綔鍙�=" + wrkMast.getWrkNo()));
+//                        MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑浠诲姟,宸ヤ綔鍙�=" + wrkMast.getWrkNo()));
                         continue;
 //                        barcodeThread.setBarcode("");
 //                        staProtocol.setWorkNo(wrkMast.getWrkNo());
@@ -291,27 +366,6 @@
                             }
                         } else {
                             if (jsonObject.getString("msg").equals("宸ヤ綔妗e凡瀛樺湪")) {
-
-                                //宸ヤ綔妗e凡瀛樺湪    鍐嶆杩涘幓
-//                                wrkMast = wrkMastMapper.selectPakInStepBarcode(barcode);
-//                                if (wrkMast != null) {
-//                                    barcodeThread.setBarcode("");
-//                                    staProtocol.setWorkNo(9999);
-//                                    //staProtocol.setWorkNo(wrkMast.getWrkNo());
-//                                    //staProtocol.setStaNo(RouteUtils.SouStaEnd(dto.getStaNo(),dto.getSourceStaNo()));
-//                                    staProtocol.setStaNo(inSta.getBackSta().shortValue());
-//                                    devpThread.setPakMk(staProtocol.getSiteId(), false);
-//                                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-//                                    log.error("杈撻�佺嚎涓嬪彂2锛�" + wrkMast.getWrkNo() + "," + wrkMast.getStaNo());
-//                                    ledThread.errorReset();
-//                                    log.error("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎");
-//                                    if (!result) {
-//                                        News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
-//
-//                                        throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-//                                    }
-//                                }
-
                                 continue;
                             }
                             staProtocol.setWorkNo(wrkNo);

--
Gitblit v1.9.1