From 2b72251421b15984711107e6aa061a36562d9d87 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期一, 24 十一月 2025 13:59:47 +0800
Subject: [PATCH] #pda接口
---
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 198 +++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 182 insertions(+), 16 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 321769b..7e40f99 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -1,10 +1,12 @@
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;
import com.core.common.SnowflakeIdWorker;
+import com.core.common.SpringUtils;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.*;
@@ -16,6 +18,8 @@
import com.zy.asrs.utils.OrderInAndOutUtil;
import com.zy.asrs.utils.Utils;
import com.zy.common.model.DetlDto;
+import com.zy.common.service.CommonService;
+import com.zy.common.utils.HttpHandler;
import com.zy.common.utils.NodeUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -58,6 +62,12 @@
private BasArmMastService basArmMastService;
@Autowired
private BasArmMastSignService basArmMastSignService;
+ @Autowired
+ private BasAgvMastService basAgvMastService;
+ @Autowired
+ private LocOwnerService locOwnerService;
+ @Autowired
+ private CommonService commonService;
@Override
@Transactional
@@ -68,6 +78,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()), // 缂栧彿[闈炵┖]
@@ -75,12 +91,12 @@
DateUtils.convert(now), // 鍗曟嵁鏃ユ湡
docType.getDocId(), // 鍗曟嵁绫诲瀷
null, // 椤圭洰缂栧彿
- null, //
+ param.getStandby1(), //椤圭洰鍚嶇О 瀹㈡埛PO鍙�
null, // 璋冩嫧椤圭洰缂栧彿
null, // 鍒濆绁ㄦ嵁鍙�
null, // 绁ㄦ嵁鍙�
null, // 瀹㈡埛缂栧彿
- null, // 瀹㈡埛
+ locOwner.getOwner(), // 瀹㈡埛
null, // 鑱旂郴鏂瑰紡
null, // 鎿嶄綔浜哄憳
null, // 鍚堣閲戦
@@ -136,6 +152,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);
@@ -228,6 +247,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()), // 缂栧彿[闈炵┖]
@@ -235,12 +260,12 @@
DateUtils.convert(now), // 鍗曟嵁鏃ユ湡
docType.getDocId(), // 鍗曟嵁绫诲瀷
null, // 椤圭洰缂栧彿
- null, //
+ param.getStandby1(), //椤圭洰鍚嶇О 瀹㈡埛PO鍙�
null, // 璋冩嫧椤圭洰缂栧彿
null, // 鍒濆绁ㄦ嵁鍙�
null, // 绁ㄦ嵁鍙�
null, // 瀹㈡埛缂栧彿
- null, // 瀹㈡埛
+ locOwner.getOwner(), // 瀹㈡埛
null, // 鑱旂郴鏂瑰紡
null, // 鎿嶄綔浜哄憳
null, // 鍚堣閲戦
@@ -298,6 +323,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);
@@ -620,7 +648,7 @@
if (Cools.isEmpty(basArmMastOld)){
basArmMastService.insert(basArmMast);
} else {
- throw new CoolException("鏈煡璇㈠埌鐩稿叧鏈烘鑷傛媶鐮佸灈浠诲姟锛侊紒锛�"+ JSON.toJSONString(param));
+ throw new CoolException("绛夊緟鍓嶈竟璐х墿鎶撳彇锛侊紒锛�"+ JSON.toJSONString(param));
}
}
@@ -634,6 +662,20 @@
);
if (Cools.isEmpty(basArm)){
throw new CoolException("鏈烘鑷傞厤缃紓甯革紝鏌ヨ涓嶅埌鏈烘鑷傛暟鎹紒锛侊紒"+ JSON.toJSONString(param));
+ }
+
+ try{
+ BasArmMastSign basArmMastSign = basArmMastSignService.selectOne(
+ new EntityWrapper<BasArmMastSign>()
+ .eq("matnr", param.getMatnr())
+ .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(
@@ -717,20 +759,10 @@
@Override
@Transactional
public boolean TaskArmWorkOrderSign(OrderArmEndParam param) {
- BasArmMastSign basArmMastSign = basArmMastSignService.selectOne(
- new EntityWrapper<BasArmMastSign>()
- .eq("matnr", param.getSku())
- .eq("order_no", param.getOrderNo())
- );
- if (Cools.isEmpty(basArmMastSign)){
-// throw new CoolException("鏈煡璇㈠埌鐩稿叧鏈烘鑷傛媶鐮佸灈浠诲姟锛侊紒锛�"+ JSON.toJSONString(param));
- return false;
- }
BasArmMastSign basArmMastSignNew = basArmMastSignService.selectOne(
new EntityWrapper<BasArmMastSign>()
- .eq("matnr", param.getSku())
.eq("order_no", param.getOrderNo())
- .eq("create_time", basArmMastSign.getCreateTime())
+ .eq("create_time", param.getBindingTags())
.eq("status", 0)
);
if (Cools.isEmpty(basArmMastSignNew)){
@@ -739,4 +771,138 @@
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
+ @Transactional
+ public boolean taskAgvCreate(TaskAgvCreateParam param) {
+ // 鍙傛暟妫�鏌�
+ if (param == null) {
+ throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
+ }
+ Integer devpId = 1;
+ // 鍒涘缓瀵硅薄锛堟瀯閫犲嚱鏁颁腑宸茬敓鎴� timestamp锛�
+ BasAgvMast basAgvMast = new BasAgvMast();
+ // 鐢熸垚 WMS 浠诲姟鍙凤紙濡傛棤澶栭儴浼犲叆锛屽彲浠ヤ娇鐢ㄩ洩鑺盜D 鎴栬嚜澧烇級
+ basAgvMast.setTaskNo(commonService.getWorkNo(0));
+ // 璧嬪�煎弬鏁�
+ basAgvMast.setSourceStaNo(param.getSourceStaNo());
+ basAgvMast.setStaNo(param.getStaNo());
+ basAgvMast.setSourceLocNo(param.getSourceLocNo());
+ basAgvMast.setLocNo(param.getLocNo());
+ // 榛樿鍊�
+ basAgvMast.setPriority(1L); // 榛樿浼樺厛绾�
+ basAgvMast.setStatus(0); // 鍒濆鐘舵��
+ basAgvMast.setAppeTime(new Date()); // 娣诲姞鏃堕棿
+ basAgvMast.setModiTime(new Date()); // 淇敼鏃堕棿
+ basAgvMast.setIoType(param.getIoType());// 浠诲姟绫诲瀷
+ basAgvMast.setDevpId(devpId);
+
+ // 鎻掑叆鏁版嵁搴�
+ basAgvMastService.insert(basAgvMast);
+
+ return true;
+ }
+
+ @Override
+ @Transactional
+ public List<AgvLocListDetlParam> getAgvLocList(AgvLocListParam param){
+
+ if (param == null || Cools.isEmpty(param.getLocNoList())) {
+ throw new CoolException("搴撲綅鍙蜂笉鑳戒负绌�");
+ }
+
+ List<String> locNos = param.getLocNoList();
+
+ List<AgvLocListDetlParam> result = new ArrayList<>();
+
+ for (String locNo : locNos) {
+
+ // 鏌ヨ璇ュ簱浣� detail
+ List<LocDetl> detlList = locDetlService.selectList(
+ new EntityWrapper<LocDetl>().eq("loc_no", locNo)
+ );
+
+ AgvLocListDetlParam dto = new AgvLocListDetlParam();
+ dto.setLocNo(locNo);
+ dto.setAgvDetlList(detlList);
+ result.add(dto);
+ }
+
+ return result;
+ }
+
+
+ @Override
+ @Transactional
+ public boolean bindCtnrAndBin(bindCtnrAndBinParam param) {
+ // 鍙傛暟妫�鏌�
+ if (param == null) {
+ throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
+ }
+ AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam();
+ BasAgvLocNoService basAgvLocNoService = SpringUtils.getBean(BasAgvLocNoService.class);
+ BasAgvLocNo basAgvLocNoSou = basAgvLocNoService.selectOne(new EntityWrapper<BasAgvLocNo>().eq("loc_no", param.getLocNo()));
+ BasAgvLocNo basAgvLocNoEnd = basAgvLocNoService.selectOne(new EntityWrapper<BasAgvLocNo>().eq("sta_no", param.getStaNo()));
+ agvBindCtnrAndBinParam.setReqCode(String.valueOf(System.currentTimeMillis()));
+ agvBindCtnrAndBinParam.setCtnrCode(param.getBarcode());
+ agvBindCtnrAndBinParam.setCtnrTyp("1");
+ agvBindCtnrAndBinParam.setPositionCode(
+ basAgvLocNoSou != null && basAgvLocNoSou.getAgvLocNo() != null
+ ? basAgvLocNoSou.getAgvLocNo()
+ : ""
+ );
+ agvBindCtnrAndBinParam.setStgBinCode(
+ basAgvLocNoEnd != null && basAgvLocNoEnd.getAgvLocNo() != null
+ ? basAgvLocNoEnd.getAgvLocNo()
+ : ""
+ );
+ agvBindCtnrAndBinParam.setIndBind(param.getIndBind());
+ try {
+ String URL = "http://10.10.10.200:8181/rcms/services/rest/hikRpcService"; // AGV鎺ュ彛鍦板潃
+ String mesPath = "bindCtnrAndBin"; // 鎺ュ彛璺緞
+ String response = "";
+ boolean success = false;
+
+ try {
+ log.info("AGV缁戝畾瀹瑰櫒鎺ュ彛璇锋眰鍙傛暟: {}", JSON.toJSONString(agvBindCtnrAndBinParam));
+
+ response = new HttpHandler.Builder()
+ .setUri(URL)
+ .setPath(mesPath)
+ .setJson(JSON.toJSONString(agvBindCtnrAndBinParam))
+ .build()
+ .doPost();
+
+ log.info("AGV缁戝畾瀹瑰櫒鎺ュ彛鍝嶅簲: {}", response);
+ JSONObject jsonObject = JSON.parseObject(response);
+
+ if (jsonObject.getInteger("code") != null && jsonObject.getInteger("code").equals(0)) {
+ success = true;
+ } else {
+ log.error("AGV缁戝畾瀹瑰櫒澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", URL + "/" + mesPath, JSON.toJSONString(agvBindCtnrAndBinParam), response);
+ throw new CoolException("AGV缁戝畾瀹瑰櫒澶辫触: " + jsonObject.getString("msg"));
+ }
+ } catch (Exception e) {
+ log.error("AGV缁戝畾瀹瑰櫒鎺ュ彛璋冪敤寮傚父锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", URL + "/" + mesPath, JSON.toJSONString(agvBindCtnrAndBinParam), response, e);
+ throw new CoolException("AGV缁戝畾瀹瑰櫒鎺ュ彛璋冪敤寮傚父: " + e.getMessage());
+ }
+ } catch (Exception e) {
+ throw new CoolException(e.getMessage());
+ }
+ return true;
+ }
+
+
+
}
--
Gitblit v1.9.1