From d36e5e64c363af15a27547b47d0fd2f5b7391346 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期五, 17 五月 2024 18:08:49 +0800
Subject: [PATCH] #二楼

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  171 +++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 143 insertions(+), 28 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 08a9a18..738590d 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -94,6 +94,8 @@
     private WrkMastStaService wrkMastStaService;
     @Autowired
     private MatnrCodeService matnrCodeService;
+    @Autowired
+    private WaitPakinService waitPakinService;
 
     @Value("${wms.url}")
     private String wmsUrl;
@@ -2065,10 +2067,14 @@
                     List<StaDesc> staDescs = staDescService.selectList(new EntityWrapper<StaDesc>().eq("type_no", 10).eq("stn_no", sta.getStaNo()));
                     for (StaDesc staDesc:staDescs){
 
-                        BasDevp basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", staDesc.getCrnStn()));
+                        BasDevp basDevp = new BasDevp();
 
-                        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("crn_no", staDesc.getCrnNo()).gt("io_type", 100));
-                        if (!Cools.isEmpty(wrkMast)){
+                        if (staDesc.getCrnNo() == 1){
+                            basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", 1004));
+                        } else if (staDesc.getCrnNo() == 2) {
+                            basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", 1008));
+                        }
+                        if (Cools.isEmpty(basDevp)){
                             continue;
                         }
 
@@ -2265,7 +2271,7 @@
             crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
             crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 婧愬簱浣嶅垪
             crnCommand.setSourcePosZ(crnStn.getLev().shortValue());     // 婧愬簱浣嶅眰
-            crnCommand.setDestinationPosX(locMast.getRow1()==9?(short)4:(short)5);     // 鐩爣搴撲綅鎺�
+            crnCommand.setDestinationPosX(locMast.getRow1().shortValue());     // 鐩爣搴撲綅鎺�
             crnCommand.setDestinationPosY(locMast.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
             crnCommand.setDestinationPosZ(locMast.getLev1().shortValue());     // 鐩爣搴撲綅灞�
             crnCommand.setLocType1(locMast.getLocType1().shortValue());     // 璐х墿绫诲瀷
@@ -2410,7 +2416,7 @@
                     crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
                     crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
                     crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-                    crnCommand.setSourcePosX(locMast.getRow1()==9?(short)4:(short)5);     // 婧愬簱浣嶆帓
+                    crnCommand.setSourcePosX(locMast.getRow1().shortValue());     // 婧愬簱浣嶆帓
                     crnCommand.setSourcePosY(locMast.getBay1().shortValue());     // 婧愬簱浣嶅垪
                     crnCommand.setSourcePosZ(locMast.getLev1().shortValue());     // 婧愬簱浣嶅眰
                     crnCommand.setDestinationPosX(crnStn.getRow().shortValue());     // 鐩爣搴撲綅鎺�
@@ -2501,6 +2507,10 @@
             }else {
                 rgvProtocol = rgvProtocol.clone();
             }
+            List<WrkMastSta> wrkMastStas = wrkMastStaService.selectRGVTask1(rgvSlave.getId());
+            if (!Cools.isEmpty(wrkMastStas)){
+                continue;
+            }
             if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.IDLE && rgvProtocol.getLoaded1() == 0){
                 boolean work1 = false;
                 boolean work2 = false;
@@ -2518,6 +2528,8 @@
                 short type2 = 0;
                 short anfme = 0;
                 short anfme2 = 0;
+                Double weight = 0d;
+                Double weight2 = 0d;
 
                 //宸ヤ綅涓�浠诲姟
                 for (RgvSlave.Sta inStn :  rgvSlave.getInStn()){
@@ -2527,12 +2539,12 @@
                     SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId());
                     StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo());
                     if (staProtocol == null) {
-                        break;
-//                    continue;
+//                        break;
+                        continue;
                     } else {
                         staProtocol = staProtocol.clone();
                     }
