From 849409866c1372f5daf7becf9aec054922e260b2 Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期五, 14 二月 2025 13:20:23 +0800
Subject: [PATCH] 兼容四期
---
src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java | 214 +++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 156 insertions(+), 58 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
index eced838..07c0a8c 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
@@ -16,6 +16,8 @@
import com.zy.asrs.service.*;
import com.zy.common.service.AgvCommonService;
import com.zy.common.utils.HttpHandler;
+import com.zy.system.entity.Config;
+import com.zy.system.service.ConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -23,10 +25,14 @@
import java.io.IOException;
import java.util.*;
+import java.util.concurrent.TimeUnit;
@Service
@Slf4j
public class AgvWrkMastServiceImp extends ServiceImpl<AgvWrkMastMapper, AgvWrkMast> implements AgvWrkMastService {
+
+ @Value("${agv.flag}")
+ private boolean flag;
@Value("${agv.url}")
private String url;
@@ -60,21 +66,24 @@
private AgvCommonService agvCommonService;
@Autowired
private AgvWrkMastService agvWrkMastService;
+ @Autowired
+ private ConfigService configService;
- public void updateWrkStsByWrkNo(int wrkNo, long wrkSts) {
+ public Boolean updateWrkStsByWrkNo(int wrkNo, long wrkSts) {
AgvWrkMast agvWrkMast = this.selectById(wrkNo);
//鍒ゆ柇瑕佷慨鏀圭殑宸ヤ綔妗g姸鎬佹槸鍚﹀悎鐞嗭紝濡傛灉涓嶅悎鐞嗗垯鎶涘嚭寮傚父
- checkWrkSts(agvWrkMast,wrkSts);
+ checkWrkSts(agvWrkMast, wrkSts);
agvWrkMast.setWrkSts(wrkSts);
- this.updateById(agvWrkMast);
+ agvWrkMast.setModiTime(new Date());
+ return this.updateById(agvWrkMast);
}
- public void updateWrkStsByWrkNo(int wrkNo, long wrkSts,String manuType,long userId) {
+ public void updateWrkStsByWrkNo(int wrkNo, long wrkSts, String manuType, long userId) {
Date now = new Date();
AgvWrkMast agvWrkMast = this.selectById(wrkNo);
//鍒ゆ柇瑕佷慨鏀圭殑宸ヤ綔妗g姸鎬佹槸鍚﹀悎鐞嗭紝濡傛灉涓嶅悎鐞嗗垯鎶涘嚭寮傚父
- checkWrkSts(agvWrkMast,wrkSts);
+ checkWrkSts(agvWrkMast, wrkSts);
agvWrkMast.setWrkSts(wrkSts);
agvWrkMast.setManuType(manuType);
agvWrkMast.setModiTime(now);
@@ -83,8 +92,7 @@
}
// TODO 鍒ゆ柇瑙勫垯
- private boolean checkWrkSts(AgvWrkMast agvWrkMast,long wrkSts){
-
+ private boolean checkWrkSts(AgvWrkMast agvWrkMast, long wrkSts) {
return true;
@@ -95,9 +103,9 @@
AgvTaskCreateParam agvTaskCreateParam = new AgvTaskCreateParam();
//agvTaskCreateParam.setTaskType(taskType);
- getRequestParam(agvTaskCreateParam,agvWrkMast);
+ getRequestParam(agvTaskCreateParam, agvWrkMast);
- return doHttpRequest(agvTaskCreateParam,"鎼繍浠诲姟涓嬪彂",url, taskCreatePath,null,"127.0.0.1");
+ return doHttpRequest(agvTaskCreateParam, "鎼繍浠诲姟涓嬪彂", url, taskCreatePath, null, "127.0.0.1");
//return containerMoveParam;
}
@@ -105,11 +113,15 @@
public int startAllcationIn(AgvWrkMast agvWrkMast) throws IOException {
AgvBasDevp basDevp = agvBasDevpService.selectByDevNo(agvWrkMast.getSourceLocNo());
//妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅
- AgvLocMast locMast = agvCommonService.getLocNo(basDevp.getLocType1(),basDevp.getFloor());
+ AgvLocMast locMast = agvCommonService.getLocNo(basDevp.getLocType1(), basDevp.getFloor(), false, true);
agvWrkMast.setLocNo(locMast.getLocNo());
agvWrkMast.setWrkSts(201L);
+ agvWrkMast.setLogErrMemo("startAllcationIn");
+ agvWrkMast.setModiTime(new Date());
agvWrkMastService.updateById(agvWrkMast);
-
+ // 鏇寸洰鏍囧簱浣�
+ locMast.setLocSts("S");
+ agvLocMastService.updateById(locMast);
return 0;
}
@@ -117,30 +129,30 @@
//璐ф灦鍏ュ満
public int containerMoveIn(List<AgvWrkMast> agvWrkMastList) throws IOException {
//璋冪敤璐ф灦鍏ュ満鏃舵墍闇�瑕佸弬鏁�
- Map<String,List<Map<String,String>>> containerMoveParam = new HashMap<>();
- List<Map<String,String>> positionCodeMapList = new ArrayList<>();
- containerMoveParam.put("containerMoveIns",positionCodeMapList);
+ Map<String, List<Map<String, String>>> containerMoveParam = new HashMap<>();
+ List<Map<String, String>> positionCodeMapList = new ArrayList<>();
+ containerMoveParam.put("containerMoveIns", positionCodeMapList);
- getContainerMoveParam(agvWrkMastList,positionCodeMapList);
+ getContainerMoveParam(agvWrkMastList, positionCodeMapList);
- if(Cools.isEmpty(positionCodeMapList)){
+ if (Cools.isEmpty(positionCodeMapList)) {
return 0;
}
- return doHttpRequest(containerMoveParam,"璐ф灦鍏ュ満浠诲姟涓嬪彂",url, containerMoveInPath,null,"127.0.0.1");
+ return doHttpRequest(containerMoveParam, "璐ф灦鍏ュ満浠诲姟涓嬪彂", url, containerMoveInPath, null, "127.0.0.1");
}
//璐ф灦绂诲満
- public int containerMoveOut(List<AgvWrkMast> agvWrkMastList){
- Map<String,List<Map<String,String>>> containerMoveParam = new HashMap<>();
- List<Map<String,String>> positionCodeMapList = new ArrayList<>();
- containerMoveParam.put("containerMoveOuts",positionCodeMapList);
- for(AgvWrkMast agvWrkMast : agvWrkMastList){
- Map<String,String> positionCodeMap = new HashMap<>();
- positionCodeMap.put("positionCode",agvWrkMast.getLocNo());
+ public int containerMoveOut(List<AgvWrkMast> agvWrkMastList) {
+ Map<String, List<Map<String, String>>> containerMoveParam = new HashMap<>();
+ List<Map<String, String>> positionCodeMapList = new ArrayList<>();
+ containerMoveParam.put("containerMoveOuts", positionCodeMapList);
+ for (AgvWrkMast agvWrkMast : agvWrkMastList) {
+ Map<String, String> positionCodeMap = new HashMap<>();
+ positionCodeMap.put("positionCode", agvWrkMast.getLocNo());
positionCodeMapList.add(positionCodeMap);
}
- return doHttpRequest(containerMoveParam,"璐ф灦绂诲満浠诲姟涓嬪彂",url, containerMoveOutPath,null,"127.0.0.1");
+ return doHttpRequest(containerMoveParam, "璐ф灦绂诲満浠诲姟涓嬪彂", url, containerMoveOutPath, null, "127.0.0.1");
}
public boolean insertByIncrease(AgvWrkMast agvWrkMast) {
@@ -157,25 +169,25 @@
//璐ф灦鍒拌揪閫氱煡
public int containerArrived(AgvWrkMast agvWrkMast) {
- Map<String,String> containerArrivedParam = new HashMap<>();
- containerArrivedParam.put("slotCode",agvWrkMast.getSourceLocNo());
- containerArrivedParam.put("containerCode",agvWrkMast.getBarcode());
+ Map<String, String> containerArrivedParam = new HashMap<>();
+ containerArrivedParam.put("slotCode", agvWrkMast.getSourceLocNo());
+ containerArrivedParam.put("containerCode", agvWrkMast.getBarcode());
- return doHttpRequest(containerArrivedParam,"璐ф灦杈惧埌閫氱煡",url, containerArrivedPath,null,"127.0.0.1");
+ return doHttpRequest(containerArrivedParam, "璐ф灦杈惧埌閫氱煡", url, containerArrivedPath, null, "127.0.0.1");
}
@Override
public List<AgvWrkMast> selectReadyAgvWrkMast() {
List<String> stationCodes = agvBasDevpService.selectAllStationCode();
Wrapper<AgvWrkMast> wrapper = new EntityWrapper<AgvWrkMast>().eq("wrk_sts", 21L).like(false, "loc_no", "@");
- wrapper.in("loc_no",stationCodes);
+ wrapper.in("loc_no", stationCodes);
return this.selectList(wrapper);
//return this.baseMapper.selectReadyAgvWrkMast();
}
@Override
public AgvWrkMast selectByContainerCode(String containerCode) {
- return this.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode",containerCode));
+ return this.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", containerCode));
}
@Override
@@ -184,25 +196,25 @@
AgvTaskCreateParam agvTaskCreateParam = new AgvTaskCreateParam();
agvTaskCreateParam.setTaskCode(wrkNo + "");
- return doHttpRequest(agvTaskCreateParam,"鍙栨秷浠诲姟涓嬪彂",url, taskCancelPath,null,"127.0.0.1");
+ return doHttpRequest(agvTaskCreateParam, "鍙栨秷浠诲姟涓嬪彂", url, taskCancelPath, null, "127.0.0.1");
}
- private void getContainerMoveParam(List<AgvWrkMast> agvWrkMastList,List<Map<String,String>> positionCodeMapList){
+ private void getContainerMoveParam(List<AgvWrkMast> agvWrkMastList, List<Map<String, String>> positionCodeMapList) {
//寰�璐ф灦鍏ュ満鍙傛暟涓斁鍏ユ簮绔欑偣浣嶇疆
- for(AgvWrkMast agvWrkMast : agvWrkMastList){
+ for (AgvWrkMast agvWrkMast : agvWrkMastList) {
//鍒ゆ柇鏄惁涓鸿緭閫佺嚎鍏ュ簱锛屾槸鍒欎笉闇�瑕佽揣鏋惰繘鍦鸿姹�
- if("Y".equals(agvWrkMast.getMk())){
+ if ("Y".equals(agvWrkMast.getMk())) {
continue;
}
- Map<String,String> positionCodeMap = new HashMap<>();
- positionCodeMap.put("positionCode",agvWrkMast.getSourceLocNo());
+ Map<String, String> positionCodeMap = new HashMap<>();
+ positionCodeMap.put("positionCode", agvWrkMast.getSourceLocNo());
positionCodeMapList.add(positionCodeMap);
}
}
- private void getRequestParam(AgvTaskCreateParam agvTaskCreateParam,AgvWrkMast agvWrkMast){
+ private void getRequestParam(AgvTaskCreateParam agvTaskCreateParam, AgvWrkMast agvWrkMast) {
List<AgvTaskParam> agvTaskParamList = Arrays.asList(
//璧峰浣�
@@ -215,52 +227,138 @@
// //鐩爣浣�
// agvTaskParamList.add(new AgvTaskParam(agvWrkMast.getLocNo()));
- if(agvWrkMast.getIoType() == 53 || agvWrkMast.getIoType() == 57 ){
+ if (agvWrkMast.getIoType() == 53 || agvWrkMast.getIoType() == 57) {
agvWrkMast.setWrkNo(-agvWrkMast.getWrkNo());
}
agvTaskCreateParam.setTaskCode(agvWrkMast.getWrkNo().toString());
- if (agvWrkMast.getIoType() == 108 || (agvWrkMast.getIoType() == 109 && agvWrkMast.getWrkSts() == 201) || agvWrkMast.getIoType() == 12) {
- agvTaskCreateParam.setTaskTyp("F06");
- } else {
- agvTaskCreateParam.setTaskTyp("F01");
+ Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "FOUR"));
+ if (config != null && config.getStatus() == 1 && config.getValue().equals("1") && processUseTiShengJi(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo())) {
+ // TODO 鍥涙湡
+ } else {
+ switch (agvWrkMast.getIoType()) {
+ case 114:
+ case 108:
+ case 12:
+ agvTaskCreateParam.setTaskTyp("F06");
+ break;
+ case 109:
+ if (agvWrkMast.getWrkSts() == 201) {
+ agvTaskCreateParam.setTaskTyp("F06");
+ } else {
+ agvTaskCreateParam.setTaskTyp("F01");
+ }
+ break;
+ case 1:
+ case 57:
+ // 鍏ュ簱浠诲姟鏄彧鏈� 鎺ラ┏浣� -- > 搴撲綅
+ AgvLocMast loc = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvWrkMast.getLocNo()));
+ String locSub = loc.getLocNo().substring(loc.getLocNo().length() - 4).substring(0, 2).substring(0, 2);
+ AgvBasDevp agvBasDevp = agvBasDevpService.selectByDevNo(agvWrkMast.getSourceLocNo());
+ if ("02".equals(locSub)) {
+ if (agvBasDevp.getFloor() == 4) {
+ agvTaskCreateParam.setTaskTyp("F01");
+ } else {
+ agvTaskCreateParam.setTaskTyp("F06");
+ }
+
+ } else {
+ // 鐩爣妤煎眰浣�1妤� 浣嗘簮搴撲綅锛堟帴椹充綅锛夊湪鍚稿浜屾ゼ
+ if (agvBasDevp.getFloor() == 4) {
+ agvTaskCreateParam.setTaskTyp("F06");
+ } else {
+ agvTaskCreateParam.setTaskTyp("F01");
+ }
+
+
+ }
+ break;
+ default:
+ agvTaskCreateParam.setTaskTyp("F01");
+ break;
+ }
}
agvTaskCreateParam.setPositionCodePath(agvTaskParamList);
}
- private int doHttpRequest(Object requestParam, String namespace, String url, String path, String appkey, String ip){
+ // TODO 鍥涙湡
+ private boolean processUseTiShengJi(String sourceLocNo, String locNo) {
+ // 鍒ゆ柇鏄惁鏄彁鍗囨満
+ if (sourceLocNo.startsWith("YZ")) {
+ if (sourceLocNo.endsWith("01F2") && !locNo.startsWith("YZ") && locNo.endsWith("F4") ) {
+ // 浠庣敓浜т簩鍘傜殑搴撲綅鍒板惛濉戜簩鍘傜殑鐐逛綅涓�
+ return true;
+ } else if (sourceLocNo.endsWith("01F2") && locNo.startsWith("YZ") && locNo.endsWith("02F1")) {
+ // 浠庣敓浜т簩鍘傜殑搴撲綅鍒板惛濉戜簩鍘傜殑搴撲綅
+ return true;
+ } else if (sourceLocNo.endsWith("02F1") && locNo.startsWith("YZ") && locNo.endsWith("01F2")) {
+ // 鍚稿浜屾ゼ鐨勫簱浣嶅埌鐢熶骇浜屽巶鐨勫簱浣�
+ return true;
+ } else if (sourceLocNo.endsWith("02F1") && !locNo.startsWith("YZ") && locNo.endsWith("F2")) {
+ // 鍚稿浜屾ゼ鐨勫簱浣嶅埌鐢熶骇浜屽巶鐨勭偣浣�
+ return true;
+ }
+ } else {
+ if (sourceLocNo.endsWith("F4") && locNo.startsWith("YZ") && locNo.endsWith("01F2")) {
+ // 浠庡惛濉戜簩妤肩殑鐐逛綅鍒扮敓浜т簩鍘傜殑搴撲綅
+ return true;
+ } else if (sourceLocNo.endsWith("F2") && locNo.startsWith("YZ") && locNo.endsWith("02F1")) {
+ // 浠庣敓浜т簩鍘傜殑鐐逛綅鍒板惛濉戜簩妤肩殑搴撲綅
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private int doHttpRequest(Object requestParam, String namespace, String url, String path, String appkey, String ip) {
+ if (!flag) {
+ return 1;
+ }
String response = "";
boolean success = false;
-
+ int code = 0;
try {
response = new HttpHandler.Builder()
.setUri(url)
.setPath(path)
+ .setTimeout(30, TimeUnit.SECONDS)
.setJson(JSONObject.toJSONString(requestParam))
.build()
.doPost();
JSONObject jsonObject = JSON.parseObject(response);
- int code = Integer.parseInt(jsonObject.get("code").toString());
- if(code != 0){
+ code = Integer.parseInt(jsonObject.get("code").toString());
+ if (code != 0) {
+ if (code == 6) {
+ log.info("AGV浠诲姟鍗曞彿宸蹭笂鎶�:{}", response);
+ String message = jsonObject.getString("message");
+ if (!Cools.isEmpty(message) && message.contains("宸插瓨鍦ㄤ换鍔″崟澶翠负")) {
+ success = true;
+ return 0;
+ }
+ }
throw new CoolException("璋冪敤AGV鍝嶅簲閿欒");
+ //return code;
}
success = true;
return code;
- }catch (Exception e){
+ } catch (Exception e) {
log.error(e.getMessage());
throw new CoolException("璋冪敤AGV鍝嶅簲閿欒");
- }finally {
- apiLogService.save(
- namespace,
- url + path,
- appkey,
- ip,
- JSON.toJSONString(JSONObject.toJSONString(requestParam)),
- response,
- success
- );
+ //return 1;
+ } finally {
+ if (code != 6) {
+ apiLogService.save(
+ namespace,
+ url + path,
+ appkey,
+ ip,
+ JSON.toJSONString(JSONObject.toJSONString(requestParam)),
+ response,
+ success
+ );
+ }
}
}
--
Gitblit v1.9.1