From fcf47692a8115c53855e5f7a593238306cd59e69 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期四, 25 十二月 2025 14:40:24 +0800
Subject: [PATCH] 1.新增拍照 2.初始化

---
 src/main/resources/mapper/WrkMastLogMapper.xml              |    1 
 src/main/java/com/zy/asrs/utils/VersionUtils.java           |    2 
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   71 +++++++++++++++--
 src/main/resources/mapper/LocMastMapper.xml                 |    2 
 src/main/java/com/zy/asrs/entity/WrkMast.java               |    3 
 src/main/resources/mapper/WrkMastMapper.xml                 |    1 
 src/main/java/com/zy/asrs/entity/WrkMastLog.java            |    3 
 src/main/java/com/zy/core/model/command/CrnCommand.java     |    9 +-
 src/main/java/com/zy/core/model/protocol/CrnProtocol.java   |    5 +
 src/main/java/com/zy/asrs/utils/Utils.java                  |    2 
 src/main/java/com/zy/common/utils/HikUtils.java             |   39 +++++++++
 src/main/java/com/zy/asrs/entity/LocMast.java               |    3 
 src/main/resources/application.yml                          |   87 ++++++++++++++++++---
 13 files changed, 198 insertions(+), 30 deletions(-)

diff --git a/src/main/java/com/zy/asrs/entity/LocMast.java b/src/main/java/com/zy/asrs/entity/LocMast.java
index cd931b9..6a2dbed 100644
--- a/src/main/java/com/zy/asrs/entity/LocMast.java
+++ b/src/main/java/com/zy/asrs/entity/LocMast.java
@@ -29,6 +29,9 @@
     @TableField("loc_no")
     private String locNo;
 
+    @ApiModelProperty(value= "鎷嶇収鍥剧墖")
+    private String pic;
+
     /**
      * 搴撲綅绫诲瀷
      */
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index b3c42fe..87a11a0 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -313,6 +313,9 @@
     @TableField("full_plt")
     private String fullPlt;
 