-                    if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk() && staProtocol.getWorkNo()>0){
+                    if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk() && (staProtocol.getWorkNo()>0 && staProtocol.getWorkNo()<9900)){
 
                             WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo());
                             if (Cools.isEmpty(wrkMast)){
@@ -2547,6 +2559,33 @@
                             break;
 
 
+                    } else if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk() && (staProtocol.getWorkNo()>=9900 || staProtocol.getWorkNo()==0)) {
+                        workNo1 = workNo++;
+                        souSta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getSourceStaNo());
+                        if (inStn.getSourceStaNo() == 4007 && staProtocol.getTongType() == 1){
+                            sta1 = Utils.getRgvStaNo(rgvSlave.getId(),2103);
+                        } else if (inStn.getSourceStaNo() == 4007 && staProtocol.getTongType() == 2) {
+                            sta1 = Utils.getRgvStaNo(rgvSlave.getId(),2002);
+                        } else if (inStn.getSourceStaNo() == 2102 && staProtocol.isFullPlt()) {
+                            sta1 = Utils.getRgvStaNo(rgvSlave.getId(),2301);
+                        } else {
+                            sta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getStaNo());
+                        }
+
+                        if (inStn.getSourceStaNo() == 2102 && staProtocol.isEmptyMk()){ //鍖哄垎绌烘澘
+                            type = 1;
+                        }
+                        if(inStn.getSourceStaNo() == 2102){
+                            weight = staProtocol.getWeight().doubleValue();
+                        }
+
+                        work1 = true;
+                        if (inStn.getSourcePlcId() == 4 || inStn.getSourcePlcId() ==5){ //鐏岃绔欓渶瑕佽幏鍙栬緭閫佺嚎鐗╂枡浠g爜
+                            matnr = staProtocol.getMatnr();
+                        }
+
+                        devpThread.setPakMk(inStn.getSourceStaNo(),false);
+                        break;
                     }
                 }
 
@@ -2562,12 +2601,12 @@
                         SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId());
                         StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo());
                         if (staProtocol == null) {
-                            break;
-//                    continue;
+//                            break;
+                            continue;
                         } else {
                             staProtocol = staProtocol.clone();
                         }
-                        if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()&& staProtocol.isPakMk() && staProtocol.getWorkNo()>0){
+                        if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()&& staProtocol.isPakMk() && (staProtocol.getWorkNo()>0 && staProtocol.getWorkNo()<9900)){
 
                                 WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo());
                                 if (Cools.isEmpty(wrkMast)){
@@ -2580,7 +2619,34 @@
                                 work2 = true;
                                 devpThread.setPakMk(inStn.getSourceStaNo(),false);
                                 break;
+                        } else if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk() && (staProtocol.getWorkNo()>=9900 || staProtocol.getWorkNo()==0)) {
+                            workNo2 = workNo++;
+                            souSta2 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getSourceStaNo());
+                            if (inStn.getSourceStaNo() == 4007 && staProtocol.getTongType() == 1){
+                                sta2 = Utils.getRgvStaNo(rgvSlave.getId(),2103);
+                            } else if (inStn.getSourceStaNo() == 4007 && staProtocol.getTongType() == 2) {
+                                sta2 = Utils.getRgvStaNo(rgvSlave.getId(),2002);
+                            }else if (inStn.getSourceStaNo() == 2102 && staProtocol.isFullPlt()) {
+                                sta2 = Utils.getRgvStaNo(rgvSlave.getId(),2301);
+                            } else {
+                                sta2 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getStaNo());
                             }
+
+                            if (inStn.getSourceStaNo() == 2102 && staProtocol.isEmptyMk()){ //鍖哄垎绌烘澘
+                                type2 = 1;
+                            }
+
+                            if(inStn.getSourceStaNo() == 2102){
+                                weight2 = staProtocol.getWeight().doubleValue();
+                            }
+
+                            work2 = true;
+                            if (inStn.getSourcePlcId() == 4){
+                                matnr2 = staProtocol.getMatnr();
+                            }
+                            devpThread.setPakMk(inStn.getSourceStaNo(),false);
+                            break;
+                        }
 
 
                     }
@@ -2612,6 +2678,9 @@
 
                     command.setType(type);
                     command.setType2(type2);
