From 8ad01551a218f3dfa615ac3b5c4358ce5711c1d2 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期一, 15 十二月 2025 10:15:14 +0800
Subject: [PATCH] #pda
---
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 162 +++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 136 insertions(+), 26 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 ea7ac92..5ff9f70 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -34,6 +34,7 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import java.util.Objects;
/**
* Created by vincent on 2022/4/9
@@ -74,7 +75,8 @@
private CommonService commonService;
@Autowired
private LocMastServiceImpl locMastService;
-
+ @Autowired
+ private WrkDetlService wrkDetlService;
@Override
@Transactional
public void pakinOrderCreate(OpenOrderPakinParam param) {
@@ -721,6 +723,40 @@
@Override
@Transactional
+ public boolean TaskArmLocStatus(ArmOKParam param) {
+ BasArm basArm = basArmService.selectOne(new EntityWrapper<BasArm>()
+ .eq("arm_no", param.getArmNo())
+ .eq("sta_no", param.getStaNo())
+ .eq("status", 1)
+ );
+ if (Cools.isEmpty(basArm)){
+ log.error("鏈烘鑷傞厤缃紓甯革紝鏌ヨ涓嶅埌鏈烘鑷傛暟鎹紒锛侊紒"+ JSON.toJSONString(param));
+ return false;
+ }
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", basArm.getStaNoSou()));
+ if (Cools.isEmpty(locMast)){
+ log.error("鏌ヨ涓嶅埌locMast鏁版嵁锛侊紒锛�"+ JSON.toJSONString(param));
+ return false;
+ }
+ if (locMast.getLocSts().equals("D")){
+ BasArmMast basArmMast = basArmMastService.selectOne(
+ new EntityWrapper<BasArmMast>()
+ .eq("sta_no", basArm.getStaNoSou())
+ .eq("arm_no", param.getArmNo())
+ .eq("status", 3)
+ );
+ if (Cools.isEmpty(basArmMast)){
+ return true;
+ }
+ log.error("鏈煡璇㈠埌鐩稿叧鏈烘鑷傛媶鐮佸灈浠诲姟锛侊紒锛�"+ JSON.toJSONString(param));
+ } else {
+ log.error("locMast鐘舵�佷笉涓篋锛侊紒锛�"+ JSON.toJSONString(param));
+ }
+ return false;
+ }
+
+ @Override
+ @Transactional
public void taskArmWorkspaceStatus(TaskArmWorkspaceStatusParam param) {
BasArm basArm = basArmService.selectOne(new EntityWrapper<BasArm>()
.eq("arm_no", param.getArm_no())
@@ -739,7 +775,7 @@
if (Cools.isEmpty(basArmMast)){
throw new CoolException("鏈煡璇㈠埌鐩稿叧鏈烘鑷傛媶鐮佸灈浠诲姟锛侊紒锛�"+ JSON.toJSONString(param));
}
- basArmMastService.updateArmMastStatus(param.getArm_no(),basArmMast.getSortingLine(),basArmMast.getStaNo(),1,3);
+// basArmMastService.updateArmMastStatus(param.getArm_no(),basArmMast.getSortingLine(),basArmMast.getStaNo(),1,3);
basArmMastService.updateArmMastStatus(param.getArm_no(),basArmMast.getSortingLine(),basArmMast.getStaNo(),2,3);
}
@@ -763,6 +799,22 @@
if (!Cools.isEmpty(basArmMast)){
basArmMastService.updateArmMastStatus(param.getArm_no(),basArmMast.getSortingLine(),basArmMast.getStaNo(), 5,6);
}
+ }
+
+ @Override
+ @Transactional
+ public boolean taskArmOrderResult(OrderArmEndParam param){
+ if(param.getDone_num() == 0){
+ if(basArmMastService.delete(new EntityWrapper<BasArmMast>().eq("arm_no",param.getArm_no())
+ .eq("status",1))){
+ return true;
+ }
+ }
+ if(param.getDone_num() == 1){
+ return true;
+ }
+ log.error("鏈壘鍒板搴斾换鍔�"+ param);
+ return false;
}
@Override
@@ -799,24 +851,32 @@
if (param == null) {
throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
}
- // 鍒涘缓瀵硅薄锛堟瀯閫犲嚱鏁颁腑宸茬敓鎴� timestamp锛�
BasAgvMast basAgvMast = new BasAgvMast();
- // 鐢熸垚 WMS 浠诲姟鍙凤紙濡傛棤澶栭儴浼犲叆锛屽彲浠ヤ娇鐢ㄩ洩鑺盜D 鎴栬嚜澧烇級
+
+ Long ts = basAgvMast.getTimestamp();
+ if (ts == null) {
+ throw new CoolException("timestamp 鐢熸垚澶辫触");
+ }
+
+ String barcode = String.valueOf(ts);
+ if (barcode.length() > 16) {
+ barcode = barcode.substring(0, 16);
+ }
+ basAgvMast.setBarcode(barcode);
+
+ String locNo = null;
+ String staNo = null;
basAgvMast.setTaskNo(commonService.getWorkNo(0));
- // 璧嬪�煎弬鏁�
basAgvMast.setSourceStaNo(param.getSourceStaNo());
basAgvMast.setStaNo(param.getStaNo());
basAgvMast.setSourceLocNo(param.getSourceLocNo());
basAgvMast.setLocNo(param.getLocNo());
- String locNo = null;
- String staNo = null;
- // 榛樿鍊�
- basAgvMast.setPriority(1L); // 榛樿浼樺厛绾�
- basAgvMast.setStatus(0); // 鍒濆鐘舵��
- basAgvMast.setAppeTime(new Date()); // 娣诲姞鏃堕棿
- basAgvMast.setModiTime(new Date()); // 淇敼鏃堕棿
- basAgvMast.setIoType(param.getIoType());// 浠诲姟绫诲瀷
- basAgvMast.setFloorNo(param.getFloorNo()); //妤煎眰
+ basAgvMast.setPriority(1L);
+ basAgvMast.setStatus(0);
+ basAgvMast.setAppeTime(new Date());
+ basAgvMast.setModiTime(new Date());
+ basAgvMast.setIoType(param.getIoType());
+ basAgvMast.setFloorNo(param.getFloorNo());
switch (basAgvMast.getIoType()){
// AGV搴撲綅==銆嬭緭閫佺嚎绔欑偣 0
// AGV搴撲綅==銆婣GV搴撲綅 1
@@ -831,10 +891,10 @@
staNo = param.getSourceStaNo().toString();
break;
}
- // 鎻掑叆鏁版嵁搴�
basAgvMastService.insert(basAgvMast);
+
bindCtnrAndBinParam bindParam = new bindCtnrAndBinParam();
- bindParam.setBarcode(basAgvMast.getTimestamp().toString());
+ bindParam.setBarcode(basAgvMast.getBarcode());
bindParam.setIndBind("1");
bindParam.setFloorNo(basAgvMast.getFloorNo());
bindParam.setLocNo(locNo);
@@ -844,6 +904,44 @@
}else{
throw new CoolException("鏈兘缁戝畾");
}
+ }
+ @Override
+ @Transactional
+ public List<PickWrkDetlListParam> getPickList(PdaPickListParam param) {
+ List<WrkDetl> wrkDetls = wrkDetlService.findByBarcode(param.getBarcode());
+ List<PickWrkDetlListParam> result = new ArrayList<>();
+ wrkDetls.forEach(wrkDetl -> {
+ Double total;
+ EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
+ LocDetl locDetl = locDetlService.selectOne(
+ wrapper.eq("zpallet", wrkDetl.getZpallet())
+ .eq("matnr", wrkDetl.getMatnr())
+ );
+ // 鍙嫞鎬婚噺锛氫紭鍏堝彇搴撳瓨琛紝鍚﹀垯鍙栦綔涓氭暟閲�
+ if (Cools.isEmpty(locDetl)) {
+ total = wrkDetl.getAnfme();
+ } else {
+ total = locDetl.getAnfme();
+ }
+ // ===== 缁勮杩斿洖瀵硅薄 =====
+ PickWrkDetlListParam dto = new PickWrkDetlListParam();
+ dto.setMatnr(wrkDetl.getMatnr());
+ dto.setMaknx(wrkDetl.getMaktx());
+ dto.setOrderNo(wrkDetl.getOrderNo());
+ dto.setBoxType3(wrkDetl.getBoxType3());
+ dto.setStandby1(wrkDetl.getStandby1());
+ dto.setStandby2(wrkDetl.getStandby2());
+ dto.setStandby3(wrkDetl.getStandby3());
+ dto.setManu(wrkDetl.getManu());
+ dto.setMemo(wrkDetl.getMemo());
+ // 褰撳墠鎷h揣鏁伴噺
+ dto.setCount(wrkDetl.getAnfme());
+ // 鍙嫞鎬绘暟閲�
+ dto.setTotal(total);
+ result.add(dto);
+ });
+
+ return result;
}
@Override
@@ -941,6 +1039,8 @@
}
+
+
@Override
@Transactional
public boolean agvApplicationPassedTheGrating(ArmAgvGratingParam arm) {
@@ -971,7 +1071,7 @@
@Override
@Transactional
public boolean agvBindAndBin(String taskNo) {
- String URL = "http://10.10.10.200:8181/"; // AGV鎺ュ彛鍦板潃
+ String URL = "http://10.10.10.200:8181"; // AGV鎺ュ彛鍦板潃
String AGVPath = "rcms/services/rest/hikRpcService/bindCtnrAndBin"; // 鎺ュ彛璺緞
BasAgvMast basAgvMast = basAgvMastService.selectOne(new EntityWrapper<BasAgvMast>().eq("task_no",taskNo));
if (Cools.isEmpty(basAgvMast)){
@@ -982,39 +1082,49 @@
BasAgvLocNo basAgvLocNoEnd = basAgvLocNoService.selectOne(
new EntityWrapper<BasAgvLocNo>().eq("sta_no", basAgvMast.getStaNo())
);
+ BasAgvLocNo locNo = basAgvLocNoService.selectOne(
+ new EntityWrapper<BasAgvLocNo>().eq("loc_no", basAgvMast.getLocNo())
+ );
+ String binCode = basAgvLocNoEnd != null
+ ? basAgvLocNoEnd.getAgvLocNo()
+ : (locNo != null ? locNo.getAgvLocNo() : null);
if (Cools.isEmpty(basAgvMast)){
return false;
}
+ String ctnrCode = basAgvMast.getBarcode().length() > 1?basAgvMast.getBarcode():basAgvMast.getTimestamp().toString();
AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam();
- agvBindCtnrAndBinParam.setReqCode(basAgvMast.getTaskNo() + "-" + basAgvMast.getTimestamp());
- agvBindCtnrAndBinParam.setCtnrCode(basAgvMast.getTimestamp().toString());
+ agvBindCtnrAndBinParam.setReqCode(basAgvMast.getTaskNo() + "-" + System.currentTimeMillis());
+ agvBindCtnrAndBinParam.setCtnrCode(ctnrCode);
agvBindCtnrAndBinParam.setCtnrTyp("1");
- agvBindCtnrAndBinParam.setStgBinCode(basAgvLocNoEnd.getAgvLocNo());
+ agvBindCtnrAndBinParam.setStgBinCode(binCode);
agvBindCtnrAndBinParam.setIndBind("0");
- ReturnT<String> resultBind = new PostMesDataUtils().postMesDataArmGrating("AGV瀹瑰櫒缁戝畾瑙g粦", URL,AGVPath, agvBindCtnrAndBinParam);
- if (resultBind.getCode()!=200){
+ ReturnT<String> resultBind = new PostMesDataUtils().postMesDataArmGrating("AGV瀹瑰櫒瑙g粦", URL,AGVPath, agvBindCtnrAndBinParam);
+ if (resultBind.getCode() ==200){
basAgvMast.setStatus(4);
basAgvMastService.updateById(basAgvMast);
return true;
}
return false;
}else {
- if (basAgvMast.getIoType()==0 && basAgvMast.getStaNo()==2034){
+ if (basAgvMast != null
+ && basAgvMast.getIoType() != null
+ && (basAgvMast.getIoType() == 0)
+ && (Objects.equals(basAgvMast.getSourceStaNo(), 2033) || Objects.equals(basAgvMast.getStaNo(), 2034)
+ || Objects.equals(basAgvMast.getStaNo(), 4003)|| Objects.equals(basAgvMast.getSourceStaNo(), 4006))){
AgvBindCtnrAndBinTwoParam agvBindCtnrAndBinTwoParam = new AgvBindCtnrAndBinTwoParam();
agvBindCtnrAndBinTwoParam.setReqCode(String.valueOf(snowflakeIdWorker.nextId()));
agvBindCtnrAndBinTwoParam.setPodcode(basAgvMast.getBarcode());
agvBindCtnrAndBinTwoParam.setPositionCode(basAgvMast.getStaNo().toString());
agvBindCtnrAndBinTwoParam.setIndBind("0");;
- ReturnT<String> resultBind = new PostMesDataUtils().postMesDataArmGrating("AGV瀹瑰櫒缁戝畾瑙g粦",
+ ReturnT<String> resultBind = new PostMesDataUtils().postMesDataArmGrating("AGV瀹瑰櫒瑙g粦",
AgvConstant.AGV_URL+"/"+AgvConstant.AGV_hikRpcService,AgvConstant.getAGVADAPTOR(2), agvBindCtnrAndBinTwoParam);
- if (resultBind.getCode()!=200){
+ if (resultBind.getCode()!=1){
basAgvMast.setStatus(4);
basAgvMastService.updateById(basAgvMast);
return true;
}
}
}
-
return false;
}
--
Gitblit v1.9.1