+    @ApiModelProperty(value= "鎷嶇収鍥剧墖")
+    private String pic;
+
     public String getWrkSts$(){
         BasWrkStatusMapper mapper = SpringUtils.getBean(BasWrkStatusMapper.class);
         BasWrkStatus entity = mapper.selectById(this.wrkSts);
diff --git a/src/main/java/com/zy/asrs/entity/WrkMastLog.java b/src/main/java/com/zy/asrs/entity/WrkMastLog.java
index 3af66ed..1d37309 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMastLog.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMastLog.java
@@ -334,6 +334,9 @@
     @TableField("line_number")
     private Long lineNumber;
 
+    @ApiModelProperty(value= "鎷嶇収鍥剧墖")
+    private String pic;
+
     public WrkMastLog() {}
 
     public WrkMastLog(Integer wrkNo,String invWh,Date ymd,String mk,Integer whsType,Integer wrkSts,Integer ioType,Integer crnNo,String sheetNo,Double ioPri,Date wrkDate,String locNo,Integer staNo,Integer sourceStaNo,String sourceLocNo,String locSts,String picking,String linkMis,String onlineYn,String updMk,String exitMk,Integer pltType,String emptyMk,Date ioTime,Integer ctnType,String packed,String oveMk,Double mtnType,String userNo,Date crnStrTime,Date crnEndTime,Date plcStrTime,Date crnPosTime,Double loadTime,Double expTime,Double refWrkno,Date refIotime,Long modiUser,Date modiTime,Long appeUser,Date appeTime,String pauseMk,Date errorTime,String errorMemo,Integer ctnKind,String manuType,String memoM,Double scWeight,String logMk,Date logErrTime,String logErrMemo,String barcode,String PdcType,String ctnNo,String fullPlt,String preHave,String takeNone,Long lineNumber) {
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 42853a9..7288c3c 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -20,10 +20,7 @@
 import com.zy.common.model.SearchLocParam;
 import com.zy.common.model.StartupDto;
 import com.zy.common.service.CommonService;
-import com.zy.common.utils.CollectionUtils;
-import com.zy.common.utils.HttpHandler;
-import com.zy.common.utils.News;
-import com.zy.common.utils.RedisUtil;
+import com.zy.common.utils.*;
 import com.zy.core.CrnThread;
 import com.zy.core.DevpThread;
 import com.zy.core.cache.MessageQueue;
@@ -50,6 +47,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -100,6 +98,9 @@
 
     @Value("${wms.url}")
     private String wmsUrl;
+
+    @Autowired
+    private HikUtils hikUtils;
 
     /**
      * 缁勬墭
@@ -708,7 +709,7 @@
                 CrnProtocol crnProtocol = crnThread.getCrnProtocol();
 
                 if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast.getWrkNo().shortValue())
-                        && (crnProtocol.statusType == CrnStatusType.PUTTING || crnProtocol.statusType == CrnStatusType.WAITING)) {
+                        && crnProtocol.statusType == CrnStatusType.WAITING) {
                     //鏀捐揣涓� 鎴� 绛夊緟纭
                     News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛�");
 
@@ -1045,6 +1046,35 @@
                     }
                 }
             }
+            String ip = "";
+            if (wrkMast.getStaNo()==401){
+                ip = "172.26.4.231";
+            }else if (wrkMast.getStaNo()==402){
+                ip = "172.26.4.232";
+            }else if (wrkMast.getStaNo()==307){
+                ip = "172.26.1.231";
+            }else if (wrkMast.getStaNo()==303){
+                ip = "172.26.1.232";
+            }else if (wrkMast.getStaNo()==304){
+                ip = "172.26.1.233";
+            }
+            SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
+            String newName = sf.format(new Date()) + "_" + locMast.getLocNo();
+            String pic = wrkMast.getPic();
+            List<String> list = null;
+            if (Cools.isEmpty(pic)) {
+                list = new ArrayList<>();
+            } else {
+                list = JSON.parseArray(pic, String.class);
+            }
+            list.add(newName);
+            //鍏ュ簱鍓嶆姄鎷�
+            try {
+                hikUtils.startPic(ip, newName + ".jpg");
+            } catch (Exception e) {
+                log.error("鍏ュ簱鍓嶆姄鎷�");
+            }
+
 
             // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
             CrnCommand crnCommand = new CrnCommand();
@@ -1083,6 +1113,7 @@
                 News.info("787 淇敼宸ヤ綔妗g姸鎬�2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� " + wrkMast);
                 Date now = new Date();
                 wrkMast.setWrkSts(3L);
+                wrkMast.setPic(JSON.toJSONString(list));
                 wrkMast.setCrnStrTime(now);
                 wrkMast.setModiTime(now);
                 if (wrkMastMapper.updateById(wrkMast) == 0) {
@@ -1144,7 +1175,7 @@
                     continue;
                 }
                 //鍫嗗灈鏈烘帴椹崇珯鐐规病鏈夌┖鏂欐灦
-                if(!staProtocol.isEmptyOutType()&&(Cools.isEmpty(wrkMast.getCtnType())||wrkMast.getCtnType()==0)){
+                if(staProtocol.getSiteId()==307&&!staProtocol.isEmptyOutType()&&(Cools.isEmpty(wrkMast.getCtnType())||wrkMast.getCtnType()==0)){
                     //璇锋眰wms涓嬪彂agv鎼繍绌烘枡鏋跺埌鍫嗗灈鏈烘帴椹崇珯鐐逛换鍔�
                     try {
                         HashMap<String,Object> hashMap=new HashMap<>();
@@ -1167,10 +1198,15 @@
                         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                     }
                 }
+                Boolean config = true;
+
+                if (staProtocol.getSiteId()==307 && !staProtocol.isEmptyOutType()){
+                    config = false;
+                }
 
                 // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
                 if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
-                        && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable() && staProtocol.isEmptyOutType()) {
+                        && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable() && config) {
                     // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
 
                     // 鍫嗗灈鏈烘帶鍒惰繃婊�
@@ -1252,6 +1288,16 @@
                         }
                         break;
                     }
+                }else if ((staProtocol.getSiteId()==304 || staProtocol.getSiteId()==301) && staProtocol.isAutoing()
+                        && (staProtocol.isLoading() || staProtocol.getWorkNo() != 0)) {
+                    if (staProtocol.getSiteId() == 304){
+                        wrkMast.setSourceStaNo(301);
+
+                    }else {
+                        wrkMast.setSourceStaNo(304);
+                    }
+                    wrkMast.setModiTime(new  Date());
+                    wrkMastMapper.updateById(wrkMast);
                 }
 
             }
@@ -1760,7 +1806,7 @@
                 if (staProtocol.isAutoing()
                         && staProtocol.isInEnable()
                         && staProtocol.isEmptyMk()
-                        && (staProtocol.getWorkNo() > 9990 && staProtocol.getWorkNo() <= 9999)
+                        && (staProtocol.getWorkNo() ==0)
                         && staProtocol.isPakMk()
 //                        && staProtocol.getEmptyInType() == 1
                 ) {
@@ -1785,6 +1831,11 @@
                             String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
                             MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(5, errorMsg));
                         }
+                        continue;
+                    }
+                    WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", barcode));
+                    WaitPakin waitPakin = waitPakinMapper.selectOne(new EntityWrapper<WaitPakin>().eq("zpallet", barcode).getEntity());
+                    if (waitPakin != null || wrkMast != null) {
                         continue;
                     }
 
@@ -2393,7 +2444,7 @@
             wrkMast.setCrnNo(crn.getId());
             wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣�
             wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
-            wrkMast.setFullPlt(shallowLoc.getFullPlt()); // 婊℃澘
+            wrkMast.setFullPlt(shallowLoc.getLocSts().equals("F") ? "Y" : "N"); // 婊℃澘
             wrkMast.setPicking("N"); // 鎷f枡
             wrkMast.setExitMk("N"); // 閫�鍑�
             wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
@@ -2498,7 +2549,7 @@
                     wrkMast.setCrnNo(crn.getId());
                     wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣�
                     wrkMast.setLocNo(locNo); // 鐩爣搴撲綅
-                    wrkMast.setFullPlt("N"); // 婊℃澘锛歒
+                    wrkMast.setFullPlt(sourceLoc.getLocSts().equals("F")?"Y":"N"); // 婊℃澘锛歒
                     wrkMast.setPicking("N"); // 鎷f枡
                     wrkMast.setExitMk("N"); // 閫�鍑�
                     wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index dba50db..189ec80 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -88,7 +88,7 @@
     public static String getShallowLoc(SlaveProperties slaveProperties, String deepLoc) {
         int row = getRow(deepLoc);
         int shallowRow = row;
-        if (slaveProperties.getDoubleLocsLeft().contains(row)) {
+        if (slaveProperties.getDoubleLocsRight().contains(row)) {
             shallowRow = (row + 1);
         }else {
             shallowRow = (row - 1);
diff --git a/src/main/java/com/zy/asrs/utils/VersionUtils.java b/src/main/java/com/zy/asrs/utils/VersionUtils.java
index 5647ef4..806625b 100644
--- a/src/main/java/com/zy/asrs/utils/VersionUtils.java
+++ b/src/main/java/com/zy/asrs/utils/VersionUtils.java
@@ -39,4 +39,6 @@
         wrkDetl.setZpallet(locDetl.getZpallet()); // 鎵樼洏鏉$爜
         wrkDetl.setAnfme(locDetl.getAnfme());//鏁伴噺
     }
+
+
 }
diff --git a/src/main/java/com/zy/common/utils/HikUtils.java b/src/main/java/com/zy/common/utils/HikUtils.java
new file mode 100644
index 0000000..b8f5e4d
--- /dev/null
+++ b/src/main/java/com/zy/common/utils/HikUtils.java
@@ -0,0 +1,39 @@
+package com.zy.common.utils;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+
+@Component
+public class HikUtils {
+
+    @Value("${zyHikUrl}")
+    private String hikUrl;
+
+    public void startPic(String ip, String filename) {
+        try {
+            HashMap<String, Object> data = new HashMap<>();
+            data.put("ip", ip);
+            data.put("filename", filename);
+
+            String response = new HttpHandler.Builder()
+                    .setUri(hikUrl)
+                    .setPath("/startPic")
+                    .setJson(JSON.toJSONString(data))
+                    .build()
+                    .doPost();
+            JSONObject jsonObject = JSON.parseObject(response);
+            if (jsonObject.getInteger("code").equals(200)) {
+                News.error("璇锋眰鎺ュ彛鎴愬姛锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", hikUrl + "/startPic", JSON.toJSONString(data), response);
+            } else {
+                News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", hikUrl + "/startPic", JSON.toJSONString(data), response);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+}
diff --git a/src/main/java/com/zy/core/model/command/CrnCommand.java b/src/main/java/com/zy/core/model/command/CrnCommand.java
index 8c9c1c4..864d28d 100644
--- a/src/main/java/com/zy/core/model/command/CrnCommand.java
+++ b/src/main/java/com/zy/core/model/command/CrnCommand.java
@@ -38,6 +38,11 @@
      */
     private Short taskMode = 0;
 
+    private String barcode= "";
+
+    //鐏: 1鏄伀璀�
+    private short fireStaut = 0;
+
     @JSONField(serialize = false)
     private CrnTaskModeType taskModeType;
 
@@ -74,10 +79,6 @@
     // 浠诲姟纭 0锛氭湭纭 1锛氬凡纭
     private Short command = 0;
 
-    private String barcode= "";
-
-    //鐏: 1鏄伀璀�
-    private short fireStaut = 0;
 
     public void setTaskMode(Short taskMode){
         this.taskMode = taskMode;
diff --git a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
index c28c09b..ca7375e 100644
--- a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
@@ -54,6 +54,11 @@
      */
     public Short status;
 
+    private String barcode= "";
+
+    //鐏: 1鏄伀璀�
+    private short fireStaut = 0;
+
     /**
      * 鐘舵�佹灇涓�
      */
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 0ebc589..cf5a1e7 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -36,6 +36,8 @@
 wms:
   url: 127.0.0.1:8083/ljqwms
 
+zyHikUrl: 10.10.10.200:9091/hik
+
 # 涓嬩綅鏈洪厤缃�
 wcs-slave:
   # 鍙屾繁
@@ -45,7 +47,7 @@
   # 宸︽繁搴撲綅鎺掑彿
 #  doubleLocsLeft: 4,7,11,15,19,23
   # 鍙虫繁搴撲綅鎺掑彿
-  doubleLocsRight: 3
+  doubleLocsRight: 1
   # 宸︽祬搴撲綅鎺掑彿
   shallowLocsLeft: 1
   # 鍙虫祬搴撲綅鎺掑彿
@@ -76,12 +78,19 @@
       row: 1
       bay: 16
       lev: 1
+    # 鍫嗗灈鏈哄叆搴撶珯鐐�
+    crnInStn[2]:
+      devpPlcId: ${wcs-slave.devp[0].id}
+      staNo: 304
+      row: 3
+      bay: 1
+      lev: 1
     # 鍫嗗灈鏈哄嚭搴撶珯鐐�
     crnOutStn[0]:
       devpPlcId: ${wcs-slave.devp[0].id}
       staNo: 304
-      row: 1
-      bay: 2
+      row: 3
+      bay: 1
       lev: 1
     # 鍫嗗灈鏈哄嚭搴撶珯鐐�
     crnOutStn[1]:
@@ -89,6 +98,13 @@
       staNo: 307
       row: 1
       bay: 16
+      lev: 1
+    # 鍫嗗灈鏈哄嚭搴撶珯鐐�
+    crnOutStn[2]:
+      devpPlcId: ${wcs-slave.devp[0].id}
+      staNo: 301
+      row: 2
+      bay: 1
       lev: 1
   # 杈撻�佺嚎1
   devp[0]:
@@ -99,32 +115,70 @@
     slot: 0
     # 鍏ュ簱鍙�1
     inSta[0]:
-      staNo: 302
+      staNo: 301
       barcode: ${wcs-slave.barcode[0].id}
-      backSta: 303
+      backSta: 302
       led: ${wcs-slave.led[0].id}
     # 鍏ュ簱鍙�2
-#    inSta[1]:
-#      staNo: 1076
-#      barcode: ${wcs-slave.barcode[1].id}
-#      backSta: 1075
-#      led: ${wcs-slave.led[1].id}
+    inSta[1]:
+      staNo: 304
+      barcode: ${wcs-slave.barcode[1].id}
+      backSta: 305
+      led: ${wcs-slave.led[1].id}
+    # 鍏ュ簱鍙�3
+    inSta[2]:
+      staNo: 307
+      barcode: ${wcs-slave.barcode[2].id}
+      backSta: 307
+      led: ${wcs-slave.led[2].id}
     # 绌烘澘鍏ュ簱鍙�1
     emptyInSta[0]:
-      staNo: 302
+      staNo: 301
       barcode: ${wcs-slave.barcode[0].id}
-      backSta: 303
+      backSta: 302
       led: ${wcs-slave.led[0].id}
+    # 绌烘澘鍏ュ簱鍙�1
+    emptyInSta[1]:
+      staNo: 304
+      barcode: ${wcs-slave.barcode[1].id}
+      backSta: 305
+      led: ${wcs-slave.led[1].id}
+    # 绌烘澘鍏ュ簱鍙�1
+    emptyInSta[2]:
+      staNo: 307
+      barcode: ${wcs-slave.barcode[2].id}
+      backSta: 307
+      led: ${wcs-slave.led[2].id}
     # 鎷f枡鍏ュ簱鍙�1
     pickSta[0]:
-      staNo: 302
+      staNo: 301
       barcode: ${wcs-slave.barcode[0].id}
-      backSta: 303
+      backSta: 302
       led: ${wcs-slave.led[0].id}
+    # 鎷f枡鍏ュ簱鍙�1
+    pickSta[1]:
+      staNo: 304
+      barcode: ${wcs-slave.barcode[1].id}
+      backSta: 305
+      led: ${wcs-slave.led[1].id}
+    # 鎷f枡鍏ュ簱鍙�1
+    pickSta[2]:
+      staNo: 307
+      barcode: ${wcs-slave.barcode[2].id}
+      backSta: 307
+      led: ${wcs-slave.led[2].id}
     # 鍑哄簱鍙�1
     outSta[0]:
+      staNo: 303
+      led: ${wcs-slave.led[0].id}
+    # 鍑哄簱鍙�1
+    outSta[1]:
       staNo: 306
       led: ${wcs-slave.led[1].id}
+    # 鍑哄簱鍙�1
+    outSta[2]:
+      staNo: 307
+      led: ${wcs-slave.led[2].id}
 #  # 杈撻�佺嚎2
 #  devp[1]:
 #    id: 2
@@ -160,6 +214,11 @@
     id: 2
     ip: 10.10.10.121
     port: 51236
+  # 鏉$爜鎵弿浠�2
+  barcode[2]:
+    id: 3
+    ip: 10.10.10.121
+    port: 51236
 #  # 鏉$爜鎵弿浠�3
 #  barcode[2]:
 #    id: 3
diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml
index 7821af2..d72d8d4 100644
--- a/src/main/resources/mapper/LocMastMapper.xml
+++ b/src/main/resources/mapper/LocMastMapper.xml
@@ -34,7 +34,7 @@
         <result column="mk" property="mk" />
         <result column="barcode" property="barcode" />
         <result column="ctn_no" property="ctnNo" />
-
+        <result column="pic" property="pic" />
     </resultMap>
 
     <select id="queryFreeLocMast" resultMap="BaseResultMap">
diff --git a/src/main/resources/mapper/WrkMastLogMapper.xml b/src/main/resources/mapper/WrkMastLogMapper.xml
index 1457aea..34a302b 100644
--- a/src/main/resources/mapper/WrkMastLogMapper.xml
+++ b/src/main/resources/mapper/WrkMastLogMapper.xml
@@ -63,6 +63,7 @@
         <result column="pre_have" property="preHave" />
         <result column="take_none" property="takeNone" />
         <result column="line_number" property="lineNumber" />
+        <result column="pic" property="pic" />
 
     </resultMap>
 
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 06982a4..6cb9a59 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="pic" property="pic" />
 
     </resultMap>
 

--
Gitblit v1.9.1