+
+                    command.setWeight(weight);
+                    command.setWeight2(weight2);
 
                     if (workNo1 == 0 && workNo2 !=0){
                         command.setTaskMode(RgvTaskModeType.FETCH_PUT2); // 浠诲姟妯″紡: 2鍙栨斁璐�
@@ -2840,6 +2909,9 @@
                     continue;
                 }
                 for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){
+                    if (!Objects.equals(Utils.getStaNo(rgvSlave.getId(), wrkMastSta.getWrkEnd()), outStn.getStaNo())){
+                        continue;
+                    }
                     SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId());
                     StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo());
                     if (staProtocol == null) {
@@ -2875,6 +2947,9 @@
                     continue;
                 }
                 for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){
+                    if (!Objects.equals(Utils.getStaNo(rgvSlave.getId(), wrkMastSta.getStaEnd()), outStn.getStaNo())){
+                        continue;
+                    }
                     SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId());
                     StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo());
                     if (staProtocol == null) {
@@ -2967,7 +3042,7 @@
                     boolean offer = MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(4, new RgvCommand()));
                     log.info("{}鍙穜gv宸ヤ綅浜屽伐浣滃畬鎴愬浣�,宸ヤ綔鍙�:{}",rgvSlave.getId(),rgvProtocol.getTaskNo2());
                     if (offer){
-                        Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", rgvProtocol.getRgvNo()).eq("wrk_no", rgvProtocol.getTaskNo2());
+                        Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", rgvProtocol.getRgvNo()).eq("wrk_no2", rgvProtocol.getTaskNo2());
                         WrkMastSta wrkMastSta1 = wrkMastStaService.selectOne(wrkMastStaWrapper);
                         if (Cools.isEmpty(wrkMastSta1)){
                             log.error("瀹屾垚{}鍙疯溅宸ヤ綅浜屼换鍔℃湭鎵惧埌瀵瑰簲宸ヤ綔浠诲姟,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2());
@@ -3011,10 +3086,26 @@
 
     public boolean rgvTaskSave(RgvCommand command){
 //        Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", command.getRgvNo()).eq("wrk_no", command.getTaskNo1());
-        List<WrkMastSta> wrkMastSta1 = wrkMastStaService.selectBywrkNoHistoricalTasks(command.getRgvNo(),command.getTaskNo1(),command.getTaskNo2());
-        if (!Cools.isEmpty(wrkMastSta1)){
-            wrkMastStaService.deleteBatchIds(wrkMastSta1);
+        if (command.getTaskNo1() > 0){
+            List<WrkMastSta> wrkMastSta1 = wrkMastStaService.selectBywrkNoHistoricalTasks(command.getRgvNo(),command.getTaskNo1());
+            if (!Cools.isEmpty(wrkMastSta1)){
+                for (WrkMastSta wrkMastSta :wrkMastSta1){
+                    wrkMastStaService.deleteById(wrkMastSta);
+                }
+
+            }
         }
+        if (command.getTaskNo2() > 0){
+            List<WrkMastSta> wrkMastSta1 = wrkMastStaService.selectBywrkNoHistoricalTasks2(command.getRgvNo(),command.getTaskNo2());
+            if (!Cools.isEmpty(wrkMastSta1)){
+                for (WrkMastSta wrkMastSta :wrkMastSta1){
+                    wrkMastStaService.deleteById(wrkMastSta);
+                }
+
+            }
+        }
+
+
         WrkMastSta wrkMastSta = new WrkMastSta();
         wrkMastSta.setWrkNo(Long.valueOf(command.getTaskNo1()));
         wrkMastSta.setWrkNo2(Long.valueOf(command.getTaskNo2()));
@@ -3028,14 +3119,17 @@
         wrkMastSta.setUpdateTime(now);
         wrkMastSta.setWrkCrn(command.getRgvNo());
         wrkMastSta.setWrkType(command.getTaskMode().intValue());
-        wrkMastSta.setMatnr1(command.getMatnr().intValue());
-        wrkMastSta.setMatnr2(command.getMatnr2().intValue());
+        wrkMastSta.setMatnr1(command.getMatnr());
+        wrkMastSta.setMatnr2(command.getMatnr2());
         wrkMastSta.setType(command.getType().intValue());
         wrkMastSta.setType2(command.getType2().intValue());
         wrkMastSta.setBatch(command.getBatch());
         wrkMastSta.setBatch2(command.getBatch2());
         wrkMastSta.setAnfme(command.getAnfme().intValue());
         wrkMastSta.setAnfme2(command.getAnfme2().intValue());
+        wrkMastSta.setWeight(command.getWeight());
+        wrkMastSta.setWeight2(command.getWeight2());
+
         return wrkMastStaService.insert(wrkMastSta);
     }
 
@@ -3105,14 +3199,26 @@
                         }
                     }
 //                     鑾峰彇鍏ュ簱閫氱煡妗�
-                    List<WaitPakin> waitPakins = waitPakinMapper.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode).eq("io_status", "N"));
-                    if (waitPakins.isEmpty()) {
+                    WaitPakin waitPakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("zpallet", barcode).eq("io_status", "N"));
+                    if (Cools.isEmpty(waitPakin)) {
                         try {
-                            CreateComb(barcode,staProtocol.getMatnr().intValue(),staProtocol.getWorkNo().intValue());
+                            CreateComb(barcode, staProtocol.getMatnr(),staProtocol.getWorkNo().intValue(),staProtocol.getBatch());
                         }catch (IOException e) {
                             throw new CoolException(e);
                         }
-                    }else {
+                    } else if (waitPakin.getWeight() == null) {
+                        WrkMastSta wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>().eq("wrk_no", staProtocol.getWorkNo().intValue()));
+                        if (Cools.isEmpty(wrkMastSta)){
+                            wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>().eq("wrk_no2", staProtocol.getWorkNo().intValue()));
+                            if (Cools.isEmpty(wrkMastSta)){
+                                throw new  CoolException("鏈壘鍒板搴旂殑浠诲姟淇℃伅");
+                            }
+                            waitPakin.setWeight(wrkMastSta.getWeight2());
+                        }else {
+                            waitPakin.setWeight(wrkMastSta.getWeight());
+                        }
+                        waitPakinService.update(waitPakin,new EntityWrapper<WaitPakin>().eq("zpallet", barcode).eq("io_status", "N"));
+                    } else {
                         try {
                             LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
                             SearchLocParam param = new SearchLocParam();
@@ -3166,23 +3272,30 @@
 
     }
 
-    public void CreateComb(String barcode,Integer code,Integer wrkNo) throws IOException {
-        String batch = "";
-        Double anfme = 0D;
+    public void CreateComb(String barcode,Integer code,Integer wrkNo,String batch) throws IOException {
+        Double anfme = 0d;
+        Double weight = 0d;
 
         WrkMastSta wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>().eq("wrk_no", wrkNo));
         if (Cools.isEmpty(wrkMastSta)){
             wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>().eq("wrk_no2", wrkNo));
             if (Cools.isEmpty(wrkMastSta)){
-                throw new  CoolException("鏈壘鍒板搴旂殑浠诲姟淇℃伅");
+                if (code >0 && !Cools.isEmpty(batch)){
+                    anfme = 1d;
+                }else {
+                    throw new  CoolException("鏈壘鍒板搴旂殑浠诲姟淇℃伅");
+                }
+            }else {
+                batch = wrkMastSta.getBatch2();
+                anfme = wrkMastSta.getAnfme2().doubleValue();
+                code = wrkMastSta.getMatnr2();
+                weight = wrkMastSta.getWeight2();
             }
-            batch = wrkMastSta.getBatch2();
-            anfme = wrkMastSta.getAnfme2().doubleValue();
-            code = wrkMastSta.getMatnr2();
         }else {
             batch = wrkMastSta.getBatch();
             anfme = wrkMastSta.getAnfme().doubleValue();
             code = wrkMastSta.getMatnr1();
+            weight = wrkMastSta.getWeight();
         }
         MatnrCode matnrCode = matnrCodeService.selectByCode(code);
         if (Cools.isEmpty(matnrCode)){
@@ -3208,6 +3321,8 @@
         JSONObject jsonObject = JSON.parseObject(response);
         if (jsonObject.getInteger("code").equals(200)) {
 
+        }else {
+            log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/mobile/comb/auth", JSON.toJSONString(combParam), response);
         }
     }
 

--
Gitblit v1.9.1