From aa8638651f5f488ccc714a6e73e5b351bdfbde2e Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期一, 27 十月 2025 17:57:51 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/core/model/DevpSlave.java              |    4 +
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  175 ++++++++++++++++++++++++++++++++++++++++++-
 src/main/java/com/zy/asrs/entity/WrkMast.java               |    7 +
 src/main/resources/mapper/WrkMastMapper.xml                 |    1 
 src/main/java/com/zy/core/MainProcess.java                  |    4 +
 src/main/java/com/zy/asrs/entity/BasAgvMast.java            |   16 +++
 6 files changed, 201 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/zy/asrs/entity/BasAgvMast.java b/src/main/java/com/zy/asrs/entity/BasAgvMast.java
index a31a216..3d04eff 100644
--- a/src/main/java/com/zy/asrs/entity/BasAgvMast.java
+++ b/src/main/java/com/zy/asrs/entity/BasAgvMast.java
@@ -5,6 +5,8 @@
 import com.baomidou.mybatisplus.annotations.TableField;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+
+import com.core.common.SnowflakeIdWorker;
 import org.springframework.format.annotation.DateTimeFormat;
 import java.text.SimpleDateFormat;
 import java.util.Date;
@@ -29,7 +31,7 @@
      * ID
      */
     @ApiModelProperty(value= "ID")
-    @TableId(value = "task_no", type = IdType.AUTO)
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     /**
@@ -138,7 +140,17 @@
     @TableField("io_type")
     private Integer ioType;
 
-    public BasAgvMast() {}
+    public BasAgvMast() {
+        SnowflakeIdWorker snowflakeIdWorker = SpringUtils.getBean(SnowflakeIdWorker.class);
+        this.timestamp = snowflakeIdWorker.nextId();
+
+        this.priority = 1L;
+        this.status = 0;
+
+        Date now = new Date();
+        this.appeTime = now;
+        this.modiTime = now;
+    }
 
     public BasAgvMast(Integer taskNo,Long timestamp,Integer sourceStaNo,Integer staNo,String sourceLocNo,String locNo,Long priority,Integer floorNo,Integer status,Date errorTime,String errorMemo,Date appeTime,Date modiTime,String modiUser) {
         this.taskNo = taskNo;
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index e896efc..fb5927a 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -308,6 +308,13 @@
     @TableField("full_plt")
     private String fullPlt;
 
+    /**
+     * 绌烘搷浣� / 鍙栬揣鏃犵   //鍜屽緱  AGV浠诲姟鐢熸垚鏍囪
+     */
+    @ApiModelProperty(value= "AGV浠诲姟鐢熸垚鏍囪")
+    @TableField("take_none")
+    private String takeNone;
+
     public String getWrkSts$(){
         BasWrkStatusMapper mapper = SpringUtils.getBean(BasWrkStatusMapper.class);
         BasWrkStatus entity = mapper.selectById(this.wrkSts);
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 59c4749..abf6c0a 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -4,9 +4,7 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.core.common.Cools;
-import com.core.common.DateUtils;
-import com.core.common.R;
+import com.core.common.*;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.AgvTaskAssignmentParam;
@@ -4591,6 +4589,173 @@
                 response, bool);
     }
 
