From 701542ac0a90cf0e3a0a81ec2bb8066b5de68e75 Mon Sep 17 00:00:00 2001
From: zyh <zyh@123>
Date: 星期六, 28 三月 2026 11:21:17 +0800
Subject: [PATCH] 更新为正式部署许可证
---
src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java | 152 +++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 141 insertions(+), 11 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
index 1bfc8b4..8e8c95d 100644
--- a/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
@@ -2,6 +2,7 @@
import com.alibaba.excel.util.DateUtils;
import com.alibaba.excel.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
@@ -14,6 +15,7 @@
import com.zy.asrs.entity.param.EmptyPlateOutParam;
import com.zy.asrs.entity.rcs.*;
import com.zy.asrs.mapper.AgvInfoMapper;
+import com.zy.asrs.mapper.CanFinMapper;
import com.zy.asrs.mapper.MatItemBarcodeMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.OrderInAndOutUtil;
@@ -26,8 +28,11 @@
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
import javax.annotation.Resource;
+import java.io.IOException;
import java.text.ParseException;
import java.util.*;
import java.util.concurrent.ExecutionException;
@@ -52,6 +57,14 @@
public long defaultUserId;
@Value("${wms.zpalletId}")
public String WMS_ZPALLET_ID;
+
+ // 娴峰悍RCS鍦板潃
+ @Value("${hik.url}")
+ private String HIK_URL;
+
+ // 鍗庢檽RCS鍦板潃
+ @Value("${hx.url}")
+ private String HX_URL;
@Resource
private RcsService rcsService;
@@ -95,6 +108,8 @@
private DocTypeService docTypeService;
@Autowired
private OrderService orderService;
+ @Autowired
+ private CanFinMapper canFinMapper;
// region MES鎺ュ彛
@@ -266,7 +281,7 @@
OrderDetlPakin orderDetlPakin = new OrderDetlPakin();
orderDetlPakin.setOrderId(orderPakin.getId());
orderDetlPakin.setOrderNo(orderPakin.getOrderNo());
- orderDetlPakin.setAnfme(Double.valueOf(mesMatInfo.getQty()));
+ orderDetlPakin.setAnfme(mesMatInfo.getQty());
orderDetlPakin.setQty(0.0);
orderDetlPakin.setMatnr(mat.getMatnr());
orderDetlPakin.setMaktx(mat.getMaktx());
@@ -937,6 +952,27 @@
if (docType == null) {
return 0;
}
+
+/*
+ // 鏌ヨcan_fin琛ㄤ腑apply_time鏈�鏂扮殑璁板綍
+ List<CanFin> canFinList = canFinMapper.selectList(new EntityWrapper<CanFin>()
+ .orderBy("apply_time", false)
+ );
+ if (!canFinList.isEmpty()) {
+ CanFin firstCanFin = canFinList.get(0);
+ if (firstCanFin.getAgvType().equals("agv-in-out")) {
+ // 鍙慨鏀归渶瑕佹洿鏂扮殑瀛楁
+ firstCanFin.setOutType("waiting");
+ firstCanFin.setOutNo(mesCallOutApply.getOrderNo());
+ // 纭繚鍏朵粬瀛楁淇濇寔涓嶅彉
+ canFinMapper.updateById(firstCanFin);
+
+ log.info("宸叉洿鏂癱an_fin琛ㄦ渶鏃╄褰曠殑out_no锛孖D锛歿}锛屽嚭搴撳崟鍙凤細{}",
+ firstCanFin.getId(), mesCallOutApply.getOrderNo());
+ }
+ }
+*/
+
//鐢熸垚鍑哄簱鍗�
if (docType.getPakout() == 1) {
long settle = 1;
@@ -971,6 +1007,22 @@
log.error("MES淇濆瓨鍑哄簱璁㈠崟锛堝彨鏂欙級涓绘。澶辫触");
throw new CoolException("淇濆瓨鍑哄簱璁㈠崟锛堝彨鏂欙級涓绘。澶辫触");
}
+
+ if (mesCallOutApply.getTransType().equals("瑁呴厤鍑哄簱鍗�")){
+ CanFin canFin = new CanFin();
+ Date time = now;
+ canFin.setAgvType("agv-out");
+ canFin.setOutNo(mesCallOutApply.getOrderNo());
+ List<CanFin> canFinList = canFinMapper.selectList(new EntityWrapper<>());
+ if (canFinList.isEmpty()){
+ canFin.setTaskStatus("canout");
+ }else {
+ canFin.setTaskStatus("waiting");
+ }
+ canFin.setApplyTime(time);
+ canFinMapper.insert(canFin);
+ }
+
Set<String> set = new HashSet<>();
// 鐢熸垚鏄庣粏
if (mesCallOutApply.getItemdata() != null && !mesCallOutApply.getItemdata().isEmpty()) {
@@ -978,6 +1030,10 @@
set.add(mesOutApplyItem.getTrayid());
Mat mat = matService.selectByMatnr(mesOutApplyItem.getItemno());
+ if (Cools.isEmpty(mat)) {
+ log.error("鐗╂枡缂栧彿涓嶅瓨鍦�: {}", mesOutApplyItem.getItemno());
+ throw new CoolException("鐗╂枡缂栧彿涓嶅瓨鍦�: " + mesOutApplyItem.getItemno());
+ }
OrderDetlPakout orderDetlPakout = new OrderDetlPakout();
orderDetlPakout.setOrderId(orderPakout.getId());
orderDetlPakout.setOrderNo(orderPakout.getOrderNo());
@@ -1109,6 +1165,15 @@
Task task = new Task();
task.setWrkNo(workNo);
task.setTaskType("ZX-AGV");
+ if (transTask.getTransType()!= null){
+ if (transTask.getTransType().equals("08-1")){
+ task.setTaskType("ZX-AGV-08-1");
+ }else if (transTask.getTransType().equals("08-2")){
+ task.setTaskType("ZX-AGV-08-2");
+ }else if (transTask.getTransType().equals("11")){
+ task.setTaskType("ZP-AGV");
+ }
+ }
task.setWrkSts(301L);//301.AGV浠诲姟鍒涘缓
task.setIoType(3);//3.绔欏埌绔�
task.setIoPri(10.00);
@@ -1126,11 +1191,22 @@
task.setPltType(transTask.getAgvFactory());//鍗庢檽AGV
task.setPacked(transTask.getRackNumber());//鏂欐灦鍙�
task.setCtnType(1);
+ task.setIsPda(transTask.getIsPDA());
if (taskService.insert(task)) {
+ if (transTask.getNextStationId().equals("402") || transTask.getNextStationId().equals("401")){
+ CanFin canFin = new CanFin();
+// canFin.setAgvType("agv-in-out");
+ canFin.setAgvType("agv-in");
+ canFin.setTaskStatus("waiting");
+ canFin.setInNo(transTask.getTaskno());
+ canFin.setApplyTime(now);
+ canFinMapper.insert(canFin);
result.put("Success", "1");
- result.put("Message", "浠诲姟鎺ユ敹鎴愬姛");
-
+ result.put("Message", "浠诲姟涓嬪彂缁橰CS鎴愬姛");
+ }
+ result.put("Success", "1");
+ result.put("Message", "浠诲姟涓嬪彂缁橰CS鎴愬姛");
}else {
result.put("Success", "2");
result.put("Message", "浠诲姟涓嬪彂缁橰CS澶辫触");
@@ -1230,9 +1306,14 @@
mesReturn.setSuccess("2");
if ("Y".equals(allow.getStatus())) {
- Task task = taskService.selectOne(new EntityWrapper<Task>().eq("task_no", allow.getTaskno()));
+ String taskNo = allow.getTaskno();
+ if (taskNo.contains("-")) {
+ taskNo = allow.getTaskno().substring(0, taskNo.lastIndexOf("-"));
+ }
+ Task task = taskService.selectOne(new EntityWrapper<Task>().eq("task_no", taskNo));
if (Cools.isEmpty(task)) {
- mesReturn.setMessage("娌℃湁鎵句釜璇ヤ换鍔$紪鍙�=" + allow.getTaskno() + "鐨凙GV绉诲姩浠诲姟");
+
+ mesReturn.setMessage("娌℃湁鎵惧埌璇ヤ换鍔$紪鍙�=" + allow.getTaskno() + "鐨凙GV绉诲姩浠诲姟");
} else {
//鏌ョ湅鐢宠绔欑偣鐨勬槸娴峰悍杩樻槸鍗庢檽
//娴峰悍
@@ -1248,13 +1329,23 @@
mesReturn.setSuccess(success == 1 ? "1" : "2");
mesReturn.setMessage(success == 1 ? "" : "杞彂缁橰CS澶辫触");
} else {
+ JSONObject params = new JSONObject();
+ params.put("EqptCode", allow.getStationId());
+ params.put("TaskCode", allow.getTaskno());
+ params.put("ActionStatus", "1");
allow.setMethod("APPLY_IN_STATION");
int success = rcsService.continueTask(allow, 2);
- mesReturn.setSuccess(success == 1 ? "1" : "2");
- mesReturn.setMessage(success == 1 ? "" : "杞彂缁橰CS澶辫触");
+ int success1 = rcsService.applyIn(params, 2);
+ if (success1 == 1 || success == 1){
+ mesReturn.setSuccess("1");
+ mesReturn.setMessage("");
+ }else {
+ mesReturn.setSuccess(success1 == 1 ? "1" : "2");
+ mesReturn.setMessage(success1 == 1 ? "" : "杞彂缁橰CS澶辫触");
+ }
}
-
}
+
}
return mesReturn;
@@ -1318,23 +1409,27 @@
mesReturn.setSuccess("2");
if ("Y".equals(allow.getStatus())) {
- Task task = taskService.selectOne(new EntityWrapper<Task>().eq("task_no", allow.getTaskno()));
+ String taskNo = allow.getTaskno();
+ if (taskNo.contains("-")) {
+ taskNo = allow.getTaskno().substring(0, taskNo.lastIndexOf("-"));
+ }
+ Task task = taskService.selectOne(new EntityWrapper<Task>().eq("task_no", taskNo));
if (Cools.isEmpty(task)) {
mesReturn.setMessage("娌℃湁鎵句釜璇ヤ换鍔$紪鍙�=" + allow.getTaskno() + "鐨凙GV绉诲姩浠诲姟");
} else {
//鏌ョ湅鐢宠绔欑偣鐨勬槸娴峰悍杩樻槸鍗庢檽
//娴峰悍
- if (Cools.isEmpty(task.getPltType()) || task.getPltType() == 1) {
+ if (Cools.isEmpty(task.getPltType()) || task.getPltType() == 1 || task.getPltType() == 0) {
RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
rcsTaskContinue.setRobotTaskCode(allow.getTaskno());
rcsTaskContinue.setTriggerType("TASK");
rcsTaskContinue.setTriggerCode(allow.getTaskno());
// rcsTaskContinue.setTriggerType("ROBOT");
// rcsTaskContinue.setTriggerCode(allow.getAgvCode());
-
int success = rcsService.continueTask(rcsTaskContinue, 1);
mesReturn.setSuccess(success == 1 ? "1" : "2");
mesReturn.setMessage(success == 1 ? "" : "杞彂缁橰CS澶辫触");
+
} else {
allow.setMethod("APPLY_OFF_STATION");
int success = rcsService.continueTask(allow, 2);
@@ -1382,6 +1477,7 @@
return mesReturn;
}
+
// endregion
/**
@@ -1395,5 +1491,39 @@
AgvInfo agvInfo = agvInfoMapper.selectById(agvNo);
return agvInfo.getAgvFactory();
}
+ @Override
+ public int AGVPause(JSONObject params, int AGVType){
+ MesReturn mesReturn = new MesReturn();
+ String hik_blockUrl = "api/robot/controller/zone/blockade";
+ String hik_pauseUrl = "api/robot/controller/zone/pause";
+ String hx_url = "robot/controller/notify/isstop";
+
+ if (AGVType == 1){
+ String BLOCK_URL = HIK_URL + hik_blockUrl;
+ String PAUSE_URL = HIK_URL + hik_pauseUrl;
+
+ String blockResponse = RcsServiceImpl.sendPost(BLOCK_URL, JSONObject.toJSONString(params));
+ JSONObject jsonObject = JSON.parseObject(blockResponse);
+ if (!StringUtils.isEmpty(blockResponse) && (jsonObject.getString("code").equals("SUCCESS") || jsonObject.getInteger("code") == 200)) {
+ String PauseResponse = RcsServiceImpl.sendPost(PAUSE_URL, JSONObject.toJSONString(params));
+ JSONObject pauseJsonObject = JSON.parseObject(PauseResponse);
+ if (!StringUtils.isEmpty(PauseResponse) && (jsonObject.getString("code").equals("SUCCESS") || jsonObject.getInteger("code") == 200)) {
+ return 1;
+ }else
+ return 2;
+ }else
+ return 2;
+ }else {
+ String URL = "";
+ URL = HX_URL + hx_url;
+ String PauseResponse = RcsServiceImpl.sendPost(URL, JSONObject.toJSONString(params));
+ JSONObject jsonObject = JSON.parseObject(PauseResponse);
+ if (!StringUtils.isEmpty(PauseResponse) && (jsonObject.getString("code").equals("SUCCESS") || jsonObject.getInteger("code") == 200)) {
+ return 1;
+ }else
+ return 2;
+ }
+
+ }
}
--
Gitblit v1.9.1