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 | 177 +++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 149 insertions(+), 28 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 77c261b..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,6 +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;
@@ -16,16 +17,16 @@
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 javax.rmi.CORBA.Util;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
/**
* Created by vincent on 2022/4/9
@@ -58,7 +59,14 @@
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) {
@@ -68,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()), // 缂栧彿[闈炵┖]
@@ -75,12 +89,12 @@
DateUtils.convert(now), // 鍗曟嵁鏃ユ湡
docType.getDocId(), // 鍗曟嵁绫诲瀷
null, // 椤圭洰缂栧彿
- null, //
+ param.getStandby1(), //椤圭洰鍚嶇О 瀹㈡埛PO鍙�
null, // 璋冩嫧椤圭洰缂栧彿
null, // 鍒濆绁ㄦ嵁鍙�
null, // 绁ㄦ嵁鍙�
null, // 瀹㈡埛缂栧彿
- null, // 瀹㈡埛
+ locOwner.getOwner(), // 瀹㈡埛
null, // 鑱旂郴鏂瑰紡
null, // 鎿嶄綔浜哄憳
null, // 鍚堣閲戦
@@ -136,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);
@@ -228,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()), // 缂栧彿[闈炵┖]
@@ -235,12 +258,12 @@
DateUtils.convert(now), // 鍗曟嵁鏃ユ湡
docType.getDocId(), // 鍗曟嵁绫诲瀷
null, // 椤圭洰缂栧彿
- null, //
+ param.getStandby1(), //椤圭洰鍚嶇О 瀹㈡埛PO鍙�
null, // 璋冩嫧椤圭洰缂栧彿
null, // 鍒濆绁ㄦ嵁鍙�
null, // 绁ㄦ嵁鍙�
null, // 瀹㈡埛缂栧彿
- null, // 瀹㈡埛
+ locOwner.getOwner(), // 瀹㈡埛
null, // 鑱旂郴鏂瑰紡
null, // 鎿嶄綔浜哄憳
null, // 鍚堣閲戦
@@ -298,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);
@@ -497,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();
// 鍒嗙被
@@ -590,7 +616,7 @@
}
} else {
mat.sync(matParam);
- if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr",matParam.getMatnr()))) {
+ if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr",matParam.getMatNr()))) {
throw new CoolException("鏇存柊宸插瓨鍦ㄥ晢鍝佷俊鎭け璐ワ紝璇疯仈绯荤鐞嗗憳");
}
}
@@ -620,7 +646,7 @@
if (Cools.isEmpty(basArmMastOld)){
basArmMastService.insert(basArmMast);
} else {
- throw new CoolException("鏈煡璇㈠埌鐩稿叧鏈烘鑷傛媶鐮佸灈浠诲姟锛侊紒锛�"+ JSON.toJSONString(param));
+ throw new CoolException("绛夊緟鍓嶈竟璐х墿鎶撳彇锛侊紒锛�"+ JSON.toJSONString(param));
}
}
@@ -629,12 +655,42 @@
public void taskArmCycleResult(TaskArmCycleResultParam param) {
BasArm basArm = basArmService.selectOne(new EntityWrapper<BasArm>()
.eq("arm_no", param.getArm_no())
- .eq("sta_no", Integer.parseInt(param.getStaNo()))
+ .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())
@@ -644,9 +700,13 @@
if (Cools.isEmpty(basArmMast)){
throw new CoolException("鏈煡璇㈠埌鐩稿叧鏈烘鑷傛媶鐮佸灈浠诲姟锛侊紒锛�"+ JSON.toJSONString(param));
}
-
- basArmMast.setStatus(2);
- basArmMastService.updateById(basArmMast);
+ if (Integer.parseInt(param.getPick_num()) !=1){
+ basArmMast.setStatus(9);
+ basArmMastService.updateById(basArmMast);
+ } else {
+ basArmMast.setStatus(2);
+ basArmMastService.updateById(basArmMast);
+ }
}
@Override
@@ -677,7 +737,7 @@
public void taskArmWorkOrderStatus(OrderArmEndParam param) {
BasArm basArm = basArmService.selectOne(new EntityWrapper<BasArm>()
.eq("arm_no", param.getArm_no())
- .eq("sta_no", Integer.parseInt(param.getStaNo()))
+ .eq("sorting_line", Integer.parseInt(param.getStaNo()))
.eq("status", 1)
);
if (Cools.isEmpty(basArm)){
@@ -697,20 +757,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)){
@@ -719,4 +769,75 @@
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