From 1b230d7961b2d5068298f0cba13287cabd2fd649 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期三, 17 七月 2024 18:47:35 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java | 217 +++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 190 insertions(+), 27 deletions(-)
diff --git a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
index a0c3d12..8d5d43a 100644
--- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -1,41 +1,55 @@
package com.zy.asrs.task.handler;
+import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.AgvLocDetl;
import com.zy.asrs.entity.AgvWaitPakin;
import com.zy.asrs.entity.AgvWrkDetl;
import com.zy.asrs.entity.AgvWrkMast;
import com.zy.asrs.service.*;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
+import lombok.Synchronized;
+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 java.io.IOException;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
+@Slf4j
@Service
public class AgvWrkMastHandler extends AbstractHandler<String> {
+ @Value("${agvBasDev.maxWorkNum}")
+ private int maxWrokNum;
+
@Autowired
- AgvWrkMastService agvWrkMastService;
+ private AgvWrkMastService agvWrkMastService;
@Autowired
- AgvLocMastService agvLocMastService;
+ private AgvLocMastService agvLocMastService;
@Autowired
- AgvLocDetlService agvLocDetlService;
+ private AgvLocDetlService agvLocDetlService;
@Autowired
- AgvWrkMastLogService agvWrkMastLogService;
+ private AgvWrkMastLogService agvWrkMastLogService;
@Autowired
- AgvWrkDetlService agvWrkDetlService;
+ private AgvWrkDetlService agvWrkDetlService;
@Autowired
- AgvWrkDetlLogService agvWrkDetlLogService;
+ private AgvWrkDetlLogService agvWrkDetlLogService;
@Autowired
- AgvWaitPakinService agvWaitPakinService;
+ private AgvWaitPakinService agvWaitPakinService;
@Autowired
- AgvWaitPakinLogService agvWaitPakinLogService;
+ private AgvWaitPakinLogService agvWaitPakinLogService;
@Autowired
- OrderService orderService;
+ private OrderService orderService;
+ @Autowired
+ private AgvBasDevpService agvBasDevpService;
@Transactional
public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) {
@@ -43,44 +57,143 @@
String barcode = agvWrkMast.getBarcode();
String orderNo = getOrderNoByWrkNo(wrkNo);
- //淇敼宸ヤ綔妗g姸鎬佷负206.搴撳瓨鏇存柊瀹屾垚
- agvWrkMast.setWrkSts(206L);
+ //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚
+ agvWrkMast.setWrkSts(207L);
agvWrkMastService.updateById(agvWrkMast);
- //淇敼鐩爣搴撲綅鐘舵�佷负F.鍦ㄥ簱
- agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F");
- //鏇存柊鐩爣搴撲綅鏄庣粏
- agvLocDetlService.addLocDetlInfo(agvWrkMast.getLocNo(),wrkNo);
+ if(agvWrkMast.getIoType() == 10){
+ // 绌烘澘鍏ュ簱 璁剧疆搴撲綅鐘舵�佷负D.绌烘《/绌烘爤鏉�
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode());
+ }else{
+ //淇敼鐩爣搴撲綅鐘舵�佷负F.鍦ㄥ簱
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode());
+ }
//鐢熸垚AGV宸ヤ綔鍘嗗彶妗�
- agvWrkMastLogService.save(wrkNo);
+ agvWrkMastLogService.save(agvWrkMast);
//鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
agvWrkDetlLogService.save(wrkNo);
- //鐢熸垚鍏ュ簱閫氱煡鍘嗗彶妗�
- agvWaitPakinLogService.save(barcode);
+ //绫诲瀷涓哄叆搴撴椂
+ if(agvWrkMast.getIoType() == 1){
+ //鏇存柊鐩爣搴撲綅鏄庣粏
+ log.info("鏇存柊鐩爣搴撲綅鏄庣粏 agvWrkMast.getLocNo(): " + agvWrkMast.getLocNo() + ", wrkNo: " + wrkNo);
+ agvLocDetlService.addLocDetlInfo(agvWrkMast.getLocNo(),wrkNo);
+ //鐢熸垚鍏ュ簱閫氱煡鍘嗗彶妗�
+ boolean save = agvWaitPakinLogService.save(barcode);
+ //鍒犻櫎鍏ュ簱閫氱煡妗�
+ log.info("鍒犻櫎鍏ュ簱閫氱煡妗� supp_code: " + barcode);
+ agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("supp_code",barcode));
+ }
+ //绫诲瀷涓哄簱浣嶇Щ杞椂
+ if(agvWrkMast.getIoType() == 11){
+ //鏇存柊搴撳瓨鏄庣粏
+ agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo());
+ //淇敼婧愬簱浣嶇姸鎬佷负O
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","");
+ }
+
//鍒犻櫎AGV宸ヤ綔妗�
agvWrkMastService.deleteById(wrkNo);
//鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
- //鍒犻櫎鍏ュ簱閫氱煡妗�
- agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("zpallet",barcode));
- //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚
- orderService.checkComplete(orderNo);
+ if(!isJSON(orderNo)){
+ //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚
+ orderService.checkComplete(orderNo);
+ }else{
+ List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
+ maps.forEach(map -> {
+ String o = map.get("orderNo").toString();
+ orderService.checkComplete(o);
+ });
+ }
+ return SUCCESS;
+ }
+
+
+ @Transactional
+ public ReturnT<String> completedCarryWrk(AgvWrkMast agvWrkMast) {
+ int wrkNo = agvWrkMast.getWrkNo();
+ String orderNo = getOrderNoByWrkNo(wrkNo);
+ //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚
+ agvWrkMast.setWrkSts(207L);
+ agvWrkMastService.updateById(agvWrkMast);
+ //淇敼婧愬簱浣嶇姸鎬佷负O
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","");
+ if(agvWrkMast.getIoType() == 101){
+ //鏇存柊鐩爣搴撲綅鏄庣粏 101.鍑哄簱 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁�
+ agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo()));
+ }
+
+ //鐢熸垚AGV宸ヤ綔鍘嗗彶妗�
+ agvWrkMastLogService.save(agvWrkMast);
+ //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
+ agvWrkDetlLogService.save(wrkNo);
+ //鍒犻櫎AGV宸ヤ綔妗�
+ agvWrkMastService.deleteById(wrkNo);
+ //鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
+ agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
+ if(!isJSON(orderNo)){
+ //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚
+ orderService.checkComplete(orderNo);
+ }else{
+ List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
+ maps.forEach(map -> {
+ String o = map.get("orderNo").toString();
+ orderService.checkComplete(o);
+ });
+ }
return SUCCESS;
}
@Transactional
public ReturnT<String> startPutWayWrk(List<AgvWrkMast> agvWrkMastList) throws IOException {
- Map<String, List<Map<String, String>>> containerMoveParam = agvWrkMastService.startWrk(agvWrkMastList);
- int code = agvWrkMastService.containerMove(containerMoveParam);
+ //涓嬪彂浠诲姟
+ int startWrkCode = agvWrkMastService.startWrk(agvWrkMastList,"putaway");
+ if(startWrkCode != 0){
+ throw new CoolException("浠诲姟涓嬪彂澶辫触");
+ }
+ //涓嬪彂瀹瑰櫒鍏ュ満鎸囦护 锛堢紦瀛樿揣鏋讹級
+ int code = agvWrkMastService.containerMoveIn(agvWrkMastList);
+
+ if(code == 0){
+ for(AgvWrkMast agvWrkMast : agvWrkMastList){
+ //涓嬪彂瀹瑰櫒杈惧埌閫氱煡 锛堣緭閫佺嚎锛�
+ if("Y".equals(agvWrkMast.getMk())){
+ int containerArrivedCode = agvWrkMastService.containerArrived(agvWrkMast);
+ if(containerArrivedCode != 0){
+ log.error("瀹瑰櫒鍒拌揪鎸囦护涓嬪彂澶辫触");
+ continue;
+ }
+ }
+ //202.RCS鍙栬揣涓�
+ agvWrkMast.setWrkSts(202L);
+ agvWrkMastService.updateById(agvWrkMast);
+ if(agvWrkMast.getIoType() == 1){
+ //淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y
+ agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y");
+ }
+ }
+ return SUCCESS;
+ }
+ return FAIL;
+ }
+
+ @Transactional
+ public ReturnT<String> startCarryWrk(List<AgvWrkMast> agvWrkMastList) throws IOException {
+ //log.info(agvWrkMastList.toString());
+ //浠诲姟杩囨护锛岃繃婊ゆ帀宸插瓨鍦ㄧ浉鍚岀洰鏍囧簱浣嶇殑宸ヤ綔妗�
+ //agvWrkMastList = filter(agvWrkMastList);
+ int code = agvWrkMastService.startWrk(agvWrkMastList,"carry");
+ //log.info(agvWrkMastList.toString());
+ if (Cools.isEmpty(agvWrkMastList)){
+ return SUCCESS;
+ }
if(code == 0){
agvWrkMastList.forEach(agvWrkMast -> {
//202.RCS鍙栬揣涓�
- agvWrkMast.setWrkSts((long)202);
- //淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y
- agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y");
+ agvWrkMast.setWrkSts(202L);
agvWrkMastService.updateById(agvWrkMast);
});
//agvWrkMastService.updateBatchById(agvWrkMastList);
@@ -91,8 +204,58 @@
return FAIL;
}
+ @Synchronized
+ @Transactional
+ public ReturnT<String> dealWatiWrk(List<AgvWrkMast> agvWrkMastList) throws IOException {
+
+ agvWrkMastList.forEach(agvWrkMast -> {
+ //鏌ヨ璇ョ珯鐐规墍鏈夋殏瀛樹綅鍦ㄥ伐浣滄。涓嚭鐜扮殑娆℃暟
+ List<Map<String, Object>> devNoMaps = agvBasDevpService.selectDevNoAndNumBystationCode(agvWrkMast.getLocNo());
+ //鍙栫涓�涓殏瀛樹綅锛屽苟鏌ヨ鍏舵鏁颁笌閰嶇疆鐨勬鏁板仛姣旇緝
+ Map<String, Object> devNoMap = devNoMaps.get(0);
+ if((int)devNoMap.get("num") < maxWrokNum){
+ agvWrkMast.setLocNo(devNoMap.get("dev_no").toString());
+ agvWrkMastService.updateById(agvWrkMast);
+ log.info("after锛�" + devNoMap.toString() + ", wrkNo:" + agvWrkMast.getWrkNo() + ", locNo: " + agvWrkMast.getLocNo());
+ }
+ });
+
+ return SUCCESS;
+ }
+
private String getOrderNoByWrkNo(int wrkNo){
AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo));
+ if(Cools.isEmpty(agvWrkDetl)){
+ return null;
+ }
return agvWrkDetl.getOrderNo();
}
+
+ private boolean isJSON(String str) {
+ if (Cools.isEmpty(str)) {
+ return false;
+ } else {
+ str = str.trim();
+ if (str.startsWith("{") && str.endsWith("}")) {
+ return true;
+ } else if (str.startsWith("[") && str.endsWith("]")) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ }
+
+ private List<AgvWrkMast> filter(List<AgvWrkMast> agvWrkMastList){
+ return agvWrkMastList.stream().filter(agvWrkMast -> {
+ AgvWrkMast agvWrkMastWroking = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", agvWrkMast.getLocNo()));
+ if(!Cools.isEmpty(agvWrkMastWroking) && agvWrkMastWroking.getWrkSts()<=202){
+ System.out.println("source_loc_no > 1");
+ return false;
+ }
+ log.info(agvWrkMast.toString());
+ int num = agvWrkMastService.selectCount(new EntityWrapper<AgvWrkMast>().eq("loc_no", agvWrkMast.getLocNo()));
+ return num <= maxWrokNum;
+ }).collect(Collectors.toList());
+ }
}
--
Gitblit v1.9.1