From e90dba0edc93be26e1509cfb2ec1d0681eb86e48 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期三, 27 八月 2025 08:37:04 +0800
Subject: [PATCH] 合并出库添加日志
---
src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java | 593 +++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 457 insertions(+), 136 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
index c12b79e..4b28cff 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -1,14 +1,14 @@
package com.zy.asrs.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
import com.core.common.Cools;
-import com.core.common.R;
import com.core.exception.CoolException;
+import com.zy.asrs.constant.AsrsConstants;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.service.*;
+import com.zy.asrs.utils.CodeDetectionUtil;
import com.zy.common.model.DetlDto;
import com.zy.common.service.AgvCommonService;
import lombok.Synchronized;
@@ -18,9 +18,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -68,7 +66,10 @@
if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) {
throw new CoolException(BaseRes.PARAM);
}
- param.setContainerType(Short.valueOf(param.getBarcode().substring(0,2)));
+ if (!CodeDetectionUtil.barcodeDetection(param.getBarcode())) {
+ throw new CoolException(param.getBarcode() + "璐ф灦鐮佹湁璇紝璇锋纭壂鐮侊紒锛侊紒");
+ }
+ param.setContainerType(Short.valueOf(param.getBarcode().substring(0, 2)));
// //妫�鏌ユ槸鍚﹀凡瀛樺湪鐩稿悓鐨勮揣鏋舵潯鐮侊紝瀛樺湪鍒欐姏鍑哄紓甯�
// if (agvWaitPakinService.selectCount(new EntityWrapper<AgvWaitPakin>().eq("supp_code", param.getBarcode())) > 0) {
@@ -76,32 +77,43 @@
// }
//妫�鏌ュ簱瀛樻槸鍚︽湁鐩稿悓璐ф灦锛屽瓨鍦ㄥ垯鎶涘嚭寮傚父
- if(!Cools.isEmpty(agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("supp_code",param.getBarcode())))){
+ if (!Cools.isEmpty(agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("supp_code", param.getBarcode())))) {
throw new CoolException(param.getBarcode() + "璐ф灦鐮佸凡瀛樺湪AGV搴撳瓨鏄庣粏涓�");
}
//妫�鏌ュ簱瀛樻槸鍚︽湁鐩稿悓璐ф灦锛屽瓨鍦ㄥ垯鎶涘嚭寮傚父
- if(!Cools.isEmpty(agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("barcode",param.getBarcode())))){
+ if (!Cools.isEmpty(agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("barcode", param.getBarcode())))) {
throw new CoolException(param.getBarcode() + "璐ф灦鐮佸凡瀛樺湪AGV搴撳瓨涓绘。涓�");
}
//鏌ョ湅宸ヤ綔妗f槸鍚︽湁鐩稿悓璐ф灦锛屽瓨鍦ㄥ垯鎶涘嚭寮傚父
- if(!Cools.isEmpty(agvWrkMastService.selectByContainerCode(param.getBarcode()))){
+ if (!Cools.isEmpty(agvWrkMastService.selectByContainerCode(param.getBarcode()))) {
throw new CoolException(param.getBarcode() + "璐ф灦鐮佸凡瀛樺湪AGV宸ヤ綔妗d腑");
+ }
+ //鍒ゆ柇鏄惁鏈夌浉鍚屾槑缁�
+ List<CombParam.CombMat> combMats = param.getCombMats();
+ Map<String, String> data = new HashMap<>();
+ for (CombParam.CombMat combMat : combMats) {
+ String matnr = combMat.getMatnr();
+ String csocode = combMat.getCsocode();
+ if (data.get(matnr + csocode) != null) {
+ throw new CoolException("鏄庣粏涓瓨鍦ㄧ浉鍚岀墿鏂欏彿鍜岃鍗曞彿");
+ }
+ data.put(matnr + csocode, matnr + csocode);
}
if (Cools.isEmpty(param.getOrderNo())) {
//鏃犲崟缁勬墭
- NoOrderComb(param,userId);
- }else {
+ NoOrderComb(param, userId);
+ } else {
//鏈夊崟缁勬墭
- OrderComb(param,userId);
+ OrderComb(param, userId);
}
- if(StringUtils.isEmpty(param.getLocno())){
+ if (StringUtils.isEmpty(param.getLocno())) {
return "缁勬墭鎴愬姛";
- }else {
- combBinding(param.getBarcode(),param.getLocno(),param.getContainerType());
+ } else {
+ combBinding(param.getBarcode(), param.getLocno(), param.getContainerType());
return "缁勬墭鎴愬姛锛岀粦瀹氱珯鐐规垚鍔�";
}
@@ -112,92 +124,115 @@
*/
@Override
@Transactional
- public String pickAgain(PickParam pickParams, Long userId) {
+ public synchronized String pickAgain(PickParam pickParams, Long userId) {
Date now = new Date();
List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", pickParams.getLocNo()));
+ AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("wrk_no", pickParams.getWrkNo()));
+
+ if (Cools.isEmpty(agvWrkMast)) {
+ return "澶辫触锛屾湭鏌ュ埌宸ヤ綔涓绘。锛屽伐浣滃彿锛�" + pickParams.getWrkNo();
+ }
for (PickParam.Pick pick : pickParams.getPicks()) {
if (pick.getCount().equals(0D)) continue;
+
Double count = 0.0D;
- AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("matnr", pick.getMatnr()).eq("three_code", pick.getThreeCode()).eq("supp_code",pick.getSuppCode()));
+ AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("matnr", pick.getMatnr()).eq("three_code", pick.getThreeCode()).eq("supp_code", pick.getSuppCode()));
+
if (Cools.isEmpty(agvWrkDetl)) {
- AgvWrkDetl wrkDetl = new AgvWrkDetl();
+ agvWrkDetl = new AgvWrkDetl();
Mat mat = matService.selectByMatnr(pick.getMatnr());
if (Cools.isEmpty(mat)) {
throw new CoolException(pick.getMatnr() + "鍟嗗搧涓嶅瓨鍦�");
}
- wrkDetl.sync(mat);
- wrkDetl.setWrkNo(pickParams.getWrkNo());
- wrkDetl.setOrderNo(pick.getOrderNo());
- wrkDetl.setIoTime(now);
- wrkDetl.setAnfme(pick.getCount()); // 鏁伴噺
- wrkDetl.setSuppCode(pick.getSuppCode()); // 璐ф灦鏉$爜
- wrkDetl.setAppeUser(userId);
- wrkDetl.setAppeTime(now);
- wrkDetl.setModiUser(userId);
- wrkDetl.setModiTime(now);
- wrkDetl.setThreeCode(pick.getThreeCode());
- agvWrkDetlService.insert(wrkDetl);
+ agvWrkDetl.sync(mat);
+ agvWrkDetl.setWrkNo(pickParams.getWrkNo());
+ agvWrkDetl.setOrderNo(pick.getOrderNo());
+ agvWrkDetl.setIoTime(agvWrkMast.getIoTime());
+ agvWrkDetl.setAnfme(pick.getCount()); // 鏁伴噺
+ agvWrkDetl.setSuppCode(pick.getSuppCode()); // 璐ф灦鏉$爜
+ agvWrkDetl.setAppeUser(userId);
+ agvWrkDetl.setAppeTime(now);
+ agvWrkDetl.setModiUser(userId);
+ agvWrkDetl.setModiTime(now);
+ agvWrkDetl.setThreeCode(pick.getThreeCode());
+ agvWrkDetlService.insert(agvWrkDetl);
} else {
Double anfme = agvWrkDetl.getAnfme() + pick.getCount();
+ agvWrkDetl.setIoTime(agvWrkMast.getIoTime());
agvWrkDetl.setAnfme(anfme);
- agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("matnr",agvWrkDetl.getMatnr()).eq("three_code",agvWrkDetl.getThreeCode()).eq("supp_code",pick.getSuppCode()));
+ agvWrkDetl.setModiTime(now);
+ agvWrkDetlService.update(agvWrkDetl, new EntityWrapper<AgvWrkDetl>().eq("matnr", agvWrkDetl.getMatnr()).eq("three_code", agvWrkDetl.getThreeCode()).eq("supp_code", pick.getSuppCode()));
}
-
+ // 搴撳瓨鏍¢獙
+ Optional<AgvLocDetl> first = agvLocDetls.stream().filter(agvLocDetl -> agvLocDetl.getThreeCode().equals(pick.getThreeCode()))
+ .filter(agvLocDetl -> agvLocDetl.getMatnr().equals(pick.getMatnr())).findFirst();
+ if (first.isPresent()) {
+ AgvLocDetl agvLocDetl = first.get();
+ if (agvLocDetl.getAnfme() < agvWrkDetl.getAnfme()) {
+ throw new CoolException("鎷f枡鏁伴噺涓嶈兘澶т簬搴撳瓨鏁伴噺");
+ }
+ } else {
+ throw new CoolException("鎷f枡鏁伴噺涓嶈兘澶т簬搴撳瓨鏁伴噺,瀛樺簱涓嶅瓨鍦�");
+ }
// 鏇存柊璁㈠崟
- OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", pick.getOrderNo()).eq("matnr", pick.getMatnr()).eq("three_code",pick.getThreeCode()));
+ OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", pick.getOrderNo()).eq("matnr", pick.getMatnr()).eq("three_code", pick.getThreeCode()));
orderDetl.setQty(orderDetl.getQty() + pick.getCount());
- if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no", pick.getOrderNo()).eq("matnr", pick.getMatnr()).eq("three_code",pick.getThreeCode()))){
- throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"+pick.getOrderNo()+pick.getMatnr());
+ orderDetl.setUpdateTime(new Date());
+ if (!orderDetlService.update(orderDetl, new EntityWrapper<OrderDetl>().eq("order_no", pick.getOrderNo()).eq("matnr", pick.getMatnr()).eq("three_code", pick.getThreeCode()))) {
+ throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�" + pick.getOrderNo() + pick.getMatnr());
}
- }
- // 纭鏄惁鍏ㄩ儴鍑哄簱
- int sameNumber = 0;
- List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", pickParams.getWrkNo()));
- for (AgvLocDetl agvLocDetl : agvLocDetls) {
- for (AgvWrkDetl agvWrkDetl : agvWrkDetls) {
- if (agvLocDetl.getMatnr().equals(agvWrkDetl.getMatnr())
- && agvLocDetl.getThreeCode().equals(agvWrkDetl.getThreeCode())
- && agvLocDetl.getSuppCode().equals(agvWrkDetl.getSuppCode())
- && agvLocDetl.getAnfme().equals(agvWrkDetl.getAnfme())) {
- sameNumber++;
+ Order order = orderService.selectByNo(orderDetl.getOrderNo());
+ if (order.getSettle() == 1) {
+ if (!orderService.updateSettle(order.getId(), 2L, userId)) {
+ throw new CoolException("鍐嶆鎷f枡锛氭洿鏂拌鍗曠姸鎬佸け璐ワ紒");
}
}
}
- if (agvLocDetls.size() == sameNumber) {
- AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("wrk_no", pickParams.getWrkNo()));
- agvWrkMast.setIoType(101);
- agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no", pickParams.getWrkNo()));
+ // 纭鏄惁鍏ㄩ儴鍑哄簱
+ double totleWrkdetl = 0.0;
+ double totleLocdetl = 0.0;
+ List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", pickParams.getWrkNo()));
+ for (AgvLocDetl agvLocDetl : agvLocDetls) {
+ totleLocdetl = totleLocdetl + agvLocDetl.getAnfme();
}
+ for (AgvWrkDetl agvWrkDetl : agvWrkDetls) {
+ totleWrkdetl = totleWrkdetl + agvWrkDetl.getAnfme();
+ }
+ if (totleWrkdetl >= totleLocdetl) {
+ agvWrkMast.setIoType(101);
+ agvWrkMastService.update(agvWrkMast, new EntityWrapper<AgvWrkMast>().eq("wrk_no", pickParams.getWrkNo()));
+
+ }
+// agvLocDetls.size() == 1
- return "缁勬墭鎴愬姛锛岀粦瀹氱珯鐐规垚鍔�";
+ return "鎷f枡鎴愬姛";
}
/*
AGV鏃犲崟缁勬墭
*/
- private void NoOrderComb(CombParam param, Long userId){
- List<DetlDto> detlDtos = mappingDetlDtoByCombMat(param,null);
+ private void NoOrderComb(CombParam param, Long userId) {
+ List<DetlDto> detlDtos = mappingDetlDtoByCombMat(param, null);
//鐢ㄤ簬缁熶竴涓�涓揣鏋朵笅鐨勫叆搴撻�氱煡妗g殑鐢熸垚鏃堕棿
Date now = new Date();
detlDtos.forEach(detlDto -> {
- syncWaitPakin(detlDto,"",param.getBarcode(),userId,now);
+ syncWaitPakin(detlDto, "", param.getBarcode(), userId, now);
});
}
-
/*
AGV鏈夊崟缁勬墭
*/
- private void OrderComb(CombParam param, Long userId){
+ private void OrderComb(CombParam param, Long userId) {
//鍏宠仈缁勬墭
Order order = orderService.selectByNo(param.getOrderNo());
- if(Cools.isEmpty(order)){
+ if (Cools.isEmpty(order)) {
throw new CoolException("鍗曟嵁缂栧彿涓嶅瓨鍦�");
}
//璁㈠崟鐘舵��2浠ヤ笂涓哄畬鎴愭垨鑰呭彇娑堢殑璁㈠崟
@@ -205,12 +240,12 @@
throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�");
}
// 鐢ㄤ簬鐢熸垚鍏ュ簱閫氱煡妗f墍闇�鍙傛暟
- List<DetlDto> detlDtos = mappingDetlDtoByCombMat(param,order);
+ List<DetlDto> detlDtos = mappingDetlDtoByCombMat(param, order);
//鐢ㄤ簬缁熶竴涓�涓揣鏋朵笅鐨勫叆搴撻�氱煡妗g殑鐢熸垚鏃堕棿
Date now = new Date();
for (DetlDto detlDto : detlDtos) {
//鍚屾鐢熸垚鍏ュ簱閫氱煡妗�
- syncWaitPakin(detlDto,order.getOrderNo(),param.getBarcode(),userId,now);
+ syncWaitPakin(detlDto, order.getOrderNo(), param.getBarcode(), userId, now);
}
//淇敼鍗曟嵁鐘舵�佷负2.浣滀笟涓�
orderService.updateSettle(order.getId(), 2L, userId);
@@ -219,19 +254,19 @@
/*
鏍规嵁PDA鎵爜鎵�浼犵殑鐗╂枡淇℃伅鍙傛暟鏄犲皠涓篋etlDto
*/
- private List<DetlDto> mappingDetlDtoByCombMat(CombParam param, Order order){
+ private List<DetlDto> mappingDetlDtoByCombMat(CombParam param, Order order) {
List<DetlDto> detlDtos = new ArrayList<>();
param.getCombMats().forEach(combMat -> {
- if(!Cools.isEmpty(order)){
+ if (!Cools.isEmpty(order)) {
//妫�鏌ュ叆搴撴暟閲�
- checkOrderQty(order,combMat);
+ checkOrderQty(order, combMat);
}
- DetlDto detlDto = new DetlDto(combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), combMat.getCsocode(), combMat.getIsoseq(),combMat.getContainerCode(),param.getLocType());
+ DetlDto detlDto = new DetlDto(combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), combMat.getCsocode(), combMat.getIsoseq(), combMat.getContainerCode(), param.getLocType(), combMat.getProcessSts());
//鍚屼竴璐ф灦涓嬬浉鍚岀墿鏂欎俊鎭拰鎵瑰彿杞负涓�涓叆搴撻�氱煡妗�
if (DetlDto.has(detlDtos, detlDto)) {
- DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(), detlDto.getCsocode(), detlDto.getIsoseq(),detlDto.getContainerCode());
+ DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(), detlDto.getCsocode(), detlDto.getIsoseq(), detlDto.getContainerCode());
assert one != null;
one.setAnfme(one.getAnfme() + detlDto.getAnfme());
} else {
@@ -245,17 +280,17 @@
/*
妫�鏌ュ叆搴撴暟閲忔槸鍚﹀皬浜庣瓑浜庡崟鎹暟閲忥紝鍚堢悊鍒欎慨鏀筄rderDetl浣滀笟鏁伴噺淇℃伅锛屽惁鍒欐姏鍑哄紓甯�
*/
- private void checkOrderQty(Order order, CombParam.CombMat combMat){
+ private void checkOrderQty(Order order, CombParam.CombMat combMat) {
// 璁㈠崟鏄庣粏鏁伴噺鏍¢獙锛屽鏋滀綔涓氭暟閲忓ぇ浜庡崟鎹暟閲忓垯鎶涘嚭寮傚父
- OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), combMat.getBatch(), combMat.getCsocode(),combMat.getIsoseq());
- if(Cools.isEmpty(orderDetl)){
+ OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), combMat.getBatch(), combMat.getCsocode(), combMat.getIsoseq());
+ if (Cools.isEmpty(orderDetl)) {
throw new CoolException("鏈尮閰嶅埌璇ュ崟鎹笅鐨勭墿鏂�");
}
if (combMat.getAnfme() > orderDetl.getEnableQty()) {
throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
}
// 淇敼璁㈠崟鏄庣粏鏁伴噺
- if (!orderDetlService.increase(order.getId(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), combMat.getCsocode(),combMat.getIsoseq())) {
+ if (!orderDetlService.increase(order.getId(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), combMat.getCsocode(), combMat.getIsoseq())) {
throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触");
}
}
@@ -263,13 +298,18 @@
/*
鍚屾鐢熸垚AGV鍏ュ簱閫氱煡妗f暟鎹�
*/
- private void syncWaitPakin(DetlDto detlDto, String orderNo, String zpallet, Long userId, Date now ){
+ private void syncWaitPakin(DetlDto detlDto, String orderNo, String zpallet, Long userId, Date now) {
Mat mat = matService.selectByMatnr(detlDto.getMatnr());
if (Cools.isEmpty(mat)) {
throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
}
+ OrderDetl orderDetl = orderDetlService.selectItem(orderNo, mat.getMatnr(), detlDto.getBatch(), detlDto.getCsocode());
AgvWaitPakin waitPakin = new AgvWaitPakin();
waitPakin.sync(mat);
+ if (orderDetl != null) {
+ waitPakin.setWeight(orderDetl.getWeight());
+ waitPakin.setVolume(orderDetl.getVolume());
+ }
waitPakin.setOrderNo(orderNo); // 鍗曟嵁缂栧彿
waitPakin.setBatch(detlDto.getBatch()); // 搴忓垪鐮�
//waitPakin.setZpallet(zpallet); // 璐ф灦鐮�
@@ -284,6 +324,8 @@
waitPakin.setDeadTime(detlDto.getIsoseq());
waitPakin.setLocType(detlDto.getLocType());
+
+ waitPakin.setProcessSts(detlDto.getProcessSts());
waitPakin.setAppeUser(userId);
@@ -313,40 +355,42 @@
AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("dev_no", stationCode));
- if(Cools.eq(agvBasDevp.getBarcode(),barcode)){
+ if (agvBasDevp == null) {
+ throw new CoolException(stationCode + "绔欑偣淇℃伅閿欒");
+ }
+
+ if (Cools.eq(agvBasDevp.getBarcode(), barcode)) {
return;
}
- if(Cools.isEmpty(agvWaitPakinService.selectByContainerCode(barcode))){
+ if (Cools.isEmpty(agvWaitPakinService.selectByContainerCode(barcode))) {
throw new CoolException("璇ヨ揣鏋舵湭缁勬墭锛屾棤娉曠粦瀹氱珯鐐�");
}
AgvBasDevp agvBasDevp1 = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("barcode", barcode));
- if(!Cools.isEmpty(agvBasDevp1)){
- throw new CoolException(barcode + "宸茬粡缁戝畾鍦�"+ agvBasDevp.getDevNo() +"绔欑偣");
+ if (!Cools.isEmpty(agvBasDevp1)) {
+ throw new CoolException(barcode + "宸茬粡缁戝畾鍦�" + agvBasDevp.getDevNo() + "绔欑偣");
}
- if(agvBasDevp == null){
- throw new CoolException(stationCode + "绔欑偣淇℃伅閿欒");
- }
- if(!"O".equals(agvBasDevp.getLocSts())){
+
+ if (!"O".equals(agvBasDevp.getLocSts())) {
throw new CoolException(stationCode + "璇ョ珯鐐硅揣浣嶇姸鎬侀潪绌�");
}
AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", agvBasDevp.getDevNo()));
- if(!Cools.isEmpty(agvWrkMast)){
+ if (!Cools.isEmpty(agvWrkMast)) {
throw new CoolException(stationCode + "璇ョ珯鐐瑰凡琚伐浣滃彿涓�" + agvWrkMast.getWrkNo() + "鍗犵敤锛屾棤娉曠粦瀹�");
}
agvBasDevp.setBarcode(barcode);
agvBasDevp.setLocSts("F");
agvBasDevp.setLocType2(containerType);
- agvBasDevpService.update(agvBasDevp,(new EntityWrapper<AgvBasDevp>().eq("dev_no",stationCode)));
+ agvBasDevpService.update(agvBasDevp, (new EntityWrapper<AgvBasDevp>().eq("dev_no", stationCode)));
}
public List<AgvBasDevp> getAgvBasDevpByFloor(int floor) {
EntityWrapper<AgvBasDevp> wrapper = new EntityWrapper<>();
- wrapper.eq("floor",floor).eq("cache_shelves","Y").eq("loc_sts","F");
+ wrapper.eq("floor", floor).eq("cache_shelves", "Y").eq("loc_sts", "F");
List<AgvBasDevp> agvBasDevpList = agvBasDevpService.selectList(wrapper);
return agvBasDevpList.stream().filter(agvBasDevp -> {
return !Cools.isEmpty(agvWaitPakinService.selectByContainerCode(agvBasDevp.getBarcode()));
@@ -376,7 +420,21 @@
@Transactional
public String handControlLocMove(LocMoveParam param, Long userId) {
String fl = String.valueOf(param.getFloor());
- short floor =(short)Integer.parseInt(fl.substring(0, 1));
+ short floor = (short) Integer.parseInt(fl.substring(0, 1));
+ switch (param.getFloor()) {
+ case "1F01":
+ floor = 1;
+ break;
+ case "1F02":
+ floor = 4;
+ break;
+ case "2F":
+ floor = 2;
+ break;
+ case "3F":
+ floor = 3;
+ break;
+ }
Integer ioType = 0;
AgvLocMast agvLocMast = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", param.getLocNo()));
if (Cools.isEmpty(agvLocMast)) {
@@ -386,7 +444,7 @@
// return R.error("褰撳墠搴撲綅涓嶄负鍦ㄥ簱锛屾垨鑰呯┖璐ф灦锛屼笉鏀寔绉诲簱");
// 鏍¢獙妤煎眰
- if (agvLocMast.getLocType1() != 3) { // 涓嶄负绠卞3鍖哄煙
+ if (agvLocMast.getLocType1() != 3 && agvLocMast.getLocType1() != 6) { // 涓嶄负绠卞3鍖哄煙
if (agvLocMast.getFloor() != floor) {
throw new CoolException("褰撳墠搴撲綅涓嶆敮鎸佽法妤煎眰杞Щ");
} else {
@@ -394,36 +452,60 @@
}
} else {
if (agvLocMast.getFloor() != floor) {
- if (floor==1 && agvLocMast.getFloor()!=1){
- ioType = 121;
- }else {
- if (agvLocMast.getFloor() == 1) {
- throw new CoolException("褰撳墠搴撲綅璇烽�夋嫨璋冩嫧鍗曡皟鎷紒");
+ if (agvLocMast.getFloor() == 1 && (floor == 2 || floor == 3)) {
+ throw new CoolException("褰撳墠搴撲綅璇烽�夋嫨璋冩嫧鍗曡皟鎷紒");
+ } else if ((agvLocMast.getFloor() == 2 || agvLocMast.getFloor() == 3) && (floor == 1 || floor == 4)) {
+ throw new CoolException("褰撳墠搴撲綅璇烽�夋嫨璋冩嫧鍥炴祦鍗曞洖閫�锛�");
+ } else if (agvLocMast.getFloor() == 1 && agvLocMast.getLev1() == 2 && floor == 4) {
+ ioType = 11;
+ } else {
+ ioType = 12;
+ }
+ } else {
+ if (agvLocMast.getFloor() == 1) {
+ if (agvLocMast.getLev1() == 1 && floor == 1) {
+ ioType = 11;
+ } else if (agvLocMast.getLev1() == 2 && floor == 4) {
+ ioType = 11;
} else {
ioType = 12;
}
+ } else {
+ ioType = 11;
}
- } else {
- ioType = 11;
}
}
Date now = new Date();
//鏌ヨ宸ヤ綔妗�
AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(agvLocMast.getBarcode());
- if(!Cools.isEmpty(agvWrkMast)){
- throw new CoolException("褰撳墠"+agvLocMast.getBarcode()+"璐ф灦鐮佸凡鍦ㄥ伐浣滄。涓�");
+ if (!Cools.isEmpty(agvWrkMast)) {
+ throw new CoolException("褰撳墠" + agvLocMast.getBarcode() + "璐ф灦鐮佸凡鍦ㄥ伐浣滄。涓�");
}
//妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅
- AgvLocMast locMast = agvCommonService.getLocNo(agvLocMast.getLocType1(),floor);
+ AgvLocMast locMast = null;
+ if (floor == 1) {
+ locMast = agvCommonService.getLocNo(agvLocMast.getLocType1(), floor, true, false);
+ } else {
+ locMast = agvCommonService.getLocNo(agvLocMast.getLocType1(), floor, false, false);
+ }
+
+ // 鐩爣妤煎眰鍘� 鍚稿2妤�
+ if (floor == 4) {
+ if (locMast.getLev1() == 1) {
+ throw new CoolException("鍚稿涓�妤兼病鏈夌┖搴撲綅鍙互绉诲簱锛�");
+ }
+
+ }
+
if (Cools.isEmpty(locMast)) {
throw new CoolException("褰撳墠妤煎眰娌℃湁绌哄簱浣�");
}
//鐢熸垚宸ヤ綔妗�
AgvWrkMast mast = new AgvWrkMast();
//宸ヤ綔鐘舵��
- if (ioType==121) {
+ if (ioType == 121) {
mast.setWrkSts(11L);
- }else {
+ } else {
mast.setWrkSts(201L);
}
//鍏ュ嚭搴撶被鍨�
@@ -438,17 +520,18 @@
//璐ф灦缂栫爜
mast.setBarcode(agvLocMast.getBarcode());
//璐ф灦绫诲瀷
- mast.setWhsType(30);
+ mast.setWhsType(Integer.parseInt(agvLocMast.getBarcode().substring(0, 2)));
mast.setAppeUser(userId);
mast.setAppeTime(now);
mast.setModiUser(userId);
mast.setModiTime(now);
+ mast.setLogErrMemo("handControlLocMove");
if (!agvWrkMastService.insertByIncrease(mast)) {
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
}
if (agvLocMast.getLocSts().equals("F")) {
- AgvWrkMast mast1 = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locMast.getLocNo()).eq("source_loc_no",agvLocMast.getLocNo()));
+ AgvWrkMast mast1 = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locMast.getLocNo()).eq("source_loc_no", agvLocMast.getLocNo()));
//鐢熸垚宸ヤ綔妗f槑缁�
List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvLocMast.getLocNo()));
agvLocDetls.forEach(agvLocDetl -> {
@@ -467,20 +550,32 @@
});
}
- // 濡傛灉褰撳墠浠诲姟鏄澹充簩涓夋ゼ鍥為��涓�妤肩殑 鍥炴粴璋冩嫧鍗�
- if (ioType == 12 && locMast.getFloor() == 1) {
- List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvLocMast.getLocNo()));
- for (AgvLocDetl agvLocDetl : agvLocDetls) {
- OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("three_code", agvLocDetl.getThreeCode()).eq("matnr", agvLocDetl.getMatnr()).eq("order_no", "DB" + agvLocDetl.getOrderNo()));
- orderDetl.setQty(orderDetl.getQty() - agvLocDetl.getAnfme());
- if (!orderDetlService.updateById(orderDetl)) {
- throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
- }
- }
- }
+// // 濡傛灉褰撳墠浠诲姟鏄澹充簩涓夋ゼ鍥為��涓�妤肩殑 鍥炴粴璋冩嫧鍗�
+// if (ioType == 12 && locMast.getFloor() == 1 && floor != 4 && agvLocMast.getFloor() != 1) {
+// List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvLocMast.getLocNo()));
+// for (AgvLocDetl agvLocDetl : agvLocDetls) {
+// OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("three_code", agvLocDetl.getThreeCode()).eq("matnr", agvLocDetl.getMatnr()).eq("source", 33));
+// if (Cools.isEmpty(orderDetl)) {
+// throw new CoolException("褰撳墠鐗╂枡鐨勮皟鎷ㄥ崟涓嶅瓨鍦紒");
+// }
+// Order order = orderService.selectByNo(orderDetl.getOrderNo());
+// if (Cools.isEmpty(order)) {
+// throw new CoolException("褰撳墠鐗╂枡鐨勮皟鎷ㄥ崟涓嶅瓨鍦紒");
+// }
+// if (order.getSettle() == 4L) {
+// if (!orderService.updateSettle(order.getId(),2L,userId)) {
+// throw new CoolException("璋冩嫧鍗曞洖婊氬紓甯�!");
+// }
+// }
+// orderDetl.setQty(orderDetl.getQty() - agvLocDetl.getAnfme());
+// if (!orderDetlService.updateById(orderDetl)) {
+// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+// }
+// }
+// }
//鏇存柊鐩爣搴撲綅鐘舵��
- updateAgvLocMast(agvLocMast,"P");
- updateAgvLocMast(locMast,"Q");
+ updateAgvLocMast(agvLocMast, "P");
+ updateAgvLocMast(locMast, "Q");
return "ok";
}
@@ -492,13 +587,39 @@
@Synchronized
public String allocationOut(AgvMobileStartPakin param, Long userId) {
Date now = new Date();
+ if (Cools.isEmpty(param.getBarcode())) {
+ throw new CoolException("璇疯緭鍏ヨ揣鏋剁爜");
+ }
AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", param.getDevNo()));
Integer oldWrkNo = agvWrkMast.getWrkNo();
if (Cools.isEmpty(agvWrkMast)) {
throw new CoolException("宸ヤ綔妗d腑娌℃湁姝ょ珯鐐逛换鍔�");
}
- if (!agvWrkMast.getWrkSts().equals(207L)) {
- throw new CoolException("宸ヤ綔鐘舵�佷笉绗﹀悎绂诲満鏉′欢");
+ if (!agvWrkMast.getBarcode().equals(param.getBarcode())) {
+ throw new CoolException("褰撳墠璐ф灦鐮佷笌浠诲姟涓嶅尮閰�");
+ }
+ if (!agvWrkMast.getWrkSts().equals(207L) && !agvWrkMast.getWrkSts().equals(205L)) {
+ throw new CoolException("褰撳墠宸ヤ綔鐘舵��:" + agvWrkMast.getWrkSts$() + "涓嶇鍚堢鍦烘潯浠�");
+ }
+ if (agvWrkMast.getWrkSts().equals(205L)) {
+ // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅
+ 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()));
+ }
}
//鐢熸垚AGV宸ヤ綔鍘嗗彶妗� + 鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
@@ -516,19 +637,21 @@
agvWrkDetl.setWrkNo(wrkMast.getWrkNo());
agvWrkDetl.setModiUser(userId);
agvWrkDetl.setModiTime(now);
+ agvWrkDetl.setIoTime(now);
if (!agvWrkDetlService.insert(agvWrkDetl)) {
throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
}
}
// 鏇存柊绔欑偣鐘舵��
- agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
+// agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
// 鏇存柊婧愬簱浣嶇姸鎬�
- agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"O","",agvWrkMast.getWhsType().shortValue());
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(), "O", "", agvWrkMast.getWhsType().shortValue());
//鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
- agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",oldWrkNo));
+ agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", oldWrkNo));
return "ok";
}
+
/*
璋冩嫧杩涘満
*/
@@ -536,9 +659,18 @@
@Transactional
public String allocationIn(AgvMobileStartPakin param, Long userId) {
Date now = new Date();
+ if (Cools.isEmpty(param.getBarcode())) {
+ throw new CoolException("璇疯緭鍏ヨ揣鏋剁爜");
+ }
AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", param.getBarcode()));
+ if (Cools.isEmpty(agvWrkMast)) {
+ throw new CoolException("鏆傛棤褰撳墠璐ф灦鐮佺殑浠诲姟");
+ }
if (agvWrkMast.getIoType() != 111) {
throw new CoolException("闈炴墜鍔ㄨ皟鎷ㄤ换鍔★紝涓嶆敮鎸佹鍔熻兘");
+ }
+ if (!Cools.isEmpty(agvWrkMast.getSourceLocNo())) {
+ throw new CoolException("褰撳墠璐ф灦鐮佹湁婧愬簱浣嶏紝璇风‘璁�");
}
AgvBasDevp agvBasDevp = agvBasDevpService.selectByDevNo(param.getDevNo());
if (Cools.isEmpty(agvWrkMast)) {
@@ -547,7 +679,7 @@
if (agvWrkMast.getCrnNo() != agvBasDevp.getFloor()) {
throw new CoolException("璇风Щ鍔ㄥ埌->" + agvWrkMast.getCrnNo() + "妤煎叆搴撶偣鍏ュ簱");
}
- AgvLocMast locNo = agvCommonService.getLocNo(3, 1);
+ AgvLocMast locNo = agvCommonService.getLocNo(3, 1, false, true);
//宸ヤ綔鐘舵��
agvWrkMast.setWrkSts(211L);
//鍏ュ嚭搴撶被鍨�
@@ -555,16 +687,17 @@
agvWrkMast.setSourceLocNo(param.getDevNo());
agvWrkMast.setModiUser(userId);
agvWrkMast.setModiTime(now);
- if (!agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no",agvWrkMast.getWrkNo()))) {
+ if (!agvWrkMastService.update(agvWrkMast, new EntityWrapper<AgvWrkMast>().eq("wrk_no", agvWrkMast.getWrkNo()))) {
throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
}
//
- agvLocMastService.updateLocStsByLocNo(locNo.getLocNo(),"S",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+ agvLocMastService.updateLocStsByLocNo(locNo.getLocNo(), "S", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
// 鏇存柊婧愬簱浣嶇姸鎬�
- agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(),"R",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(), "R", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
//鍒犻櫎AGV宸ヤ綔妗�
return "ok";
}
+
/*
绌烘灦绂诲満
*/
@@ -573,20 +706,31 @@
@Synchronized
public String empOut(AgvMobileStartPakin param, Long userId) {
Date now = new Date();
+ if (Cools.isEmpty(param.getBarcode())) {
+ throw new CoolException("璇疯緭鍏ヨ揣鏋剁爜");
+ }
AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", param.getDevNo()));
+ if (agvWrkMast == null) {
+ throw new CoolException("褰撳墠璐ф灦鐮佹病鏈変换鍔�");
+ }
Integer oldWrkNo = agvWrkMast.getWrkNo();
if (Cools.isEmpty(agvWrkMast)) {
throw new CoolException("宸ヤ綔妗d腑娌℃湁姝ょ珯鐐逛换鍔�");
}
+ if (!agvWrkMast.getBarcode().equals(param.getBarcode())) {
+ throw new CoolException("褰撳墠璐ф灦鐮佷笌浠诲姟涓嶅尮閰�");
+ }
+ agvWrkMast.setModiTime(new Date());
agvWrkMast.setWrkSts(213L);
agvWrkMast.setSourceLocNo("");
- if (!agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no",agvWrkMast.getWrkNo()))) {
+ if (!agvWrkMastService.update(agvWrkMast, new EntityWrapper<AgvWrkMast>().eq("wrk_no", agvWrkMast.getWrkNo()))) {
throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
}
// 鏇存柊婧愬簱浣嶇姸鎬�
- agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(),"O","",agvWrkMast.getWhsType().shortValue());
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(), "O", "", agvWrkMast.getWhsType().shortValue());
return "ok";
}
+
/*
绌烘灦杩涘満
*/
@@ -595,33 +739,183 @@
@Synchronized
public String empIn(AgvMobileStartPakin param, Long userId) {
Date now = new Date();
+ if (Cools.isEmpty(param.getBarcode())) {
+ throw new CoolException("璇疯緭鍏ヨ揣鏋剁爜");
+ }
AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", param.getBarcode()));
if (Cools.isEmpty(agvWrkMast)) {
throw new CoolException("宸ヤ綔妗d腑娌℃湁姝ょ珯鐐逛换鍔�");
}
+ if (agvWrkMast.getIoType() != 113) {
+ throw new CoolException("褰撳墠宸ヤ綔绫诲瀷涓嶈兘绌烘灦杩涘満");
+ }
+ if (agvWrkMast.getWrkSts() != 213) {
+ throw new CoolException("褰撳墠宸ヤ綔绫诲瀷涓嶈兘绌烘灦杩涘満");
+ }
agvWrkMast.setWrkSts(214L);
+ agvWrkMast.setModiTime(new Date());
agvWrkMast.setSourceLocNo(param.getDevNo());
- if (!agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no",agvWrkMast.getWrkNo()))) {
+ if (!agvWrkMastService.update(agvWrkMast, new EntityWrapper<AgvWrkMast>().eq("wrk_no", agvWrkMast.getWrkNo()))) {
throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
}
// 鏇存柊婧愬簱浣嶇姸鎬�
- agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(),"F",param.getBarcode(),agvWrkMast.getWhsType().shortValue());
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(), "F", param.getBarcode(), agvWrkMast.getWhsType().shortValue());
return "ok";
}
+
/*
- * 绔欑偣鍥為��
- */
+ * 杞墜鍔ㄥ洖娴�
+ */
@Override
@Transactional
public String handBack(AgvMobileStartPakin param, Long userId) {
Date now = new Date();
AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", param.getDevNo()));
+ if (agvWrkMast == null) {
+ throw new CoolException("宸ヤ綔妗d腑娌℃湁姝ょ珯鐐逛换鍔�");
+ }
agvWrkMast.setIoType(113);
agvWrkMast.setModiUser(userId);
agvWrkMast.setModiTime(now);
- if (!agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no",agvWrkMast.getWrkNo()))) {
+ if (!agvWrkMastService.update(agvWrkMast, new EntityWrapper<AgvWrkMast>().eq("wrk_no", agvWrkMast.getWrkNo()))) {
throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
}
+ return "ok";
+ }
+
+ /*
+ * 纭鍔犲伐瀹屾垚
+ */
+ @Override
+ @Transactional
+ public String processed(AgvMobileStartPakin param, Long userId) {
+ Date now = new Date();
+ AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", param.getBarcode()).eq("loc_no", param.getDevNo()));
+ if (Cools.isEmpty(agvWrkMast)) {
+ throw new CoolException("鏆傛棤褰撳墠璐ф灦鐨勫伐浣滄。");
+ }
+ if (agvWrkMast.getWrkSts() != 205) {
+ throw new CoolException("褰撳墠浠诲姟鏈畬鎴愶紝璇风‘璁�");
+ }
+ //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� + 鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
+ agvWrkMastLogService.save(agvWrkMast);
+ agvWrkDetlLogService.save(agvWrkMast.getWrkNo());
+ String sourceLocNo = agvWrkMast.getSourceLocNo();
+ AgvLocMast newLocMast = agvCommonService.getLocNo(3, 1, false, false);
+ List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", param.getBarcode()));
+ if (newLocMast == null) {
+ throw new CoolException("鏃犲彲鐢ㄥ簱浣�");
+ }
+ agvWrkMast.setSourceLocNo(agvWrkMast.getLocNo());
+ agvWrkMast.setLocNo(newLocMast.getLocNo());
+ agvWrkMast.setIoType(57);
+ agvWrkMast.setWrkSts(201L);
+ agvWrkMast.setModiUser(userId);
+ agvWrkMast.setModiTime(now);
+ agvWrkMast.setIoTime(now);
+
+
+ if (!agvWrkMastService.update(agvWrkMast, new EntityWrapper<AgvWrkMast>().eq("wrk_no", agvWrkMast.getWrkNo()))) {
+ throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
+ }
+
+ // 鏇存柊婧愮珯鐐� + 鐩爣搴撲綅鐘舵�� + 鍘嗗彶婧愬簱浣�
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(), "R", param.getBarcode(), agvWrkMast.getWhsType().shortValue());
+ agvLocMastService.updateLocStsByLocNo(newLocMast.getLocNo(), "S", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
+ agvLocMastService.updateLocStsByLocNo(sourceLocNo, "O", "", (short) 30);
+ agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", sourceLocNo));
+
+ agvWrkDetls.forEach(agvWrkDetl -> {
+ for (AgvWrkDetl wrkDetl : param.getWrkDetls()) {
+ if (wrkDetl.getMatnr().equals(agvWrkDetl.getMatnr()) && wrkDetl.getThreeCode().equals(agvWrkDetl.getThreeCode())) {
+ agvWrkDetl.setAnfme(wrkDetl.getAnfme());
+ break;
+ }
+ }
+ agvWrkDetl.setProcessSts(2);
+ agvWrkDetl.setOrderNo(agvWrkDetl.getOrderNo().substring(2));
+ agvWrkDetl.setModiUser(userId);
+ agvWrkDetl.setModiTime(now);
+ agvWrkDetl.setIoTime(now);
+ if (!agvWrkDetlService.update(agvWrkDetl, new EntityWrapper<AgvWrkDetl>()
+ .eq("matnr", agvWrkDetl.getMatnr())
+ .eq("three_code", agvWrkDetl.getThreeCode())
+ .eq("supp_code", param.getBarcode()))) {
+ throw new CoolException("鏇存柊宸ヤ綔鏄庣粏澶辫触");
+ }
+ });
+ return "ok";
+ }
+
+ /*
+ * 纭鍔犲伐瀹屾垚
+ */
+ @Override
+ @Transactional
+ public String processedV2(AgvMobileStartPakin param, Long userId) {
+ Date now = new Date();
+ AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", param.getBarcode()).eq("loc_no", param.getDevNo()));
+ if (Cools.isEmpty(agvWrkMast)) {
+ throw new CoolException("鏆傛棤褰撳墠璐ф灦鐨勫伐浣滄。");
+ }
+ if (agvWrkMast.getWrkSts() != 205) {
+ throw new CoolException("褰撳墠浠诲姟鏈畬鎴愶紝璇风‘璁�");
+ }
+ //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� + 鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
+ agvWrkMastLogService.save(agvWrkMast);
+ agvWrkDetlLogService.save(agvWrkMast.getWrkNo());
+ String sourceLocNo = agvWrkMast.getSourceLocNo();
+ // TODO: 鍥涙湡
+ List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", param.getBarcode()));
+ String factory = param.getFactory();
+ AgvLocMast newLocMast = agvCommonService.getLocByLocRule20(3, 1, factory, false);
+ if (newLocMast == null) {
+ throw new CoolException("鏃犲彲鐢ㄥ簱浣�");
+ }
+ agvWrkMast.setSourceLocNo(agvWrkMast.getLocNo());
+ agvWrkMast.setLocNo(newLocMast.getLocNo());
+ agvWrkMast.setIoType(57);
+ agvWrkMast.setWrkSts(201L);
+ agvWrkMast.setModiUser(userId);
+ agvWrkMast.setModiTime(now);
+ agvWrkMast.setIoTime(now);
+ // 鎵撴爣璁帮紝鑻ュ簱浣嶄笉澶燂紝鍏ュ簱鍒板埆鐨勬ゼ灞傦紝閭d箞闇�瑕佽法灞傜Щ搴�
+// if (!Cools.isEmpty(factory)) {
+// if (newLocMast.getLev1() == 1 && factory.equals(AsrsConstants.ERCHANG)) {
+// agvWrkMast.setCtnNo("2");
+// } else if (newLocMast.getLev1() == 2 && factory.equals(AsrsConstants.SANCHANG)) {
+// agvWrkMast.setCtnNo("1");
+// }
+// }
+ if (!agvWrkMastService.update(agvWrkMast, new EntityWrapper<AgvWrkMast>().eq("wrk_no", agvWrkMast.getWrkNo()))) {
+ throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
+ }
+
+ // 鏇存柊婧愮珯鐐� + 鐩爣搴撲綅鐘舵�� + 鍘嗗彶婧愬簱浣�
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(), "R", param.getBarcode(), agvWrkMast.getWhsType().shortValue());
+ agvLocMastService.updateLocStsByLocNo(newLocMast.getLocNo(), "S", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
+ agvLocMastService.updateLocStsByLocNo(sourceLocNo, "O", "", (short) 30);
+ agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", sourceLocNo));
+
+ agvWrkDetls.forEach(agvWrkDetl -> {
+ for (AgvWrkDetl wrkDetl : param.getWrkDetls()) {
+ if (wrkDetl.getMatnr().equals(agvWrkDetl.getMatnr()) && wrkDetl.getThreeCode().equals(agvWrkDetl.getThreeCode())) {
+ agvWrkDetl.setAnfme(wrkDetl.getAnfme());
+ break;
+ }
+ }
+ agvWrkDetl.setProcessSts(2);
+ agvWrkDetl.setOrderNo(agvWrkDetl.getOrderNo().substring(2));
+ agvWrkDetl.setModiUser(userId);
+ agvWrkDetl.setModiTime(now);
+ agvWrkDetl.setIoTime(now);
+ if (!agvWrkDetlService.update(agvWrkDetl, new EntityWrapper<AgvWrkDetl>()
+ .eq("matnr", agvWrkDetl.getMatnr())
+ .eq("three_code", agvWrkDetl.getThreeCode())
+ .eq("supp_code", param.getBarcode()))) {
+ throw new CoolException("鏇存柊宸ヤ綔鏄庣粏澶辫触");
+ }
+ });
return "ok";
}
@@ -631,6 +925,12 @@
@Override
@Transactional
public String doBack(AgvMobileStartPakin param, Long userId) {
+ if (Cools.isEmpty(param.getBarcode()) || !CodeDetectionUtil.barcodeDetection(param.getBarcode())) {
+ throw new CoolException(param.getBarcode() + "璐ф灦鐮佹湁璇紝璇锋纭壂鐮侊紒锛侊紒");
+ }
+ if (Cools.isEmpty(param.getDevNo()) || !CodeDetectionUtil.carCodeDetection(param.getDevNo())) {
+ throw new CoolException(param.getDevNo() + "灏忚溅鍦扮爜鏈夎锛岃姝g‘鎵爜锛侊紒锛�");
+ }
Date now = new Date();
AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", param.getDevNo()));
AgvWrkMast agvWrkMastSource = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", param.getDevNo()));
@@ -647,24 +947,44 @@
// 鏂板缓鍥為��宸ヤ綔妗�
AgvWrkMast wrkMast = createWrkMast(58, 201L, agvWrkMast.getLocNo(), agvWrkMast.getSourceLocNo(), agvWrkMast.getBarcode(), now, userId, agvWrkMast.getWhsType(), 0);
// 鏇存柊鎺ラ┏浣嶏紝鏇存柊搴撲綅鐘舵��
- agvLocMastService.updateLocStsByLocNo(wrkMast.getLocNo(),"S",wrkMast.getBarcode(),wrkMast.getWhsType().shortValue());
- agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getSourceLocNo(),"R",wrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+ agvLocMastService.updateLocStsByLocNo(wrkMast.getLocNo(), "S", wrkMast.getBarcode(), wrkMast.getWhsType().shortValue());
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getSourceLocNo(), "R", wrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
// 鏇存柊宸ヤ綔鏄庣粏
List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("supp_code", agvWrkMast.getBarcode()));
for (AgvWrkDetl agvWrkDetl : agvWrkDetls) {
agvWrkDetl.setWrkNo(wrkMast.getWrkNo());
// 淇濇寔宸ヤ綔妗f槑缁�
agvWrkDetl.setWrkNo(wrkMast.getWrkNo());
+ agvWrkDetl.setIoTime(now);
agvWrkDetl.setModiUser(userId);
agvWrkDetl.setModiTime(now);
if (!agvWrkDetlService.insert(agvWrkDetl)) {
throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
}
// 鍚屾璁㈠崟鏁伴噺
- OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("matnr", agvWrkDetl.getMatnr()).eq("three_code",agvWrkDetl.getThreeCode()).in("source",18,31,34));
- orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme());
- if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no",orderDetl.getOrderNo()).eq("matnr", orderDetl.getMatnr()).eq("three_code",orderDetl.getThreeCode()))){
- throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"+orderDetl.getOrderNo()+orderDetl.getMatnr());
+ //OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("matnr", agvWrkDetl.getMatnr()).eq("three_code", agvWrkDetl.getThreeCode()).eq("order_no", agvWrkDetl.getOrderNo()).in("source", 18, 31, 34));
+ List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("matnr", agvWrkDetl.getMatnr()).eq("three_code", agvWrkDetl.getThreeCode()).eq("order_no", agvWrkDetl.getOrderNo()));
+ OrderDetl orderDetl = null;
+ if (orderDetls.isEmpty()) {
+ throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦�");
+ } else if (orderDetls.size() > 1) {
+ for (OrderDetl detl : orderDetls) {
+ if (Cools.isEmpty(agvWrkDetl.getBatch()) && Cools.isEmpty(detl.getBatch())) {
+ orderDetl = detl;
+ } else if (!Cools.isEmpty(agvWrkDetl.getBatch()) && !Cools.isEmpty(detl.getBatch()) && agvWrkDetl.getBatch().equals(detl.getBatch())) {
+ orderDetl = detl;
+ }
+ }
+ if (orderDetl == null) {
+ throw new CoolException("璁㈠崟鏄庣粏涓嶅尮閰�");
+ }
+ } else {
+ orderDetl = orderDetls.get(0);
+ }
+ double v = orderDetl.getQty() - agvWrkDetl.getAnfme();
+ orderDetl.setQty(v < 0 ? 0 : v);
+ if (!orderDetlService.updateById(orderDetl)) {
+ throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�" + orderDetl.getOrderNo() + orderDetl.getMatnr());
}
}
@@ -674,13 +994,14 @@
//鍒犻櫎AGV宸ヤ綔妗�
agvWrkMastService.deleteById(agvWrkMast);
//鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
- agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",oldWrkNo));
+ agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", oldWrkNo));
return "ok";
}
+
/*
鏇存柊鐩爣搴撲綅淇℃伅
*/
- private void updateAgvLocMast(AgvLocMast locMast, String locSts){
+ private void updateAgvLocMast(AgvLocMast locMast, String locSts) {
locMast.setLocSts(locSts);
agvLocMastService.updateById(locMast);
}
@@ -688,7 +1009,7 @@
/*
鐢熸垚宸ヤ綔妗�
*/
- private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, int containerType,int floor){
+ 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);
@@ -712,12 +1033,12 @@
wrkMast.setAppeTime(now);
wrkMast.setModiUser(userId);
wrkMast.setModiTime(now);
-
+ wrkMast.setLogErrMemo("doBack");
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));
+ 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