+    /*
+     * agv浠诲姟鐢熸垚  Full
+     * */
+    public synchronized void agvTaskCreateFull() {
+        // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+        for (DevpSlave devp : slaveProperties.getDevp()) {
+            // 閬嶅巻鍑哄簱鍙�
+            for (DevpSlave.Sta outStaAgv : devp.getOutStaAgvFull())  {
+                // 鑾峰彇鍏ュ簱绔欎俊鎭�
+                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                StaProtocol staProtocol = devpThread.getStation().get(outStaAgv.getStaNo());
+                if (staProtocol == null) {
+                    continue;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
+
+                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+                if (!staProtocol.isLoading()){
+                    continue;
+                }
+                if (staProtocol.isAutoing() ) {
+                    WrkMast wrkMast = wrkMastService.selectByWrkNo(staProtocol.getWorkNo());
+                    if (Cools.isEmpty(wrkMast) || Cools.isEmpty(wrkMast.getTakeNone()) || !wrkMast.getTakeNone().equals("1")){
+                        continue;
+                    }
+
+                    // 鍒ゆ柇閲嶅宸ヤ綔妗�
+                    List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("task_no", staProtocol.getWorkNo()));
+                    if (!basAgvMastList.isEmpty()) {
+                        wrkMast.setTakeNone("2");
+                        wrkMastMapper.updateById(wrkMast);
+                        continue;
+                    }
+
+                    // 浠诲姟鐢熸垚鍖� --------------------------------------------------------------------------
+
+                    BasAgvMast basAgvMast = new BasAgvMast();
+
+
+                    try {
+                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
+
+                        SearchLocParam param = new SearchLocParam();
+                        param.setBarcode(wrkMast.getBarcode());
+                        param.setIoType(1);
+                        param.setSourceStaNo(outStaAgv.getStaNo());
+                        param.setLocType1(locTypeDto.getLocType1());
+                        String response = new HttpHandler.Builder()
+                                .setUri(wmsUrl)
+                                .setPath("/rpc/pakin/agv/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);
+
+                            basAgvMast.setTaskNo(wrkMast.getWrkNo());
+                            basAgvMast.setSourceStaNo(outStaAgv.getStaNo());
+                            basAgvMast.setLocNo(dto.getLocNo());
+                            basAgvMast.setDevpId(devp.getId());
+                            basAgvMast.setIoType(2);
+
+                            basAgvMastService.insert(basAgvMast);
+
+
+                            wrkMast.setTakeNone("2");
+                            wrkMastMapper.updateById(wrkMast);
+                        } else {
+                            News.error(JSON.toJSONString(staProtocol));
+                        }
+                    } catch (Exception e) {
+                        News.error(JSON.toJSONString(e.getMessage()));
+                    }
+                }
+            }
+        }
+    }
+
+    /*
+     * agv浠诲姟鐢熸垚  Empty
+     * */
+    public synchronized void agvTaskCreateEmpty() {
+        // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+        for (DevpSlave devp : slaveProperties.getDevp()) {
+            // 閬嶅巻鍑哄簱鍙�
+            for (DevpSlave.Sta outStaAgv : devp.getOutStaAgvEmpty())  {
+                // 鑾峰彇鍏ュ簱绔欎俊鎭�
+                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                StaProtocol staProtocol = devpThread.getStation().get(outStaAgv.getStaNo());
+                if (staProtocol == null) {
+                    continue;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
+
+                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+                if (!staProtocol.isLoading()){
+                    continue;
+                }
+
+                String barcode = staProtocol.getBarcode();
+                if(!Cools.isEmpty(barcode)) {
+                    if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+                        News.info("{}鍙风珯鐐规壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", outStaAgv.getStaNo(), barcode);
+                        continue;
+                    }
+                } else {
+                    News.info("{}鍙风珯鐐规壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", outStaAgv.getStaNo(), barcode);
+                    continue;
+                }
+                if (staProtocol.isAutoing()) {
+
+                    // 鍒ゆ柇閲嶅宸ヤ綔妗�
+                    List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("source_sta_no", outStaAgv.getStaNo()));
+                    if (!basAgvMastList.isEmpty()) {
+                        News.info("{}鍙风珯鐐瑰瓨鍦ㄤ换鍔℃墽琛屼腑锛岃绛夊緟浠诲姟鎵ц瀹屾瘯锛歿}", outStaAgv.getStaNo(), barcode);
+                        continue;
+                    }
+
+                    List<LocMast> locMastList = locMastService.selectList(new EntityWrapper<LocMast>().eq("barcode", barcode));
+                    if (!locMastList.isEmpty()) {
+                        News.info("{}鍙风珯鐐规潯鐮佷俊鎭噸澶嶏細{}", outStaAgv.getStaNo(), barcode);
+                        continue;
+                    }
+                    // 浠诲姟鐢熸垚鍖� --------------------------------------------------------------------------
+
+                    BasAgvMast basAgvMast = new BasAgvMast();
+
+
+                    try {
+                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
+
+                        SearchLocParam param = new SearchLocParam();
+                        param.setBarcode(barcode);
+                        param.setIoType(1);
+                        param.setSourceStaNo(outStaAgv.getStaNo());
+                        param.setLocType1(locTypeDto.getLocType1());
+                        String response = new HttpHandler.Builder()
+                                .setUri(wmsUrl)
+                                .setPath("/rpc/pakin/agv/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);
+
+                            basAgvMast.setTaskNo(outStaAgv.getStaNo());
+                            basAgvMast.setSourceStaNo(outStaAgv.getStaNo());
+                            basAgvMast.setLocNo(dto.getLocNo());
+                            basAgvMast.setDevpId(devp.getId());
+                            basAgvMast.setIoType(2);
+
+                            basAgvMastService.insert(basAgvMast);
+                        } else {
+                            News.error(JSON.toJSONString(staProtocol));
+                        }
+                    } catch (Exception e) {
+                        News.error(JSON.toJSONString(e.getMessage()));
+                    }
+                }
+            }
+        }
+    }
+
 
     /*
      * agv浠诲姟涓嬪彂:AGV搴撲綅==銆嬭緭閫佺嚎绔欑偣
@@ -4685,7 +4850,9 @@
                         staProtocol = staProtocol.clone();
                     }
 
-                    if (!Cools.isEmpty(staProtocol.getWorkNo()) && staProtocol.getWorkNo().equals(basAgvMast.getTaskNo())){
+                    if ((!Cools.isEmpty(staProtocol.getWorkNo()) && staProtocol.getWorkNo().equals(basAgvMast.getTaskNo()))
+                            ||
+                            (basAgvMast.getSourceStaNo().equals(2033))){
 
                         AgvTaskAssignmentParam agvTaskAssignmentParam = new AgvTaskAssignmentParam(basAgvMast);
 
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 02eb215..96fb0f9 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -198,6 +198,10 @@
                 mainService.agvTaskAssignment2();//0===銆�1  杈撻�佺嚎绔欑偣==銆婣GV搴撲綅  2
                 mainService.agvTaskAssignment3();//0===銆�1  杈撻�佺嚎绔欑偣==銆嬭緭閫佺嚎绔欑偣  3
 
+
+                mainService.agvTaskCreateFull();//浠诲姟鐢熸垚
+                mainService.agvTaskCreateEmpty();//浠诲姟鐢熸垚
+
             } catch (Exception e) {
                 e.printStackTrace();
             }
diff --git a/src/main/java/com/zy/core/model/DevpSlave.java b/src/main/java/com/zy/core/model/DevpSlave.java
index 62e3fe2..0a0e7ca 100644
--- a/src/main/java/com/zy/core/model/DevpSlave.java
+++ b/src/main/java/com/zy/core/model/DevpSlave.java
@@ -29,6 +29,10 @@
 
     private List<Sta> armSta = new ArrayList<>();
 
+    private List<Sta> outStaAgvFull = new ArrayList<>();
+
+    private List<Sta> outStaAgvEmpty = new ArrayList<>();
+
     @Data
     public static class Sta {
 
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 1b90099..78edc77 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -59,6 +59,7 @@
 <!--        <result column="Pdc_type" property="PdcType" />-->
         <result column="ctn_no" property="ctnNo" />
         <result column="full_plt" property="fullPlt" />
+        <result column="take_none" property="takeNone" />
 
     </resultMap>
 

--
Gitblit v1.9.1