From caa7a2327123cc070ae16ad802983c04e296ff11 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期三, 04 二月 2026 13:46:00 +0800
Subject: [PATCH] #1。档案同步2,任务状态上报,3设备状态读取,4心跳,5wms手动完成取消任务

---
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java |  287 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 270 insertions(+), 17 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index 9936578..3325572 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -1,5 +1,7 @@
 package com.zy.asrs.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.common.DateUtils;
@@ -13,16 +15,18 @@
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.MatUtils;
 import com.zy.asrs.utils.OrderInAndOutUtil;
+import com.zy.asrs.utils.Utils;
 import com.zy.common.model.DetlDto;
+import com.zy.common.utils.HttpHandler;
 import com.zy.common.utils.NodeUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import javax.rmi.CORBA.Util;
+import java.util.*;
 
 /**
  * Created by vincent on 2022/4/9
@@ -49,7 +53,20 @@
     private TagService tagService;
     @Autowired
     private TagMapper tagMapper;
-
+    @Autowired
+    private BasArmService basArmService;
+    @Autowired
+    private BasArmMastService basArmMastService;
+    @Autowired
+    private BasArmMastSignService basArmMastSignService;
+    @Autowired
+    private BasAgvMastService basAgvMastService;
+    @Autowired
+    private LocOwnerService locOwnerService;
+    @Autowired
+    private ApiLogService apiLogService;
+    @Value("${wms.url}")
+    private String wmsUrl;
     @Override
     @Transactional
     public void pakinOrderCreate(OpenOrderPakinParam param) {
@@ -59,6 +76,12 @@
         }
         DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.TRUE);
         Date now = new Date();
+        LocOwner locOwner = null;
+        if (!Cools.isEmpty(param.getOwnerId())) {
+            locOwner = locOwnerService.selectById(param.getOwnerId());
+        } else {
+            locOwner = locOwnerService.selectById(1);
+        }
         // 鍗曟嵁涓绘。
         order = new Order(
                 String.valueOf(snowflakeIdWorker.nextId()),    // 缂栧彿[闈炵┖]
@@ -66,12 +89,12 @@
                 DateUtils.convert(now),    // 鍗曟嵁鏃ユ湡
                 docType.getDocId(),    // 鍗曟嵁绫诲瀷
                 null,    // 椤圭洰缂栧彿
-                null,    //
+                param.getStandby1(),    //椤圭洰鍚嶇О 瀹㈡埛PO鍙�
                 null,    // 璋冩嫧椤圭洰缂栧彿
                 null,    // 鍒濆绁ㄦ嵁鍙�
                 null,    // 绁ㄦ嵁鍙�
                 null,    // 瀹㈡埛缂栧彿
-                null,    // 瀹㈡埛
+                locOwner.getOwner(),    // 瀹㈡埛
                 null,    // 鑱旂郴鏂瑰紡
                 null,    // 鎿嶄綔浜哄憳
                 null,    // 鍚堣閲戦
@@ -94,9 +117,9 @@
                 now,    // 娣诲姞鏃堕棿
                 9527L,    // 淇敼浜哄憳
                 now,    // 淇敼鏃堕棿
-                null    // 澶囨敞
+                null,   // 澶囨敞
+                1
         );
-        order.setPakinPakoutStatus(1);
         if (!orderService.insert(order)) {
             throw new CoolException("鐢熸垚鍗曟嵁涓绘。澶辫触锛岃鑱旂郴绠$悊鍛�");
         }
@@ -127,6 +150,9 @@
             orderDetl.setStandby1(detlDto.getStandby1());
             orderDetl.setStandby2(detlDto.getStandby2());
             orderDetl.setStandby3(detlDto.getStandby3());
+            orderDetl.setBoxType1(detlDto.getBoxType1());
+            orderDetl.setBoxType2(detlDto.getBoxType2());
+            orderDetl.setBoxType3(detlDto.getBoxType3());
             orderDetl.setOrderId(order.getId());
             orderDetl.setOrderNo(order.getOrderNo());
             orderDetl.setCreateBy(9527L);
@@ -135,6 +161,7 @@
             orderDetl.setUpdateTime(now);
             orderDetl.setStatus(1);
             orderDetl.setQty(0.0D);
+            orderDetl.setPakinPakoutStatus(1);
             if (!orderDetlService.insert(orderDetl)) {
                 throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
             }
@@ -218,6 +245,12 @@
         }
         DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.FALSE);
         Date now = new Date();
+        LocOwner locOwner = null;
+        if (!Cools.isEmpty(param.getOwnerId())) {
+            locOwner = locOwnerService.selectById(param.getOwnerId());
+        } else {
+            locOwner = locOwnerService.selectById(1);
+        }
         // 鍗曟嵁涓绘。
         order = new Order(
                 String.valueOf(snowflakeIdWorker.nextId()),    // 缂栧彿[闈炵┖]
@@ -225,12 +258,12 @@
                 DateUtils.convert(now),    // 鍗曟嵁鏃ユ湡
                 docType.getDocId(),    // 鍗曟嵁绫诲瀷
                 null,    // 椤圭洰缂栧彿
-                null,    //
+                param.getStandby1(),    //椤圭洰鍚嶇О 瀹㈡埛PO鍙�
                 null,    // 璋冩嫧椤圭洰缂栧彿
                 null,    // 鍒濆绁ㄦ嵁鍙�
                 null,    // 绁ㄦ嵁鍙�
                 null,    // 瀹㈡埛缂栧彿
-                null,    // 瀹㈡埛
+                locOwner.getOwner(),    // 瀹㈡埛
                 null,    // 鑱旂郴鏂瑰紡
                 null,    // 鎿嶄綔浜哄憳
                 null,    // 鍚堣閲戦
@@ -253,9 +286,9 @@
                 now,    // 娣诲姞鏃堕棿
                 9527L,    // 淇敼浜哄憳
                 now,    // 淇敼鏃堕棿
-                null    // 澶囨敞
+                null,    // 澶囨敞
+                2
         );
-        order.setPakinPakoutStatus(2);
         if (!orderService.insert(order)) {
             throw new CoolException("鐢熸垚鍗曟嵁涓绘。澶辫触锛岃鑱旂郴绠$悊鍛�");
         }
@@ -288,6 +321,9 @@
             orderDetl.setStandby1(detlDto.getStandby1());
             orderDetl.setStandby2(detlDto.getStandby2());
             orderDetl.setStandby3(detlDto.getStandby3());
+            orderDetl.setBoxType1(detlDto.getBoxType1());
+            orderDetl.setBoxType2(detlDto.getBoxType2());
+            orderDetl.setBoxType3(detlDto.getBoxType3());
             orderDetl.setOrderId(order.getId());
             orderDetl.setOrderNo(order.getOrderNo());
             orderDetl.setCreateBy(9527L);
@@ -296,6 +332,7 @@
             orderDetl.setUpdateTime(now);
             orderDetl.setStatus(1);
             orderDetl.setQty(0.0D);
+            orderDetl.setPakinPakoutStatus(2);
             if (!orderDetlService.insert(orderDetl)) {
                 throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
             }
@@ -486,12 +523,12 @@
         }
 
         for(MatSyncParam.MatParam matParam : param.getMatDetails()){
-            if(Cools.isEmpty(matParam.getMatnr())){
+            if(Cools.isEmpty(matParam.getMatNr())){
                 throw new CoolException("鍟嗗搧缂栫爜涓嶈兘涓虹┖");
             }
 
             Date now = new Date();
-            Mat mat = matService.selectByMatnr(matParam.getMatnr());
+            Mat mat = matService.selectByMatnr(matParam.getMatNr());
             if (mat == null) {
                 mat = new Mat();
                 // 鍒嗙被
@@ -562,7 +599,7 @@
                 } else {
                     tagId = tagService.getTop().getId();
                 }
-                mat.sync(param);
+                mat.sync(matParam);
 //            mat.setMatnr(param.getMatnr());
 //            mat.setMaktx(param.getMaktx());
 //            mat.setSpecs(param.getSpecs());
@@ -578,8 +615,8 @@
                     log.info("鍚屾鏂扮墿鏂橻鍟嗗搧缂栧彿锛歿}]", mat.getMatnr());
                 }
             } else {
-                mat.sync(param);
-                if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr",matParam.getMatnr()))) {
+                mat.sync(matParam);
+                if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr",matParam.getMatNr()))) {
                     throw new CoolException("鏇存柊宸插瓨鍦ㄥ晢鍝佷俊鎭け璐ワ紝璇疯仈绯荤鐞嗗憳");
                 }
             }
@@ -587,4 +624,220 @@
 
     }
 
+    @Override
+    @Transactional
+    public void taskArmReport(TaskArmReportParam param) {
+        BasArmMast basArmMast = new BasArmMast(param);
+        List<BasArm> basArmList = basArmService.selectList(new EntityWrapper<BasArm>().eq("sorting_line_sou", basArmMast.getSortingLine()));
+        for (BasArm basArm : basArmList) {
+            if (basArm.getStatus()!=1){
+                continue;
+            }
+            basArmMast.setArmNo(basArm.getArmNo());
+            basArmMast.setStaNo(basArm.getStaNoSou());
+            break;
+        }
+        BasArmMast basArmMastOld = basArmMastService.selectOne(
+                new EntityWrapper<BasArmMast>()
+                        .eq("sorting_line", basArmMast.getSortingLine())
+                        .eq("arm_no", basArmMast.getArmNo())
+                        .eq("status", 0)
+        );
+        if (Cools.isEmpty(basArmMastOld)){
+            basArmMastService.insert(basArmMast);
+        } else {
+            throw new CoolException("绛夊緟鍓嶈竟璐х墿鎶撳彇锛侊紒锛�"+ JSON.toJSONString(param));
+        }
+    }
+
+    @Override
+    @Transactional
+    public void taskArmCycleResult(TaskArmCycleResultParam param) {
+        BasArm basArm = basArmService.selectOne(new EntityWrapper<BasArm>()
+                .eq("arm_no", param.getArm_no())
+                .eq("sorting_line", Integer.parseInt(param.getStaNo()))
+                .eq("status", 1)
+        );
+        if (Cools.isEmpty(basArm)){
+            throw new CoolException("鏈烘鑷傞厤缃紓甯革紝鏌ヨ涓嶅埌鏈烘鑷傛暟鎹紒锛侊紒"+ JSON.toJSONString(param));
+        }
+
+        try{
+            BasArmMastSign basArmMastSign = basArmMastSignService.selectOne(
+                    new EntityWrapper<BasArmMastSign>()
+                            .eq("matnr", param.getSku())
+                            .eq("order_no", param.getOrderNo())
+                            .eq("create_time", param.getBindingTags())
+            );
+            if (!Cools.isEmpty(basArmMastSign)){
+                basArmMastSign.setStatus(1);
+                basArmMastSignService.updateById(basArmMastSign);
+            }
+        } catch (Exception e){
+        }
+
+        BasArmMast basArmMastListError = basArmMastService.selectOne(
+                new EntityWrapper<BasArmMast>()
+                        .eq("sorting_line", basArm.getSortingLineSou())
+                        .eq("arm_no", param.getArm_no())
+                        .eq("status", 9)
+        );
+        if (!Cools.isEmpty(basArmMastListError)){
+            if (Integer.parseInt(param.getPick_num()) ==1){
+                basArmMastListError.setStatus(2);
+                basArmMastService.updateById(basArmMastListError);
+            }
+            return;
+        }
+
+
+        BasArmMast basArmMast = basArmMastService.selectOne(
+                new EntityWrapper<BasArmMast>()
+                        .eq("sorting_line", basArm.getSortingLineSou())
+                        .eq("arm_no", param.getArm_no())
+                        .eq("status", 1)
+        );
+        if (Cools.isEmpty(basArmMast)){
+            throw new CoolException("鏈煡璇㈠埌鐩稿叧鏈烘鑷傛媶鐮佸灈浠诲姟锛侊紒锛�"+ JSON.toJSONString(param));
+        }
+        if (Integer.parseInt(param.getPick_num()) !=1){
+            basArmMast.setStatus(9);
+            basArmMastService.updateById(basArmMast);
+        } else {
+            basArmMast.setStatus(2);
+            basArmMastService.updateById(basArmMast);
+        }
+    }
+
+    @Override
+    @Transactional
+    public void taskArmWorkspaceStatus(TaskArmWorkspaceStatusParam param) {
+        BasArm basArm = basArmService.selectOne(new EntityWrapper<BasArm>()
+                .eq("arm_no", param.getArm_no())
+                .eq("sta_no", Integer.parseInt(param.getId()))
+                .eq("status", 1)
+        );
+        if (Cools.isEmpty(basArm)){
+            throw new CoolException("鏈烘鑷傞厤缃紓甯革紝鏌ヨ涓嶅埌鏈烘鑷傛暟鎹紒锛侊紒"+ JSON.toJSONString(param));
+        }
+        BasArmMast basArmMast = basArmMastService.selectOne(
+                new EntityWrapper<BasArmMast>()
+                        .eq("sta_no", basArm.getStaNoSou())
+                        .eq("arm_no", param.getArm_no())
+                        .eq("status", 2)
+        );
+        if (Cools.isEmpty(basArmMast)){
+            throw new CoolException("鏈煡璇㈠埌鐩稿叧鏈烘鑷傛媶鐮佸灈浠诲姟锛侊紒锛�"+ JSON.toJSONString(param));
+        }
+        basArmMastService.updateArmMastStatus(param.getArm_no(),basArmMast.getSortingLine(),2,3);
+    }
+
+    @Override
+    @Transactional
+    public void taskArmWorkOrderStatus(OrderArmEndParam param) {
+        BasArm basArm = basArmService.selectOne(new EntityWrapper<BasArm>()
+                .eq("arm_no", param.getArm_no())
+                .eq("sorting_line", Integer.parseInt(param.getStaNo()))
+                .eq("status", 1)
+        );
+        if (Cools.isEmpty(basArm)){
+            throw new CoolException("鏈烘鑷傞厤缃紓甯革紝鏌ヨ涓嶅埌鏈烘鑷傛暟鎹紒锛侊紒"+ JSON.toJSONString(param));
+        }
+        BasArmMast basArmMast = basArmMastService.selectOne(
+                new EntityWrapper<BasArmMast>()
+                        .eq("sorting_line",basArm.getSortingLineSou())
+                        .eq("arm_no", param.getArm_no())
+                        .eq("status", 5)
+        );
+        if (!Cools.isEmpty(basArmMast)){
+            basArmMastService.updateArmMastStatus(param.getArm_no(),basArmMast.getSortingLine(), 5,6);
+        }
+    }
+
+    @Override
+    @Transactional
+    public boolean TaskArmWorkOrderSign(OrderArmEndParam param) {
+        BasArmMastSign basArmMastSignNew = basArmMastSignService.selectOne(
+                new EntityWrapper<BasArmMastSign>()
+                        .eq("order_no", param.getOrderNo())
+                        .eq("create_time", param.getBindingTags())
+                        .eq("status", 0)
+        );
+        if (Cools.isEmpty(basArmMastSignNew)){
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    @Transactional
+    public boolean TaskAgvReport(TaskAgvReportParam param) {
+        BasAgvMast basAgvMast = basAgvMastService.selectOne(new EntityWrapper<BasAgvMast>().eq("task_no", param.getTaskNo()));
+        if (Cools.isEmpty(basAgvMast)){
+            return false;
+        }
+        basAgvMast.setStatus(2);
+        basAgvMastService.updateById(basAgvMast);
+        return true;
+    }
+
+
+    @Override
+    public boolean reportTaskStatus(String taskNo, Integer status, Integer ioType, String barcode) {
+        try {
+            TaskStatusFeedbackParam param = new TaskStatusFeedbackParam();
+            param.setTaskNo(taskNo);
+            param.setStatus(status);
+            param.setIoType(ioType);
+            param.setBarcode(barcode);
+            param.setReportTime(new Date());
+
+            Map<String, Object> headers = new HashMap<>();
+            headers.put("appkey", "ea1f0459efc02a79f046f982767939ae");
+
+            String response = new HttpHandler.Builder()
+                    .setUri(wmsUrl)
+                    .setPath("/taskStatusFeedback")
+                    .setJson(JSON.toJSONString(param))
+                    .setHeaders(headers)
+                    .build()
+                    .doPost();
+
+            boolean success = false;
+            log.info("浠诲姟鐘舵�佸弽棣堜笂鎶ョ粨鏋滐細{}", response);
+            if (response != null) {
+                try {
+                    JSONObject jsonObject = JSON.parseObject(response);
+                    // 鍋囪杩斿洖code涓�200琛ㄧず鎴愬姛
+                    if (jsonObject != null && jsonObject.containsKey("code") && jsonObject.getInteger("code") == 200) {
+                        success = true;
+                    }
+                } catch (Exception e) {
+                    log.warn("瑙f瀽鍝嶅簲澶辫触", e);
+                }
+            }
+
+            // 璁板綍鏃ュ織
+            try {
+                apiLogService.save("浠诲姟鐘舵�佸弽棣堜笂鎶�",
+                        "/taskStatusFeedback",
+                        "ea1f0459efc02a79f046f982767939ae",
+                        wmsUrl,
+                        JSON.toJSONString(param),
+                        response,
+                        success);
+            } catch (Exception e) {
+                log.error("淇濆瓨API鏃ュ織寮傚父", e);
+            }
+
+            return success;
+        } catch (Exception e) {
+            log.error("浠诲姟鐘舵�佸弽棣堜笂鎶ュ紓甯�", e);
+        }
+        return false;
+    }
+
+
+
+
 }

--
Gitblit v1.9.1