From 213fcda9782829abb609e63d87a63964c38b98c6 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期一, 13 十一月 2023 14:54:57 +0800
Subject: [PATCH] 输送线启动入库
---
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java | 139 +++++++++++++++++++++++++--------------------
1 files changed, 77 insertions(+), 62 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 6ac573e..3bc500b 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -9,12 +9,14 @@
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;
@@ -23,7 +25,6 @@
import java.util.Date;
import java.util.Iterator;
import java.util.List;
-import java.util.UUID;
/**
* Created by vincent on 2020/6/11
@@ -69,6 +70,7 @@
鍏ュ簱
*/
@Transactional
+ @Synchronized
public StartupDto createWaitPainWrkMastStart(List<AgvBasDevp> agvBasDevpList, Long userId, boolean isConveyor) {
Date now = new Date();
@@ -116,31 +118,42 @@
agvTaskDtos.forEach(taskDto -> {
- AgvLocMast agvLocMast = agvLocMastService.selectById(taskDto.getLocNo());
- AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", taskDto.getLocNo()));
+ List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectByTaskDto(taskDto);
+
+ //AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", taskDto.getLocNo()));
//宸ヤ綔妗f墍闇�鍙傛暟
- double anfme = taskDto.getLocDtos().get(0).getAnfme();
+
long wrkSts = 21L;
String sourceLocNo = taskDto.getLocNo();
String targetLocNo = taskDto.getAgvStaNo();
- String barcode = agvLocDetl.getSuppCode();
- //鏄庣粏妗f墍闇�鍙傛暟
- String mantr = taskDto.getLocDtos().get(0).getMatnr();
- String orderNo = taskDto.getLocDtos().get(0).getOrderNo();
- String batch = taskDto.getLocDtos().get(0).getBatch();
+ //String barcode = agvLocDetls.get(0).getSuppCode();
+ String containerCode = taskDto.getLocDtos().get(0).getContainerCode();
- String csocode = agvLocDetl.getThreeCode();
- String isoseq = agvLocDetl.getDeadTime();
//鍒ゆ柇鏄惁鍏ㄦ澘鍑哄簱
- int ioType = isPakOut(sourceLocNo,anfme) ? 101 : 103;
+ int ioType = isPakOut(sourceLocNo,taskDto) ? 101 : 103;
//鐢熸垚宸ヤ綔妗�
- AgvWrkMast wrkMast = createWrkMast(ioType,wrkSts,sourceLocNo,targetLocNo,barcode,now,userId,false);
+ AgvWrkMast wrkMast = createWrkMast(ioType,wrkSts,sourceLocNo,targetLocNo,containerCode,now,userId,false);
//鐢熸垚宸ヤ綔妗f槑缁�
- createWrkDetlReWrite(mantr,wrkMast.getWrkNo(),orderNo,batch,anfme,barcode,now,userId,csocode,isoseq);
- //淇敼璁㈠崟淇℃伅
- modifyOrderDetl(taskDto.getLocDtos().get(0), userId);
+ taskDto.getLocDtos().forEach(locDto -> {
+ //鏄庣粏妗f墍闇�鍙傛暟
+ createWrkDetlReWrite(locDto.getMatnr(),
+ wrkMast.getWrkNo(),
+ locDto.getOrderNo(),
+ locDto.getBatch(),
+ locDto.getAnfme(),
+ locDto.getContainerCode(),
+ now,
+ userId,
+ locDto.getCsocode(),
+ locDto.getIsoseq());
+
+ //淇敼璁㈠崟淇℃伅
+ modifyOrderDetl(locDto, userId);
+ });
+// //淇敼璁㈠崟淇℃伅
+// modifyOrderDetl(taskDto.getLocDtos().get(0), userId);
//鏇存柊婧愮珯鐐逛俊鎭�
String locSts = ioType == 101 ? "R" : "P";
updateAgvLocMast(agvLocMastService.selectById(sourceLocNo),locSts);
@@ -169,9 +182,9 @@
agvWrkMast.setIoTime(now);
agvWrkMastService.updateById(agvWrkMast);
- AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
+ List<AgvWrkDetl> agvWrkDetlList = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getLocNo());
- AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvLocMast.getLocNo()));
+ //List<AgvLocDetl> agvLocDetlList = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvLocMast.getLocNo()));
AgvBasDevp agvBasDevp = agvBasDevpService.selectById(agvWrkMast.getSourceLocNo());
//鎷f枡鍏ュ簱
@@ -180,8 +193,13 @@
//agvWrkDetl.setAnfme(agvLocDetl.getAnfme() - agvWrkDetl.getAnfme());
//agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("wrk_no",agvWrkDetl.getWrkNo()));
//淇敼搴撳瓨淇℃伅
- agvLocDetl.setAnfme(agvLocDetl.getAnfme() - agvWrkDetl.getAnfme());
- agvLocDetlService.update(agvLocDetl,new EntityWrapper<AgvLocDetl>().eq("loc_no",agvLocDetl.getLocNo()));
+ agvWrkDetlList.forEach(agvWrkDetl -> {
+ AgvLocDetl agvLocDetl = agvLocDetlService.selectByMatnrAndBatchAndCsocodeAndisoCode(agvWrkMast.getLocNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getBatch(), agvWrkDetl.getThreeCode(), agvWrkDetl.getDeadTime());
+
+ //AgvLocDetl agvLocDetl = agvLocDetlService.selectLocdetl(agvWrkMast.getLocNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getBatch(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
+ double updateAnfme = agvLocDetl.getAnfme() - agvWrkDetl.getAnfme();
+ agvLocDetlService.updateAnfme(updateAnfme,agvLocDetl.getLocNo(),agvLocDetl.getMatnr(),agvLocDetl.getBatch(),agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime());
+ });
}
//淇敼搴撲綅淇℃伅
updateAgvLocMast(agvLocMast,"Q");
@@ -335,7 +353,7 @@
if (!locDetl.getAnfme().equals(adjust.getCount())) {
// todo 鐩樼偣璁板綍
// 淇敼搴撳瓨
- if (!agvLocDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) {
+ if (!agvLocDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime())) {
throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佷慨鏀规暟閲忓け璐�");
}
// 淇濆瓨璋冩暣璁板綍
@@ -350,8 +368,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());
@@ -366,7 +384,7 @@
// 鍒犻櫎搴撳瓨
for (AgvLocDetl locDetl : locDetls) {
// todo 鐩樼偣璁板綍
- if (!agvLocDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) {
+ if (!agvLocDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime())) {
throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�");
}
// 淇濆瓨璋冩暣璁板綍
@@ -380,6 +398,7 @@
adjDetl.setModiUser(userId);
adjDetl.setAppeTime(now);
adjDetl.setAppeUser(userId);
+ adjDetl.setOrderNo(Utils.generateAdjustOrderNo());
adjDetlService.save(adjDetl, userId);
}
@@ -399,6 +418,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 +434,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());
@@ -494,18 +513,25 @@
//鐩爣绔欑偣
String devNo = wrkMast.getLocNo();
agvLocMastService.updateLocStsByLocNo(locNo,"F");
- agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O","");
+ if(devNo.contains("@")){
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O","");
+ }
}
}
//璁㈠崟鍥炴粴
- 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);
- }
+ //List<AgvWrkDetl> agvWrkDetlList = agvWrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+ List<AgvWrkDetl> agvWrkDetlList1 = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+ agvWrkDetlList1.forEach(agvWrkDetl -> {
+
+ 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);
+ }
+ });
+
//淇濆瓨宸ヤ綔妗d互鍙婃槑缁�
agvWrkMastLogService.save(wrkMast);
@@ -530,8 +556,10 @@
鏇存柊婧愮珯鐐逛俊鎭�
*/
private void updateAgvBasDevp(AgvBasDevp agvBasDevp, String locSts){
- agvBasDevp.setLocSts(locSts);
- agvBasDevpService.updateById(agvBasDevp);
+ if(!Cools.isEmpty(agvBasDevp)){
+ agvBasDevp.setLocSts(locSts);
+ agvBasDevpService.updateById(agvBasDevp);
+ }
}
/*
@@ -596,9 +624,6 @@
*/
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));
-// wrkMast.setWrkNo();
//宸ヤ綔鐘舵��
wrkMast.setWrkSts(wrkSts);
//鍏ュ嚭搴撶被鍨�
@@ -614,15 +639,6 @@
wrkMast.setBarcode(barcode);
//鏍囪鏄惁涓鸿緭閫佺嚎鍏ュ簱
wrkMast.setMk(isConveyor ? "Y" : "N");
- // 婊℃澘锛歒
- //wrkMast.setFullPlt("Y");
- // 鎷f枡
- //wrkMast.setPicking("N");
- // 閫�鍑�
- //wrkMast.setExitMk("N");
- // 绌烘澘
- //wrkMast.setEmptyMk("N");
- //wrkMast.setLinkMis("N");
wrkMast.setAppeUser(userId);
wrkMast.setAppeTime(now);
wrkMast.setModiUser(userId);
@@ -631,10 +647,6 @@
if (!agvWrkMastService.insertByIncrease(wrkMast)) {
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
}
-
- int i = agvWrkMastService.selectCount(new EntityWrapper<AgvWrkMast>());
- log.info(i + "");
-
wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no",sourceLocNo));
@@ -679,9 +691,14 @@
return wrkMast;
}
- private boolean isPakOut(String locNo, double anfme){
- AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo));
- if(agvLocDetl.getAnfme() > anfme){
+ private boolean isPakOut(String locNo, TaskDto taskDto){
+ Double allAnfme = agvLocDetlService.selectSumAnfmeByLocNo(locNo);
+ Double pakOutAnfme = 0.0;
+ for (LocDto locDto : taskDto.getLocDtos()){
+ pakOutAnfme += locDto.getAnfme();
+ }
+
+ if(allAnfme > pakOutAnfme){
return false;
}
return true;
@@ -695,11 +712,11 @@
if (!BaseController.isJSON(locDto.getOrderNo())) {
//闈炲悎骞跺嚭搴�
- OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
+ OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getCsocode(),locDto.getIsoseq());
if (orderDetl == null) {
- orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
+ orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq());
}
- if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
+ if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme(),locDto.getCsocode(),locDto.getIsoseq())) {
throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
}
orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
@@ -713,9 +730,9 @@
Double orderAnfme;
for (OrderDto orderDto : orderDtoList) {
- OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
+ OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getCsocode(),locDto.getIsoseq());
if (orderDetl == null) {
- orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null);
+ orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq());
}
if(locAnfme > orderDetl.getAnfme()){
@@ -725,14 +742,12 @@
orderAnfme = locAnfme;
}
- if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme)) {
+ if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme,orderDetl.getThreeCode(),orderDetl.getDeadTime())) {
throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
}
orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
}
}
-
-
}
}
--
Gitblit v1.9.1