From b0a0b73b57e54a4e5e8cd5b8a5fa4fbc2f996656 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期一, 30 十月 2023 08:30:30 +0800
Subject: [PATCH] 输送线调用agv接口不传fromlocationcode
---
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java | 223 ++++++++++++++++++-------------------------------------
1 files changed, 74 insertions(+), 149 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
index cf82a7a..1faa1fc 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -3,19 +3,20 @@
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
-import com.core.common.DateUtils;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.EmptyPlateOutParam;
import com.zy.asrs.entity.param.LocDetlAdjustParam;
import com.zy.asrs.entity.param.StockOutParam;
import com.zy.asrs.service.*;
+import com.zy.asrs.utils.Utils;
import com.zy.common.model.LocDto;
import com.zy.common.model.OrderDto;
import com.zy.common.model.StartupDto;
import com.zy.common.model.TaskDto;
import com.zy.common.service.AgvCommonService;
import com.zy.common.web.BaseController;
+import lombok.Synchronized;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -24,8 +25,6 @@
import java.util.Date;
import java.util.Iterator;
import java.util.List;
-import java.util.UUID;
-import java.util.concurrent.TimeUnit;
/**
* Created by vincent on 2020/6/11
@@ -71,7 +70,8 @@
鍏ュ簱
*/
@Transactional
- public StartupDto createWaitPainWrkMastStart(List<AgvBasDevp> agvBasDevpList, Long userId) {
+ @Synchronized
+ public StartupDto createWaitPainWrkMastStart(List<AgvBasDevp> agvBasDevpList, Long userId, boolean isConveyor) {
Date now = new Date();
@@ -90,7 +90,9 @@
AgvLocMast agvLocMast = agvCommonService.getLocNo(agvWaitPakinList, agvBasDevp.getFloor());
//鐢熸垚宸ヤ綔妗�
//AgvWrkMast wrkMast = createWrkMast(agvBasDevp, agvLocMast, now, userId);
- AgvWrkMast wrkMast = createWrkMast(1,201L,agvBasDevp.getDevNo(),agvLocMast.getLocNo(),agvBasDevp.getBarcode(),now,userId);
+ AgvWrkMast wrkMast = createWrkMast(1,201L,agvBasDevp.getDevNo(),agvLocMast.getLocNo(),agvBasDevp.getBarcode(),now,userId, isConveyor);
+ //鏍囪鏄惁涓鸿緭閫佺嚎鍏ュ簱
+ wrkMast.setMk(isConveyor ? "Y" : "N");
//鐢熸垚宸ヤ綔妗f槑缁�
//createWrkDetlReWrite(agvWaitPakinList,wrkMast,userId);
agvWaitPakinList.forEach(wp -> {
@@ -136,7 +138,7 @@
//鍒ゆ柇鏄惁鍏ㄦ澘鍑哄簱
int ioType = isPakOut(sourceLocNo,anfme) ? 101 : 103;
//鐢熸垚宸ヤ綔妗�
- AgvWrkMast wrkMast = createWrkMast(ioType,wrkSts,sourceLocNo,targetLocNo,barcode,now,userId);
+ AgvWrkMast wrkMast = createWrkMast(ioType,wrkSts,sourceLocNo,targetLocNo,barcode,now,userId,false);
//鐢熸垚宸ヤ綔妗f槑缁�
createWrkDetlReWrite(mantr,wrkMast.getWrkNo(),orderNo,batch,anfme,barcode,now,userId,csocode,isoseq);
//淇敼璁㈠崟淇℃伅
@@ -177,10 +179,10 @@
//鎷f枡鍏ュ簱
if(ioType == 53){
//淇敼宸ヤ綔鍏氭槑缁�
- agvWrkDetl.setAnfme(agvLocDetl.getAnfme() - agvWrkDetl.getAnfme());
- agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("wrk_no",agvWrkDetl.getWrkNo()));
+ //agvWrkDetl.setAnfme(agvLocDetl.getAnfme() - agvWrkDetl.getAnfme());
+ //agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("wrk_no",agvWrkDetl.getWrkNo()));
//淇敼搴撳瓨淇℃伅
- agvLocDetl.setAnfme(agvWrkDetl.getAnfme());
+ agvLocDetl.setAnfme(agvLocDetl.getAnfme() - agvWrkDetl.getAnfme());
agvLocDetlService.update(agvLocDetl,new EntityWrapper<AgvLocDetl>().eq("loc_no",agvLocDetl.getLocNo()));
}
//淇敼搴撲綅淇℃伅
@@ -214,7 +216,7 @@
Date now = new Date();
//鐢熸垚宸ヤ綔鍏�
- AgvWrkMast wrkMast = createWrkMast(107, 21L, locDetl.getLocNo(), agvBasDevp.getDevNo(), agvLocDetl.getSuppCode(), now, userId);
+ AgvWrkMast wrkMast = createWrkMast(107, 21L, locDetl.getLocNo(), agvBasDevp.getDevNo(), agvLocDetl.getSuppCode(), now, userId,false);
//鐢熸垚宸ヤ綔鏄庣粏妗�
createWrkDetlReWrite(locDetl.getMatnr(),wrkMast.getWrkNo(),null,locDetl.getBatch(),locDetl.getCount(),wrkMast.getBarcode(),now,userId,agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime());
//淇敼搴撲綅淇℃伅
@@ -244,7 +246,7 @@
Date now = new Date();
//鐢熸垚绉诲簱宸ヤ綔妗�
- AgvWrkMast wrkMast = createWrkMast(11, 21L, sourceLocNo, targetLocNo, sourceLocDetl.getSuppCode(), now, userId);
+ AgvWrkMast wrkMast = createWrkMast(11, 21L, sourceLocNo, targetLocNo, sourceLocDetl.getSuppCode(), now, userId,false);
//鐢熸垚宸ヤ綔鍏氭槑缁�
createWrkDetlReWrite(sourceLocDetl.getMatnr(),wrkMast.getWrkNo(),null,sourceLocDetl.getBatch(),sourceLocDetl.getAnfme(),sourceLocDetl.getZpallet(),now,userId,sourceLocDetl.getThreeCode(),sourceLocDetl.getDeadTime());
//淇敼鐩爣搴撲綅鐘舵��
@@ -267,7 +269,7 @@
// 妫�绱㈠簱浣�
AgvLocMast locMast = agvCommonService.getLocNo(null, agvBasDevp.getFloor());
// 鐢熸垚宸ヤ綔妗� 10.绌烘澘鍏ュ簱
- createWrkMast(10,201L,agvBasDevp.getDevNo(),locMast.getLocNo(),null,now,userId);
+ createWrkMast(10,201L,agvBasDevp.getDevNo(),locMast.getLocNo(),null,now,userId,false);
//鏇存柊婧愮珯鐐圭姸鎬�
updateAgvBasDevp(agvBasDevp,"R");
//鏇存柊鐩爣搴撲綅鐘舵��
@@ -298,7 +300,7 @@
.eq("station_code", param.getStationCode())
.eq("loc_sts", "O"));
//鐢熸垚宸ヤ綔妗�
- createWrkMast(110,21L,locNo,agvBasDevp.getDevNo(),null,now,userId);
+ createWrkMast(110,21L,locNo,agvBasDevp.getDevNo(),null,now,userId,false);
//淇敼婧愬簱浣嶇姸鎬�
updateAgvLocMast(agvLocMast,"R");
//淇敼鐩爣宸ヤ綔浣嶇姸鎬�
@@ -350,8 +352,8 @@
adjDetl.setAppeTime(now);
adjDetl.setAppeUser(userId);
- UUID uuid = UUID.randomUUID();
- adjDetl.setOrderNo(uuid.toString());
+ adjDetl.setOrderNo(Utils.generateAdjustOrderNo());
+
adjDetl.setCsocode(locDetl.getThreeCode());
adjDetl.setIsoseq(locDetl.getDeadTime());
@@ -380,6 +382,7 @@
adjDetl.setModiUser(userId);
adjDetl.setAppeTime(now);
adjDetl.setAppeUser(userId);
+ adjDetl.setOrderNo(Utils.generateAdjustOrderNo());
adjDetlService.save(adjDetl, userId);
}
@@ -399,6 +402,7 @@
locDetl.setAppeTime(now);
locDetl.setThreeCode(adjust.getThreeCode());
locDetl.setDeadTime(adjust.getDeadTime());
+ locDetl.setSuppCode(adjust.getSuppCode());
if (!agvLocDetlService.insert(locDetl)) {
throw new CoolException("娣诲姞" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�");
}
@@ -414,8 +418,7 @@
adjDetl.setAppeTime(now);
adjDetl.setAppeUser(userId);
- UUID uuid = UUID.randomUUID();
- adjDetl.setOrderNo(uuid.toString());
+ adjDetl.setOrderNo(Utils.generateAdjustOrderNo());
adjDetl.setCsocode(locDetl.getThreeCode());
adjDetl.setIsoseq(locDetl.getDeadTime());
@@ -447,26 +450,22 @@
if (Cools.isEmpty(wrkMast)){
throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
}
- if (wrkMast.getWrkSts() == 9 || wrkMast.getWrkSts() == 29) {
- throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
+
+ if(wrkMast.getWrkSts() > 202){
+ //淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚
+ agvWrkMastService.updateWrkStsByWrkNo(wrkMast.getWrkNo(),205);
+
+ //鍑哄簱浠诲姟 101.鍑哄簱 || 103.鎷f枡鍑哄簱 || 107.鐩樼偣鍑哄簱
+ if(wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107){
+ //淇敼鍑哄簱绔欑偣鐘舵��
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getLocNo(),"F",wrkMast.getBarcode());
+ }
+ //鍑哄簱浠诲姟 110.绌烘澘鍑哄簱
+ if(wrkMast.getIoType() == 110){
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getLocNo(),"F",wrkMast.getBarcode());
+ }
}
- // 鍏ュ簱 + 搴撲綅杞Щ
- if (wrkMast.getWrkSts() < 9 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) {
- wrkMast.setWrkSts(9L);
- // 鍑哄簱
- } else if (wrkMast.getWrkSts() > 20) {
- wrkMast.setWrkSts(29L);
- }
- Date now = new Date();
- wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true));
- wrkMast.setCrnEndTime(now);
- wrkMast.setModiTime(now);
- wrkMast.setModiUser(userId);
- // 瀹屾垚鎿嶄綔浜哄憳璁板綍
- wrkMast.setManuType("鎵嬪姩瀹屾垚");
- if (!agvWrkMastService.updateById(wrkMast)) {
- throw new CoolException("淇敼宸ヤ綔妗eけ璐�");
- }
+
}
@Transactional
@@ -475,125 +474,51 @@
if (Cools.isEmpty(wrkMast)){
throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
}
-
- if (wrkMast.getWrkSts() == 200) {
- //灏忚溅绉诲簱浠诲姟锛岀洿鎺ュ垹闄ゅ伐浣滄。
- agvWrkMastService.deleteById(wrkMast);
- return;
+ //鎷f枡鍏ュ簱 鐩樼偣鍏ュ簱涓嶅彲鍙栨秷
+ if(wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57){
+ throw new CoolException("褰撳墠浠诲姟涓嶅彲鍙栨秷");
}
- String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣�
- String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬�
- // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級
- if (wrkMast.getWrkSts() < 9) {
- locNo = wrkMast.getLocNo();
- locSts = "O";
+ //AGV鏈哄櫒浜烘湭鍙栬揣鍓嶅彇娑�
+ if(wrkMast.getWrkSts() < 203){
+ //鍏ュ簱鍙栨秷
+ if(wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10){
+ //婧愮珯鐐�
+ String devNo = wrkMast.getSourceLocNo();
+ //鐩爣搴撲綅
+ String locNo = wrkMast.getLocNo();
+ agvLocMastService.updateLocStsByLocNo(locNo,"O");
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"F",wrkMast.getBarcode());
- // 搴撲綅杞Щ
- if (wrkMast.getIoType() == 11) {
- // 搴撲綅杞Щ锛氭簮搴撲綅
- AgvLocMast locMast = agvLocMastService.selectById(wrkMast.getSourceLocNo());
- if (Cools.isEmpty(locMast)) {
- throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:"+ wrkMast.getSourceLocNo());
- }
- locMast.setLocSts("F");
- locMast.setModiTime(new Date());
- locMast.setModiUser(userId);
- agvLocMastService.updateById(locMast);
+ //鍑哄簱鍙栨秷
+ }else {
+ //婧愬簱浣�
+ String locNo = wrkMast.getSourceLocNo();
+ //鐩爣绔欑偣
+ String devNo = wrkMast.getLocNo();
+ agvLocMastService.updateLocStsByLocNo(locNo,"F");
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O","");
}
- // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛�
- } else if (wrkMast.getWrkSts() > 20) {
- locNo = wrkMast.getSourceLocNo();
- // 鍑哄簱 ===>> F.鍦ㄥ簱
- if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
- locSts = "F";
- // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉�
- } else if (wrkMast.getIoType() == 110) {
- locSts = "D";
- // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉�
- } else if (wrkMast.getIoType() == 11) {
- locSts = wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F";
- // 搴撲綅杞Щ锛氱洰鏍囧簱浣�
- AgvLocMast locMast = agvLocMastService.selectById(wrkMast.getLocNo());
- if (Cools.isEmpty(locMast)) {
- throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛岀洰鏍囧簱浣嶄笉瀛樺湪:"+ wrkMast.getSourceLocNo());
- }
- locMast.setLocSts("O");
- locMast.setModiTime(new Date());
- locMast.setModiUser(userId);
- agvLocMastService.updateById(locMast);
- }
- } else {
- throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曞彇娑�");
- }
- // 璁㈠崟鍏宠仈
- List<AgvWrkDetl> wrkDetls = agvWrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
- for (AgvWrkDetl wrkDetl : wrkDetls) {
- if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
- if (!BaseController.isJSON(wrkDetl.getOrderNo())) {
- if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
- throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
- }
- } else {
- // 璁㈠崟鍚堝苟鍑哄簱
- //瀹為檯鍙栨秷鐨勫嚭搴撴暟閲�
- Double wrkDetlAnfme = wrkDetl.getAnfme();
- //璁㈠崟瀹為檯鍑哄簱鏁伴噺
- Double orderAnfme;
-
- List<OrderDto> orderDtoList = JSON.parseArray(wrkDetl.getOrderNo(), OrderDto.class);
- for (OrderDto orderDto : orderDtoList) {
-
- if(wrkDetlAnfme > orderDto.getAnfme()){
- orderAnfme = orderDto.getAnfme();
- wrkDetlAnfme -= orderAnfme;
- }else {
- orderAnfme = wrkDetlAnfme;
- }
-
- if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderAnfme)) {
- throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
- }
- }
- }
- }
- }
- // 鍙栨秷鎿嶄綔浜哄憳璁板綍
- wrkMast.setManuType("鎵嬪姩鍙栨秷");
- wrkMast.setModiUser(userId);
- wrkMast.setModiTime(new Date());
- if (!agvWrkMastService.updateById(wrkMast)) {
- throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐�");
- }
- // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
- if (!agvWrkMastLogService.save(wrkMast)) {
- throw new CoolException("淇濆瓨宸ヤ綔鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo());
- }
- // 鍒犻櫎宸ヤ綔涓绘。
- boolean wrkMastRes = agvWrkMastService.deleteById(wrkMast);
-
- if (wrkMast.getIoType() != 10 && wrkMast.getIoType() != 110) {
- // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
- if (!agvWrkDetlLogService.save(wrkMast.getWrkNo())) {
-// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo());
- }
- // 鍒犻櫎宸ヤ綔妗f槑缁�
- boolean wrkDetlRes = agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", workNo));
}
- // 淇敼搴撲綅鐘舵��
- AgvLocMast locMast = agvLocMastService.selectById(locNo);
- if (Cools.isEmpty(locMast)) {
- throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:"+ locNo);
+ //璁㈠崟鍥炴粴
+ AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectByWrkNo(wrkMast.getWrkNo()).get(0);
+ if(!Cools.isEmpty(agvWrkDetl.getOrderNo())){
+ OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(agvWrkDetl.getOrderNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
+ orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme());
+ orderDetlService.updateById(orderDetl);
}
- locMast.setLocSts(locSts);
- locMast.setModiTime(new Date());
- locMast.setModiUser(userId);
- boolean locMastRes = agvLocMastService.updateById(locMast);
- if (!wrkMastRes || !locMastRes) {
- throw new CoolException("淇濆瓨鏁版嵁澶辫触");
+
+ //淇濆瓨宸ヤ綔妗d互鍙婃槑缁�
+ agvWrkMastLogService.save(wrkMast);
+ agvWrkDetlLogService.save(wrkMast.getWrkNo());
+
+ //鍒犻櫎宸ヤ綔妗d互鍙婃槑缁�
+ if(!agvWrkMastService.deleteByWrkNo(wrkMast.getWrkNo()) || !agvWrkDetlService.deleteByWrkNo(wrkMast.getWrkNo())){
+ throw new CoolException("鍒犻櫎澶辫触锛岃鑱旂郴绠$悊鍛�");
}
+
}
/*
@@ -672,7 +597,7 @@
/*
鐢熸垚宸ヤ綔妗�
*/
- private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId){
+ private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, boolean isConveyor){
AgvWrkMast wrkMast = new AgvWrkMast();
//鐢熸垚宸ヤ綔鍙�
// int workNo = agvCommonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
@@ -690,6 +615,8 @@
wrkMast.setLocNo(locNo);
//瀹瑰櫒缂栫爜
wrkMast.setBarcode(barcode);
+ //鏍囪鏄惁涓鸿緭閫佺嚎鍏ュ簱
+ wrkMast.setMk(isConveyor ? "Y" : "N");
// 婊℃澘锛歒
//wrkMast.setFullPlt("Y");
// 鎷f枡
@@ -807,8 +734,6 @@
orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
}
}
-
-
}
}
--
Gitblit v1.9.1