From bf8895d798f6308717f83b2bdb413ff5f304b3e4 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期二, 09 九月 2025 16:11:22 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  178 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 178 insertions(+), 0 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 91ab467..f6f1c90 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -8,11 +8,16 @@
 import com.core.common.DateUtils;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.ArmTaskAssignmentParam;
+import com.zy.asrs.entity.param.CombParam;
 import com.zy.asrs.mapper.*;
 import com.zy.asrs.service.*;
+import com.zy.asrs.utils.PostMesDataUtils;
 import com.zy.asrs.utils.RouteUtils;
 import com.zy.asrs.utils.Utils;
 import com.zy.asrs.utils.VersionUtils;
+import com.zy.asrs.utils.core.ReturnT;
+import com.zy.common.constant.ArmConstant;
 import com.zy.common.model.LocTypeDto;
 import com.zy.common.model.MatDto;
 import com.zy.common.model.SearchLocParam;
@@ -93,9 +98,16 @@
     private WrkMastService wrkMastService;
     @Autowired
     private BasRgvMapService basRgvMapService;
+    @Autowired
+    private BasArmService basArmService;
+    @Autowired
+    private BasArmMastService basArmMastService;
 
     @Value("${wms.url}")
     private String wmsUrl;
+
+    @Value("${wms.comb}")
+    private String wmsComb;
     @Value("${inventory.number}")
     private Integer inventoryNumber;
 
@@ -4183,4 +4195,170 @@
         }
     }
 
