From 984039880e1f6ccc4cb61c35e0004147aa46d5bc Mon Sep 17 00:00:00 2001
From: whycq <913841844@qq.com>
Date: 星期六, 21 九月 2024 11:20:39 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java | 571 ++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 444 insertions(+), 127 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 f7f3e71..b895aad 100644
--- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -3,11 +3,13 @@
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
+import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
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;
@@ -15,8 +17,10 @@
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
+import java.util.Date;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
@Slf4j
@Service
@@ -45,177 +49,440 @@
private OrderService orderService;
@Autowired
private AgvBasDevpService agvBasDevpService;
+ @Autowired
+ private AgvWorkService agvWorkService;
@Transactional
public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) {
- int wrkNo = agvWrkMast.getWrkNo();
- String barcode = agvWrkMast.getBarcode();
- String orderNo = getOrderNoByWrkNo(wrkNo);
+ try{
+ int wrkNo = agvWrkMast.getWrkNo();
+ String barcode = agvWrkMast.getBarcode();
+ String orderNo = getOrderNoByWrkNo(wrkNo);
+ String agvBasDevp = "";
+ if (agvWrkMast.getIoType() > 100) {
+ agvBasDevp = agvWrkMast.getLocNo();
+ } else {
+ agvBasDevp = agvWrkMast.getSourceLocNo();
+ }
- //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚
- agvWrkMast.setWrkSts(207L);
- agvWrkMastService.updateById(agvWrkMast);
- if(agvWrkMast.getIoType() == 10){
+
+ agvWrkMast.setModiTime(new Date());
+ //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚
+ agvWrkMast.setWrkSts(207L);
+ agvWrkMastService.updateById(agvWrkMast);
// 绌烘澘鍏ュ簱 璁剧疆搴撲綅鐘舵�佷负D.绌烘《/绌烘爤鏉�
- agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D");
- }else{
- //淇敼鐩爣搴撲綅鐘舵�佷负F.鍦ㄥ簱
- agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F");
- }
- //鐢熸垚AGV宸ヤ綔鍘嗗彶妗�
- agvWrkMastLogService.save(agvWrkMast);
- //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
- agvWrkDetlLogService.save(wrkNo);
- //绫诲瀷涓哄叆搴撴椂
- 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");
- }
+ String locSts = agvWrkMast.getIoType() == 10 ? "D" : "F";
- //鍒犻櫎AGV宸ヤ綔妗�
- agvWrkMastService.deleteById(wrkNo);
- //鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
- agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
+ if (agvWrkMast.getIoType() != 111) {
+ //鐢熸垚AGV宸ヤ綔鍘嗗彶妗�
+ agvWrkMastLogService.save(agvWrkMast);
+ //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
+ agvWrkDetlLogService.save(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);
- });
+ switch (agvWrkMast.getIoType()){
+ case 1:
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+ //鏇存柊鐩爣搴撲綅鏄庣粏
+ 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));
+ break;
+ case 10:
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0);
+ break;
+ case 11:
+ case 12:
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+ //鏇存柊搴撳瓨鏄庣粏
+ agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo());
+ //淇敼婧愬簱浣嶇姸鎬佷负O
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
+ break;
+ case 53:
+ //淇敼宸ヤ綔鍏氭槑缁�
+ //淇敼搴撳瓨淇℃伅
+ List<AgvWrkDetl> agvWrkDetlList = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
+ agvWrkDetlList.forEach(agvWrkDetl -> {
+ AgvLocDetl agvLocDetl = agvLocDetlService.selectByMatnrAndBatchAndCsocodeAndisoCode(agvWrkMast.getLocNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getBatch(), agvWrkDetl.getThreeCode(), agvWrkDetl.getDeadTime());
+ if (!Cools.isEmpty(agvLocDetl)) {
+ double updateAnfme = agvLocDetl.getAnfme() - agvWrkDetl.getAnfme();
+ agvLocDetlService.updateAnfme(updateAnfme,agvLocDetl.getLocNo(),agvLocDetl.getMatnr(),agvLocDetl.getBatch(),agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime());
+ }
+ //AgvLocDetl agvLocDetl = agvLocDetlService.selectLocdetl(agvWrkMast.getLocNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getBatch(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
+
+ });
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue());
+ break;
+ case 57:
+ Date now = new Date();
+ // 鏇存柊搴撳瓨鏄庣粏
+ List<AgvWrkDetl> wrkDetlList = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
+ wrkDetlList.forEach(agvWrkDetl -> {
+ AgvLocDetl agvLocDetl = new AgvLocDetl();
+ agvLocDetl.setLocNo(agvWrkMast.getLocNo());
+ agvLocDetl.sync(agvWrkDetl);
+ agvLocDetl.setModiTime(now);
+ agvLocDetl.setAppeTime(now);
+ if (!agvLocDetlService.insert(agvLocDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+ }
+ });
+ // 鏇存柊绔欑偣 + 搴撲綅鐘舵�� 婧愬簱浣嶆槸绔欑偣
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue());
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+ break;
+ case 58:
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue());
+ break;
+ case 108:
+ case 114:
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+ //鏇存柊搴撳瓨鏄庣粏
+ agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo());
+ //淇敼婧愬簱浣嶇姸鎬佷负O
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
+ break;
+ case 109:
+ // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅
+ if (agvWrkMast.getLocNo().substring(0,2).equals("DB")) {
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+ // 鎺ラ┏浣� -- 搴撲綅
+ } else {
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+ }
+ // 鎺ラ┏浣� -- 搴撲綅
+ if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) {
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0);
+ // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅
+ } else {
+ //淇敼婧愬簱浣嶇姸鎬佷负O
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
+ }
+ break;
+ case 111:
+ // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅
+ if (agvWrkMast.getLocNo().substring(0,2).equals("DB")) {
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+ // 鎺ラ┏浣� -- 搴撲綅
+ } else {
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+ }
+
+ // 鎺ラ┏浣� -- 搴撲綅
+ if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) {
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0);
+ // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅
+ } else {
+ //淇敼婧愬簱浣嶇姸鎬佷负O
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
+ //鏇存柊鐩爣搴撲綅鏄庣粏 101.鍑哄簱 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁�
+ agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo()));
+ }
+ break;
+ case 112:
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+ List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
+ for (AgvWrkDetl agvWrkDetl : agvWrkDetls) {
+ AgvLocDetl locDetl = new AgvLocDetl();
+ locDetl.setLocNo(agvWrkMast.getLocNo());
+ locDetl.sync(agvWrkDetl);
+ locDetl.setModiTime(new Date());
+ agvLocDetlService.insert(locDetl);
+ }
+ // 鎺ラ┏浣� -- 搴撲綅
+ if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) {
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0);
+ // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅
+ } else {
+ //淇敼婧愬簱浣嶇姸鎬佷负O
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
+ }
+ break;
+ case 113:
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+ // 鎺ラ┏浣� -- 搴撲綅
+ if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) {
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0);
+ }
+ break;
+ case 121:
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+ //鏇存柊搴撳瓨鏄庣粏
+ agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo());
+ //淇敼婧愬簱浣嶇姸鎬佷负O
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
+ break;
+
+ default:
+ return null;
+ }
+ if (agvWrkMast.getIoType() != 111) {
+ //鍒犻櫎AGV宸ヤ綔妗�
+ agvWrkMastService.deleteById(wrkNo);
+ //鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
+ agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
+ }
+// else {
+// agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"O","",agvWrkMast.getWhsType().shortValue());
+// if (!agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) {
+// agvWrkMast.setSourceLocNo("");
+// }
+// agvWrkMastService.updateById(agvWrkMast);
+// }
+
+ 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;
+ }catch (Exception e){
+ log.error(""+e.getMessage());
}
-
- return SUCCESS;
+ return FAIL;
}
@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()));
- }
+ try{
+ Date now = new Date();
+ int wrkNo = agvWrkMast.getWrkNo();
+ String orderNo = getOrderNoByWrkNo(wrkNo);
+ //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚
+ agvWrkMast.setWrkSts(207L);
+ agvWrkMast.setModiTime(new Date());
+ agvWrkMastService.updateById(agvWrkMast);
+ //淇敼婧愬簱浣嶇姸鎬佷负O
+ if (agvWrkMast.getIoType() == 110) {
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
+ }
+ if(agvWrkMast.getIoType() == 101){
+ //鏇存柊鐩爣搴撲綅鏄庣粏 101.鍑哄簱 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁�
+ agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo()));
+ //鐢熸垚绌烘澘鍏ュ簱浠诲姟
+ Short containerType = Short.valueOf(agvWrkMast.getBarcode().substring(0, 2));
+ try {
+// agvWorkService.emptyPlateIn(agvWrkMast.getLocNo(),agvWrkMast.getBarcode(),containerType,9527L,true);
+ AgvWrkMast wrkMast = new AgvWrkMast();
+ //宸ヤ綔鐘舵��
+ wrkMast.setWrkSts(201L);
+ //鍏ュ嚭搴撶被鍨�
+ wrkMast.setIoType(10);
+ wrkMast.setIoTime(now);
+ //浼樺厛绾�
+ wrkMast.setIoPri(300.0);
+ //婧愮珯鐐�
+ wrkMast.setSourceLocNo(agvWrkMast.getLocNo());
+ //鐩爣绔欑偣
+ wrkMast.setLocNo(agvWrkMast.getSourceLocNo());
+ //璐ф灦缂栫爜
+ wrkMast.setBarcode(agvWrkMast.getBarcode());
+ //璐ф灦绫诲瀷
+ wrkMast.setWhsType(Integer.valueOf(agvWrkMast.getBarcode().substring(0, 2)));
- //鐢熸垚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;
- }
+ wrkMast.setAppeUser(9527L);
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(9527L);
+ wrkMast.setModiTime(now);
+ wrkMast.setLogErrMemo("completedCarryWrk");
- @Transactional
- public ReturnT<String> startPutWayWrk(List<AgvWrkMast> agvWrkMastList) throws IOException {
-
- //涓嬪彂浠诲姟
- 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;
+ if (!agvWrkMastService.insertByIncrease(wrkMast)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
}
- }
+ AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getSourceLocNo());
+ agvLocMast.setLocSts("S");
+ agvLocMast.setModiTime(now);
+ agvLocMastService.updateById(agvLocMast);
- //202.RCS鍙栬揣涓�
- agvWrkMast.setWrkSts(202L);
- agvWrkMastService.updateById(agvWrkMast);
- if(agvWrkMast.getIoType() == 1){
- //淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y
- agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y");
+ AgvBasDevp agvBasDevp = agvBasDevpService.selectById(agvWrkMast.getLocNo());
+ agvBasDevp.setLocSts("R");
+ agvBasDevp.setLocType2(Short.valueOf(agvWrkMast.getBarcode().substring(0, 2)));
+ agvBasDevpService.updateById(agvBasDevp);
+ }catch (Exception e){
+ e.printStackTrace();
+ log.error(e.getMessage());
}
}
+ //鐢熸垚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;
+ }catch (Exception e){
+ log.error(""+e.getMessage());
}
-
return FAIL;
}
@Transactional
- public ReturnT<String> startCarryWrk(List<AgvWrkMast> agvWrkMastList) throws IOException {
- int code = agvWrkMastService.startWrk(agvWrkMastList,"carry");
- if(code == 0){
- agvWrkMastList.forEach(agvWrkMast -> {
- //202.RCS鍙栬揣涓�
- agvWrkMast.setWrkSts(202L);
- agvWrkMastService.updateById(agvWrkMast);
- });
- //agvWrkMastService.updateBatchById(agvWrkMastList);
+ public ReturnT<String> completedCarryWrk2(AgvWrkMast agvWrkMast) {
+ try{
+ int wrkNo = agvWrkMast.getWrkNo();
+ String orderNo = getOrderNoByWrkNo(wrkNo);
+ String agvBasDevp = "";
+ if (agvWrkMast.getIoType() > 100) {
+ agvBasDevp = agvWrkMast.getLocNo();
+ } else {
+ agvBasDevp = agvWrkMast.getSourceLocNo();
+ }
+ //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚
+ agvWrkMast.setWrkSts(207L);
+ agvWrkMast.setModiTime(new Date());
+ agvWrkMastService.updateById(agvWrkMast);
+ //淇敼婧愬簱浣嶇姸鎬佷负O
+ agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
+ 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;
+ }catch (Exception e){
+ log.error(""+e.getMessage());
}
-
return FAIL;
}
+ @Transactional
+ @Synchronized
+ public ReturnT<String> startPutWayWrk(AgvWrkMast agvWrkMast) throws IOException {
+
+ try{
+ //涓嬪彂浠诲姟
+ int startWrkCode = agvWrkMastService.startWrk(agvWrkMast);
+ if(startWrkCode != 0){
+ throw new CoolException("浠诲姟涓嬪彂澶辫触");
+ }
+
+ agvWrkMast.setWrkSts(202L);
+ agvWrkMast.setModiTime(new Date());
+ agvWrkMastService.updateById(agvWrkMast);
+ if(agvWrkMast.getIoType() == 1){
+ //淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y
+ agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y");
+ }
+ return SUCCESS;
+ }catch (Exception e){
+ log.error("淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y"+e.getMessage());
+ }
+ return FAIL;
+ }
+
+ @Transactional
+ @Synchronized
+ public ReturnT<String> startAllcationIn(AgvWrkMast agvWrkMast) throws IOException {
+
+ //涓嬪彂浠诲姟
+ try{
+ int startWrkCode = agvWrkMastService.startAllcationIn(agvWrkMast);
+ if(startWrkCode != 0){
+ throw new CoolException("浠诲姟涓嬪彂澶辫触");
+ }
+ return SUCCESS;
+ }catch (Exception e){
+ log.error("浠诲姟涓嬪彂澶辫触"+e.getMessage());
+ }
+ return FAIL;
+
+ }
+
+// @Transactional
+// public ReturnT<String> startCarryWrk(AgvWrkMast agvWrkMast) throws IOException {
+// //log.info(agvWrkMastList.toString());
+// //浠诲姟杩囨护锛岃繃婊ゆ帀宸插瓨鍦ㄧ浉鍚岀洰鏍囧簱浣嶇殑宸ヤ綔妗�
+// //agvWrkMastList = filter(agvWrkMastList);
+// int code = agvWrkMastService.startWrk(agvWrkMast);
+// //log.info(agvWrkMastList.toString());
+// if (Cools.isEmpty(agvWrkMastList)){
+// return SUCCESS;
+// }
+// if(code == 0){
+// agvWrkMastList.forEach(agvWrkMast -> {
+// //202.RCS鍙栬揣涓�
+// agvWrkMast.setWrkSts(202L);
+// agvWrkMastService.updateById(agvWrkMast);
+// });
+// //agvWrkMastService.updateBatchById(agvWrkMastList);
+//
+// return SUCCESS;
+// }
+//
+// return FAIL;
+// }
+
+ @Synchronized
+ @Transactional
public ReturnT<String> dealWatiWrk(List<AgvWrkMast> agvWrkMastList) throws IOException {
agvWrkMastList.forEach(agvWrkMast -> {
-// //瀵绘壘绌虹珯鐐逛綅缃�
-// AgvBasDevp agvBasDevp = agvBasDevpService.selectEmptyDevpByStation(agvWrkMast.getLocNo());
-// if(!Cools.isEmpty(agvBasDevp)){
-// agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvBasDevp.getDevNo(),"S",null);
-// agvWrkMast.setLocNo(agvBasDevp.getDevNo());
-// agvWrkMastService.updateById(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());
+ agvWrkMast.setModiTime(new Date());
agvWrkMastService.updateById(agvWrkMast);
+ log.info("after锛�" + devNoMap.toString() + ", wrkNo:" + agvWrkMast.getWrkNo() + ", locNo: " + agvWrkMast.getLocNo());
}
-
});
+
+ return SUCCESS;
+ }
+
+ @Synchronized
+ @Transactional
+ public ReturnT<String> autoEmptyOut(AgvBasDevp agvBasDevp) {
+
+ agvWorkService.emptyPlateOut(agvBasDevp.getDevNo(),0,9527L);
return SUCCESS;
}
@@ -242,4 +509,54 @@
}
}
}
+
+ 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());
+ }
+
+ /*
+ 鐢熸垚宸ヤ綔妗�
+ */
+ private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, int containerType, int floor){
+ AgvWrkMast wrkMast = new AgvWrkMast();
+ //宸ヤ綔鐘舵��
+ wrkMast.setWrkSts(wrkSts);
+ //鍏ュ嚭搴撶被鍨�
+ wrkMast.setIoType(ioType);
+ wrkMast.setIoTime(now);
+ //浼樺厛绾�
+ wrkMast.setIoPri(300.0);
+ //婧愮珯鐐�
+ wrkMast.setSourceLocNo(sourceLocNo);
+ //鐩爣绔欑偣
+ wrkMast.setLocNo(locNo);
+ //璐ф灦缂栫爜
+ wrkMast.setBarcode(barcode);
+ //璐ф灦绫诲瀷
+ wrkMast.setWhsType(containerType);
+ // 鐩爣妤煎眰
+ wrkMast.setCrnNo(floor);
+
+ wrkMast.setAppeUser(userId);
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(now);
+
+ if (!agvWrkMastService.insertByIncrease(wrkMast)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+
+ wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no",sourceLocNo).eq("barcode",barcode).orderBy("modi_time",false));
+
+ return wrkMast;
+ }
}
--
Gitblit v1.9.1