From aa33e56e37cd19b88ae8eea69c5ebc7c6da8b1d2 Mon Sep 17 00:00:00 2001
From: Administrator <pjb>
Date: 星期四, 05 六月 2025 17:59:47 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/glccwcs' into glccwcs

---
 src/main/java/com/zy/asrs/task/TaskReportScheduler.java |  251 +++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 235 insertions(+), 16 deletions(-)

diff --git a/src/main/java/com/zy/asrs/task/TaskReportScheduler.java b/src/main/java/com/zy/asrs/task/TaskReportScheduler.java
index 4e81506..7cffabb 100644
--- a/src/main/java/com/zy/asrs/task/TaskReportScheduler.java
+++ b/src/main/java/com/zy/asrs/task/TaskReportScheduler.java
@@ -4,23 +4,39 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.plugins.Page;
+import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.exception.CoolException;
+import com.zy.asrs.domain.enums.TaskStatusType;
+import com.zy.asrs.domain.enums.WorkNoType;
+import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.TaskWrk;
 import com.zy.asrs.entity.TaskWrkReport;
 import com.zy.asrs.entity.TaskWrkReportLog;
+import com.zy.asrs.entity.param.TaskCreateParam;
 import com.zy.asrs.entity.wms.WmsFeedback;
-import com.zy.asrs.service.ApiLogService;
-import com.zy.asrs.service.TaskWrkReportLogService;
-import com.zy.asrs.service.TaskWrkReportService;
+import com.zy.asrs.mapper.TaskWrkMapper;
+import com.zy.asrs.service.*;
+import com.zy.common.service.CommonService;
 import com.zy.common.utils.HttpHandler;
 import com.zy.common.utils.Synchro;
+import com.zy.core.DevpThread;
+import com.zy.core.cache.MessageQueue;
+import com.zy.core.cache.SlaveConnection;
+import com.zy.core.enums.SlaveType;
+import com.zy.core.model.Task;
+import com.zy.core.model.protocol.StaProtocol;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+import javax.annotation.Resource;
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 瀹氭椂灏嗕换鍔�(瀹屾垚銆佸彇娑�)杞垚鏃ュ織
@@ -45,16 +61,85 @@
     @Value("${wms.taskExecCallback}")
     private String TaskExecCallback;
 
+    @Value("${wms.completeDevpTask}")
+    private String completeDevpTask;
 