+
+
+
+    /*
+     * arm浠诲姟瀹屾垚鑷姩缁勬墭
+     * */
+    public synchronized void armMissionAccomplished() {
+        try{
+            for (DevpSlave devp : slaveProperties.getDevp()) {
+                // 閬嶅巻鎷f枡鍏ュ簱鍙�
+                for (DevpSlave.Sta armSta : devp.getArmSta()) {
+                    // 鑾峰彇鏉$爜鎵弿浠俊鎭�
+                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, armSta.getBarcode());
+                    if (barcodeThread == null) {
+                        continue;
+                    }
+                    String barcode = barcodeThread.getBarcode();
+                    if(!Cools.isEmpty(barcode)) {
+                        if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+                            continue;
+                        }
+                    } else {
+                        continue;
+                    }
+
+                    List<BasArm> basArmList = basArmService.selectList(new EntityWrapper<BasArm>()
+                            .eq("arm_no", armSta.getArmNo())
+                            .eq("sta_no", armSta.getStaNo())
+                            .eq("status", 1));
+                    for (BasArm basArm : basArmList) {
+                        if (basArm.getStatus()!=1){
+                            continue;
+                        }
+                        try{
+                            List<BasArmMast> basArmMastList = basArmMastService.selectList(
+                                    new EntityWrapper<BasArmMast>()
+                                            .eq("arm_no", basArm.getArmNo())
+                                            .eq("sorting_line", basArm.getSortingLine())
+                                            .eq("status", 3)
+                            );
+                            if (basArmMastList.isEmpty()){
+                                continue;
+                            }
+                            CombParam combParam = new CombParam(basArmMastList);
+                            combParam.setBarcode(barcode);
+                            //璁剧疆宸ヤ綔绌洪棿灏辩华
+                            ReturnT<String> result = new PostMesDataUtils().postMesData("arm浠诲姟瀹屾垚鑷姩缁勬墭",wmsUrl, wmsComb, combParam);
+                            if (result.getCode()==200){
+                                basArmMastService.updateArmMastStatus(basArm.getArmNo(),basArm.getSortingLine(),3,4);
+                            } else {
+                                log.error("鏈烘鑷傛姄鍙栦换鍔″畬鎴愶細"+JSON.toJSON(basArmMastList)+"===銆嬭嚜鍔ㄧ粍鎵樺け璐ワ紝绛夊緟閲嶈瘯");
+                            }
+                        }  catch (Exception e){
+                            log.error("arm缂栧彿锛�"+basArm.getArmNo()+"====銆嬫満姊拌噦鎶撳彇浠诲姟瀹屾垚"+e.getMessage());
+                        }
+                        break;
+                    }
+                }
+            }
+        } catch (Exception e){
+            log.error("鏈烘鑷傛姄鍙栦换鍔″畬鎴愮粍鎵樺け璐�"+e.getMessage());
+        }
+    }
+    public synchronized void armMissionAccomplishedScanToCheckIn() {
+        try{
+            for (DevpSlave devp : slaveProperties.getDevp()) {
+                // 閬嶅巻鎷f枡鍏ュ簱鍙�
+                for (DevpSlave.Sta armSta : devp.getArmSta()) {
+
+                    List<BasArmMast> basArmMastList = basArmMastService.selectList(
+                            new EntityWrapper<BasArmMast>()
+                                    .eq("arm_no", armSta.getArmNo())
+                                    .eq("sta_no", armSta.getStaNo())
+                                    .eq("status", 4)
+                    );
+
+                    if (basArmMastList.isEmpty()){
+                        continue;
+                    }
+                    // 鑾峰彇绔欑偣淇℃伅
+                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                    StaProtocol staProtocol = devpThread.getStation().get(armSta.getStaNo());
+                    if (staProtocol == null) {
+                        continue;
+                    } else {
+                        staProtocol = staProtocol.clone();
+                    }
+
+                    if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) {
+                        int workNo = commonService.getWorkNo(6);//寰呭畬鍠�
+                        // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
+                        staProtocol.setWorkNo(workNo);
+                        staProtocol.setStaNo(armSta.getStaNoEnd().shortValue());
+                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                        log.error("杈撻�佺嚎涓嬪彂5锛�"+workNo+","+armSta.getStaNoEnd());
+                        if (!result) {
+                            News.error(""+" - 3"+" - 鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+                        }
+                        basArmMastService.updateArmMastStatus(basArmMastList.get(0).getArmNo(),basArmMastList.get(0).getSortingLine(),4,5);
+                    }
+                }
+            }
+        } catch (Exception e){
+            log.error("缁勬墭瀹屾垚椹卞姩鎵樼洏鎵爜鍏ュ簱澶辫触"+e.getMessage());
+        }
+    }
+
+    /*
+     * arm浠诲姟涓嬪彂
+     * */
+    public synchronized void armTaskAssignment() {
+        try{
+            List<BasArm> basArmList = basArmService.selectList(new EntityWrapper<>());
+            for (BasArm basArm : basArmList) {
+                if (basArm.getStatus()!=1){
+                    continue;
+                }
+                try{
+                    List<BasArmMast> basArmMastListRuning = basArmMastService.selectList(
+                            new EntityWrapper<BasArmMast>()
+                                    .eq("arm_no", basArm.getArmNo())
+                                    .eq("sorting_line", basArm.getSortingLine())
+                                    .eq("status", 1)
+                    );
+                    List<BasArmMast> basArmMastListRuning3 = basArmMastService.selectList(
+                            new EntityWrapper<BasArmMast>()
+                                    .eq("arm_no", basArm.getArmNo())
+                                    .eq("sorting_line", basArm.getSortingLine())
+                                    .eq("status", 3)
+                    );
+                    if (basArmMastListRuning.isEmpty() && basArmMastListRuning3.isEmpty()){
+                        List<BasArmMast> basArmMastList = basArmMastService.selectList(
+                                new EntityWrapper<BasArmMast>()
+                                        .eq("arm_no", basArm.getArmNo())
+                                        .eq("sorting_line", basArm.getSortingLine())
+                                        .eq("status", 0)
+                        );
+                        if (basArmMastList.isEmpty()){
+                            continue;
+                        }
+                        if (basArmMastList.size()>1){
+                            log.error("arm缂栧彿锛�"+basArm.getArmNo()+"====銆嬫媶鐮佸灈浠诲姟寮傚父绂佹涓嬪彂锛侊紒锛佷换鍔″緟鎵ц鏁伴噺澶т簬1锛侊紒锛�");
+                            continue;
+                        }
+                        for (BasArmMast basArmMast:basArmMastList) {
+                            ArmTaskAssignmentParam armTaskAssignmentParam = new ArmTaskAssignmentParam(basArmMast.getSortingLine());
+                            //璁剧疆宸ヤ綔绌洪棿灏辩华
+                            ReturnT<String> result = new PostMesDataUtils().postMesData("鏈烘鑷傛姄鍙栦换鍔′笅鍙戯細閫氱煡宸ヤ綔绌洪棿宸插氨缁�",ArmConstant.ARM_URL, ArmConstant.ARM_WORKSPACE, armTaskAssignmentParam);
+                            if (result.getCode()==200){
+                                basArmMast.setStatus(1);
+                                basArmMastService.updateById(basArmMast);
+                            } else {
+                                log.error("鏈烘鑷傛姄鍙栦换鍔★細"+JSON.toJSON(basArmMast)+"===銆嬩换鍔′俊鎭笅鍙戝け璐�");
+                            }
+                        }
+                    }
+                }  catch (Exception e){
+                    log.error("arm缂栧彿锛�"+basArm.getArmNo()+"====銆嬫媶鐮佸灈浠诲姟涓嬪彂澶辫触"+e.getMessage());
+                }
+            }
+        }catch (Exception e){
+            log.error("arm浠诲姟涓嬪彂澶辫触"+e.getMessage());
+        }
+    }
+
 }

--
Gitblit v1.9.1