-    //@Scheduled(cron = "0/3 * * * * ? ")
-    public void execute() throws IOException {
+    @Resource
+    private TaskWrkMapper taskWrkMapper;
+
+    @Resource
+    private LocMastService locMastService;
+
+    @Resource
+    private CommonService commonService;
+
+    @Resource
+    private OpenService openService;
+
+    // 鐩戝惉澶栫疆杈撻�佺嚎
+    public static final ArrayList<Integer> staNos = new ArrayList<Integer>() {{
+        add(301);add(302);add(303);add(304);add(305);add(306);add(307);add(308);
+    }};
+
+    // WMS鍒嗛厤鍏ュ簱搴撲綅寮傚父涓婃姤
+    @Scheduled(cron = "0/5 * * * * ? ")
+    public synchronized void locationAssignmentExceptionEscalation() {
+        List<TaskWrk> taskWrkList = taskWrkMapper.selectList(new EntityWrapper<TaskWrk>().eq("wrk_sts", 5));
+
+        for(TaskWrk taskWrk : taskWrkList) {
+            Date now = new Date();
+            WmsFeedback wmsFeedback = new WmsFeedback();
+            wmsFeedback.setTaskNo(taskWrk.getTaskNo());
+            wmsFeedback.setIoType(taskWrk.getIoType());
+            wmsFeedback.setBarcode(taskWrk.getBarcode());
+            wmsFeedback.setStatus(-1); // 鍏ュ簱搴撲綅鍒嗛厤寮傚父
+            wmsFeedback.setReportTime(DateUtils.convert(now));
+
+            String response = "";
+            boolean bool = false;
+            try {
+                log.info("鍏ュ簱wms鍒嗛厤搴撲綅鏈夎涓婃姤wms={}", taskWrk);
+                response = new HttpHandler.Builder()
+                        // .setHeaders(headParam)
+                        .setUri(wmsUrl)
+                        .setPath(TaskExecCallback)
+                        .setJson(JSON.toJSONString(wmsFeedback))
+                        .build()
+                        .doPost();
+                if (!Cools.isEmpty(response)) {
+                    JSONObject jsonObject = JSON.parseObject(response);
+                    if (Integer.parseInt(String.valueOf(jsonObject.get("code"))) == 200) {
+                        bool = true;
+                        taskWrk.setWrkSts(6);
+                        taskWrk.setModiTime(now);
+                        taskWrkMapper.updateById(taskWrk);
+                    }
+                }
+
+            } catch (Exception e) {
+                log.error("鍏ュ簱wms鍒嗛厤搴撲綅鏈夎涓婃姤wms澶辫触{},杩斿洖鍊�={}", taskWrk, response);
+            } finally {
+                apiLogService.save("wms鍒嗛厤搴撲綅鏈夎涓婃姤"
+                        , wmsUrl + TaskExecCallback
+                        , null
+                        , "127.0.0.1"
+                        , JSON.toJSONString(wmsFeedback)
+                        , response
+                        , bool
+                );
+            }
+        }
+    }
+
+    @Scheduled(cron = "0/5 * * * * ? ")
+    public synchronized void execute() throws IOException {
         Page<TaskWrkReport> taskWrkReportPage = taskWrkReportService.selectPage(new Page<>(0, 100), new EntityWrapper<TaskWrkReport>().orderBy("create_time", true));
         if (taskWrkReportPage.getRecords() != null) {
             //鏂板涓�涓繃婊ゆ満鍒�
             for (TaskWrkReport taskWrk : taskWrkReportPage.getRecords()) {
                 WmsFeedback wmsFeedback = getWmsFeedback(taskWrk);
                 String response = "";
-                Boolean bool = false;
+                boolean bool = false;
                 try {
                     log.info("wcs鎵嬪姩瀹屾垚浠诲姟涓婃姤wms={}", taskWrk);
                     response = new HttpHandler.Builder()
@@ -64,17 +149,22 @@
                             .setJson(JSON.toJSONString(wmsFeedback))
                             .build()
                             .doPost();
-                    JSONObject jsonObject = JSON.parseObject(response);
-                    TaskWrkReportLog taskWrkLog = new TaskWrkReportLog();
-                    Synchro.Copy(taskWrk, taskWrkLog);
-                    taskWrkLog.setId(null);
-                    if (!taskWrkReportLogService.insert(taskWrkLog)) {
-                        throw new CoolException("杞巻鍙叉。澶辫触" + taskWrkLog);
+                    if (!Cools.isEmpty(response)) {
+                        JSONObject jsonObject = JSON.parseObject(response);
+                        if (Integer.parseInt(String.valueOf(jsonObject.get("code"))) == 200) {
+                            TaskWrkReportLog taskWrkLog = new TaskWrkReportLog();
+                            Synchro.Copy(taskWrk, taskWrkLog);
+                            taskWrkLog.setId(null);
+                            if (!taskWrkReportLogService.insert(taskWrkLog)) {
+                                throw new CoolException("杞巻鍙叉。澶辫触" + taskWrkLog);
+                            }
+                            if (!taskWrkReportService.deleteById(taskWrk)) {
+                                throw new CoolException("浠诲姟妗e垹闄ゅけ璐�" + taskWrkLog);
+                            }
+                            bool = true;
+                        }
                     }
-                    if (!taskWrkReportService.deleteById(taskWrk)) {
-                        throw new CoolException("浠诲姟妗e垹闄ゅけ璐�" + taskWrkLog);
-                    }
-                    bool = true;
+
                 } catch (Exception e) {
                     log.error("wcs鎵嬪姩瀹屾垚浠诲姟涓婃姤wms澶辫触{},杩斿洖鍊�={}", taskWrk, response);
                 } finally {
@@ -92,6 +182,135 @@
 
     }
 
+    // 绔嬩綋搴撹窇搴撶▼搴忥紝鐢熶骇鍕跨敤
+//    @Scheduled(cron = "0/5 * * * * ? ")
+    public synchronized void autoMoveLoc() {
+        int flag = 1; // 1.璺�23鍙峰爢鍨涙満鍓�7鍒楋紝1鍙峰爢鍨涙満1锛�9灞� 2.璺�23鍙峰爢鍨涙満鍚�8-12鍒楋紝1鍙峰爢鍨涙満2-8灞�
+        for(int i = 1; i <= 3; i++ ){
+            // 鑾峰彇鍫嗗灈鏈哄搴斾换鍔�
+            Integer count = taskWrkMapper.selectCount(new EntityWrapper<TaskWrk>().eq("crn_no", i));
+            if (count == 0) {
+                // 鑾峰彇鍫嗗灈鏈哄贩閬撳湪搴撳簱浣�
+                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "F").eq("crn_no", i));
+                if (locMast != null) {
+                    // 50娆″嚭涓�娆″簱
+                    int count1 = locMastService.selectCount(new EntityWrapper<LocMast>().eq("crn_no", i).eq("status", 1));
+                    if (count1 % 25 == 0) {
+                        TaskCreateParam taskCreateParam = new TaskCreateParam();
+                        taskCreateParam.setTaskNo(locMast.getLocNo()+"0");
+                        taskCreateParam.setStartPoint(locMast.getLocNo());
+                        taskCreateParam.setIoType(2);
+                        taskCreateParam.setTaskPriority(11);
+                        taskCreateParam.setBarcode(locMast.getBarcode());
+                        taskCreateParam.setTargetPoint(i == 1 ? "114" : i == 2 ? "111" : "105");
+                        openService.taskCreate(taskCreateParam);
+                        return;
+                    }
+                    // 鑾峰彇涓�涓Щ鍔ㄧ殑鐩爣搴撲綅
+                    LocMast locMast1;
+                    if (flag == 1) {
+                        if (i == 1) {
+                            locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no", i).eq("status", "0")
+                                    .eq("loc_sts","O").orderBy("lev1").orderBy("bay1").orderBy("row1"));
+                        } else if(i==2) {
+                            locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no", i).eq("status", "0")
+                                    .eq("loc_sts","O").orderBy("lev1").orderBy("bay1").orderBy("row1").gt("bay1",7));
+                        }else {
+                            locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no", i).eq("status", "0")
+                                    .eq("loc_sts","O").orderBy("lev1").orderBy("bay1").orderBy("row1").gt("bay1",7));
+                        }
+
+                    } else {
+                        if (i == 1) {
+                            locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no", i).eq("status", "0")
+                                    .eq("loc_sts","O").orderBy("lev1").orderBy("bay1").orderBy("row1").in("lev1",2,3,4,5,6,7,8));
+                        } else {
+                            locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no", i).eq("status", "0")
+                                    .eq("loc_sts","O").orderBy("lev1").orderBy("bay1").orderBy("row1").gt("bay1",7));
+                        }
+
+                    }
+
+                    if (locMast1 != null) {
+                        // 鍒涘缓绉诲簱浠诲姟
+                        TaskWrk taskWrk = new TaskWrk();
+                        Date now = new Date();
+                        taskWrk.setTaskNo(locMast1.getLocNo());//浠诲姟鍙�
+                        taskWrk.setWrkNo(commonService.getWorkNo(WorkNoType.PAKIN.type));
+                        taskWrk.setStatus(TaskStatusType.RECEIVE.id);//浠诲姟鐘舵�侊細鎺ユ敹
+                        taskWrk.setCreateTime(now);
+                        taskWrk.setAssignTime(now);
+                        taskWrk.setIoType(3);//浠诲姟绫诲瀷
+                        taskWrk.setIoPri(11);//浼樺厛绾�
+                        taskWrk.setBarcode(locMast.getBarcode());//鏉$爜
+                        taskWrk.setCrnNo(locMast.getCrnNo());
+                        taskWrk.setWrkSts(11);
+                        taskWrk.setStartPoint(locMast.getLocNo());//璧风偣
+                        taskWrk.setTargetPoint(locMast1.getLocNo());
+                        taskWrkMapper.insert(taskWrk);
+                        locMast1.setStatus("1");
+                        locMastService.updateById(locMast1);
+                    }
+                }
+            }
+        }
+    }
+
+    // 鐩戝惉澶栫疆杈撻�佺嚎锛屾湁浠诲姟鍙峰拰鍙嚭淇″彿锛屼笂鎶ユ垚鍔熸竻闄や换鍔″彿鐩爣绔�
+    @Scheduled(cron = "0/3 * * * * ? ")
+    public synchronized void completeDevpTask() {
+        DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 2);
+        if (devpThread != null) {
+            for(Integer site : staNos) {
+                StaProtocol staProtocol = devpThread.getStation().get(site);
+                if (staProtocol == null) {
+                    continue;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
+                if (staProtocol.isOutEnable() && staProtocol.getWorkNo() != 0 && staProtocol.isAutoing() && staProtocol.isLoading()) {
+                    String response = "";
+                    boolean bool = false;
+                    JSONObject request = new JSONObject();
+                    request.put("site",site);
+                    try {
+                        log.info("澶栫疆杈撻�佺嚎娴佸姩鍒颁綅涓婃姤wms={}", site);
+                        response = new HttpHandler.Builder()
+                                .setUri(wmsUrl)
+                                .setPath(completeDevpTask)
+                                .setJson(request.toJSONString())
+                                .build()
+                                .doPost();
+                        if (!Cools.isEmpty(response)) {
+                            JSONObject jsonObject = JSON.parseObject(response);
+                            if (Integer.parseInt(String.valueOf(jsonObject.get("code"))) == 200) {
+                                bool = true;
+                                staProtocol.setWorkNo((short) 0);
+                                staProtocol.setStaNo((short) 0);
+                                boolean result = MessageQueue.offer(SlaveType.Devp, 2, new Task(2, staProtocol));
+                                if (result) {
+                                    log.info("澶栫疆杈撻�佺嚎娴佸姩鍒颁綅涓婃姤wms,娓呴櫎杈撻�佺嚎绔欑偣{}鍛戒护涓嬪彂鎴愬姛锛�",site);
+                                } else {
+                                    log.error("澶栫疆杈撻�佺嚎娴佸姩鍒颁綅涓婃姤wms,娓呴櫎杈撻�佺嚎绔欑偣{}鍛戒护涓嬪彂澶辫触锛�" ,site);
+                                }
+                            }
+                        }
+                    } catch (Exception e) {
+                        log.error("澶栫疆杈撻�佺嚎娴佸姩鍒颁綅涓婃姤wms寮傚父{},杩斿洖鍊�={}", request, response);
+                    } finally {
+                        apiLogService.save("澶栫疆杈撻�佺嚎娴佸姩鍒颁綅涓婃姤wms"
+                                , wmsUrl + completeDevpTask
+                                , null
+                                , "127.0.0.1"
+                                , request.toJSONString()
+                                , response
+                                , bool
+                        );
+                    }
+                }
+            }
+        }
+    }
 
     private WmsFeedback getWmsFeedback(TaskWrkReport taskWrk) {
         WmsFeedback feedback = new WmsFeedback();

--
Gitblit v1.9.1