From 757e410a3580adaaa305741903062371f98d778d Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期四, 18 十二月 2025 13:30:33 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/WorkService.java | 2
src/main/java/com/zy/asrs/task/handler/OutWorkHandler.java | 122 +++++++----
src/main/java/com/zy/asrs/entity/WrkMast.java | 5
src/main/java/com/zy/common/web/WcsController.java | 87 ++++++++
src/main/java/com/zy/asrs/controller/WorkController.java | 26 +
src/main/java/com/zy/asrs/utils/Utils.java | 9
src/main/java/com/zy/common/properties/SlaveProperties.java | 2
src/main/java/com/zy/asrs/task/OutWorkScheduler.java | 8
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 205 +++++++++++--------
src/main/java/com/zy/asrs/controller/OutController.java | 12
src/main/java/com/zy/common/service/CommonService.java | 34 ++-
src/main/resources/application.yml | 37 ++-
src/main/java/com/zy/common/web/param/GetLocNoReassignParam.java | 13 +
13 files changed, 374 insertions(+), 188 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index f38436c..3067a4b 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -5,6 +5,7 @@
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.R;
+import com.core.exception.CoolException;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.LocMast;
@@ -12,11 +13,13 @@
import com.zy.asrs.service.*;
import com.zy.asrs.utils.Utils;
import com.zy.common.model.LocDto;
+import com.zy.common.model.OutLocDto;
import com.zy.common.model.TaskDto;
import com.zy.common.properties.SlaveProperties;
import com.zy.common.web.BaseController;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
@@ -105,7 +108,8 @@
LocDto locDto = new LocDto(locDetl1.getLocNo(), locDetl1.getMatnr(), locDetl1.getMaktx(), locDetl1.getBatch(), orderDetl.getOrderNo(),
issued >= locDetl1.getAnfme() ? locDetl1.getAnfme() : issued);
int ioType = (issued >= locDetl1.getAnfme() && locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("loc_no", locDto.getLocNo())) == 1) ? 101 : 103;
- List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl1.getLocNo(), ioType);
+// List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl1.getLocNo(), ioType);
+ List<Integer> staNos = Utils.getOutStaNoList();
locDto.setStaNos(staNos);
locDtos.add(locDto);
exist.add(locDetl1.getLocNo());
@@ -158,11 +162,7 @@
taskDtos.add(taskDto);
}
}
- // -----------------------------------------------------------------------------------------------
- for (TaskDto taskDto : taskDtos) {
- BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo());
- workService.stockOut(staNo, taskDto, getUserId());
- }
+ workService.stockOut(taskDtos, getUserId());
return R.ok();
}
diff --git a/src/main/java/com/zy/asrs/controller/WorkController.java b/src/main/java/com/zy/asrs/controller/WorkController.java
index e17d4ba..d1380d2 100644
--- a/src/main/java/com/zy/asrs/controller/WorkController.java
+++ b/src/main/java/com/zy/asrs/controller/WorkController.java
@@ -9,6 +9,7 @@
import com.zy.asrs.entity.param.StockOutParam;
import com.zy.asrs.service.BasDevpService;
import com.zy.asrs.service.WorkService;
+import com.zy.asrs.utils.Utils;
import com.zy.common.model.StartupDto;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
@@ -50,18 +51,25 @@
@ManagerAuth()
public R availableTakeSite(){
List<Map<String, Object>> result = new ArrayList<>();
- List<Integer> outSite = basDevpService.getAvailableOutSite(101);
- for (Integer siteId : outSite) {
+// List<Integer> outSite = basDevpService.getAvailableOutSite(101);
+// for (Integer siteId : outSite) {
+// Map<String, Object> map = new HashMap<>();
+// map.put("siteId", siteId);
+// map.put("desc", siteId + "锛堝叏鏉垮嚭搴撳彛锛�");
+// result.add(map);
+// }
+// List<Integer> pickOutSite = basDevpService.getAvailableOutSite(103);
+// for (Integer siteId : pickOutSite) {
+// Map<String, Object> map = new HashMap<>();
+// map.put("siteId", siteId);
+// map.put("desc", siteId + "锛堟嫞鏂欏嚭搴撳彛锛�");
+// result.add(map);
+// }
+ List<Integer> outStaNoList = Utils.getOutStaNoList();
+ for (Integer siteId : outStaNoList){
Map<String, Object> map = new HashMap<>();
map.put("siteId", siteId);
map.put("desc", siteId + "锛堝叏鏉垮嚭搴撳彛锛�");
- result.add(map);
- }
- List<Integer> pickOutSite = basDevpService.getAvailableOutSite(103);
- for (Integer siteId : pickOutSite) {
- Map<String, Object> map = new HashMap<>();
- map.put("siteId", siteId);
- map.put("desc", siteId + "锛堟嫞鏂欏嚭搴撳彛锛�");
result.add(map);
}
return R.ok().add(result);
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index f33acd0..0c5b338 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import com.zy.asrs.service.*;
+import com.zy.common.utils.Synchro;
import com.zy.system.entity.User;
import com.zy.system.service.UserService;
import com.core.common.Cools;
@@ -495,6 +496,8 @@
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.logErrTime);
}
-
+ public void sync(Object source) {
+ Synchro.Copy(source, this);
+ }
}
diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java
index b119a80..e67333f 100644
--- a/src/main/java/com/zy/asrs/service/WorkService.java
+++ b/src/main/java/com/zy/asrs/service/WorkService.java
@@ -34,7 +34,7 @@
*/
void stockOut(BasDevp staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, Long userId);
- void stockOut(BasDevp staNo, TaskDto taskDto, Long userId);
+ void stockOut(List<TaskDto> taskDto, Long userId);
/**
* 绌烘澘鍏ュ簱
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index fef94e6..30f354f 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -221,10 +221,6 @@
throw new CoolException(dto.getLocNo()+"鎵樼洏闈炲湪搴撶姸鎬�");
}
- Integer outSta = staNo.getDevNo();
-
- // 鑾峰彇璺緞
- StaDesc staDesc = staDescService.queryCrnStn(ioType, outSta);
// 鐢熸垚宸ヤ綔鍙�
int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
// 鐢熸垚宸ヤ綔妗�
@@ -235,9 +231,8 @@
wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
wrkMast.setIoPri(10D); // 浼樺厛绾�
wrkMast.setCrnNo(locMast.getCrnNo());
- wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
- wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
wrkMast.setSourceLocNo(dto.getLocNo()); // 婧愬簱浣�
+ wrkMast.setStaNo(staNo.getDevNo());// 鐩爣绔�
wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
wrkMast.setPicking("N"); // 鎷f枡
wrkMast.setExitMk("N"); // 閫�鍑�
@@ -284,93 +279,131 @@
throw new CoolException(dto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
}
}
+
+ //妫�娴嬫槸鍚﹀瓨鍦ㄦ祬搴撲綅
+ for (OutLocDto dto : dtos) {
+ //鍒ゆ柇鏄惁鏄繁搴撲綅 瑙﹀彂绉诲簱浠诲姟
+ if (Utils.isDeepLoc(dto.getLocNo())) {
+ String deepLoc = dto.getLocNo();
+ String shallowLocNo = Utils.getShallowLocNo(deepLoc);
+ LocMast shallowLocMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLocNo));
+ if (shallowLocMast.getLocSts().equals("F") || shallowLocMast.getLocSts().equals("D")) {
+ //瑙﹀彂绉诲簱浠诲姟
+ String locTransferLocNo = commonService.getLocTransferLocNo(shallowLocNo);
+ if (locTransferLocNo == null) {
+ throw new CoolException(shallowLocNo + "娴呭簱浣嶆悳绱㈢Щ搴撶┖搴撲綅澶辫触");
+ }
+ this.locMove(shallowLocNo, locTransferLocNo, userId);
+ }
+ }
+ }
+
}
@Override
@Transactional
- public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
- Date now = new Date();
- List<LocDto> locDtos = taskDto.getLocDtos();
- for (LocDto locDto : locDtos) {
- if (!taskDto.getLocNo().equals(locDto.getLocNo()) && !taskDto.getStaNo().equals(locDto.getStaNo())) {
- throw new CoolException("璁㈠崟鍑哄簱寮傚父锛岃鑱旂郴绠$悊鍛�");
+ public void stockOut(List<TaskDto> taskDtoList, Long userId) {
+ for (TaskDto taskDto : taskDtoList) {
+ Date now = new Date();
+ List<LocDto> locDtos = taskDto.getLocDtos();
+ for (LocDto locDto : locDtos) {
+ if (!taskDto.getLocNo().equals(locDto.getLocNo()) && !taskDto.getStaNo().equals(locDto.getStaNo())) {
+ throw new CoolException("璁㈠崟鍑哄簱寮傚父锛岃鑱旂郴绠$悊鍛�");
+ }
+ }
+ // 鑾峰彇搴撲綅
+ LocMast locMast = locMastService.selectById(taskDto.getLocNo());
+ // 鑾峰彇璺緞
+ int ioType = taskDto.isAll() ? 101 : 103;
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
+ wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+ wrkMast.setCrnNo(locMast.getCrnNo());
+ wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣�
+ wrkMast.setStaNo(taskDto.getStaNo());// 鐩爣绔�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("N");
+ wrkMast.setBarcode(locMast.getBarcode());
+ wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(now);
+ if (!wrkMastService.insert(wrkMast)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+taskDto.getLocNo());
+ }
+ // 鐢熸垚宸ヤ綔妗f槑缁�
+ for (LocDto locDto : taskDto.getLocDtos()) {
+ if (locDto.getAnfme()==null || locDto.getAnfme() <= 0.0D) { continue; }
+ OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
+ if (orderDetl == null) {
+ orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
+ }
+ LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locDto.getLocNo()).eq("matnr", locDto.getMatnr()));
+ Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", locDto.getMatnr()));
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(orderDetl);
+ wrkDetl.setZpallet(wrkMast.getBarcode());
+ wrkDetl.setIoTime(now);
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setBatch(locDto.getBatch());
+ wrkDetl.setOrderNo(locDto.getOrderNo());
+ wrkDetl.setModel(mat.getModel());
+ wrkDetl.setPrice(locDetl.getAnfme());//搴撳瓨鏁伴噺
+ wrkDetl.setAnfme(locDto.getAnfme()); // 鏁伴噺
+ wrkDetl.setWeight(locDetl.getAnfme());//鎬绘暟
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setAppeUser(userId);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setModiUser(userId);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+ // 淇敼璁㈠崟鏄庣粏
+ if (!orderDetlService.increaseWorkQty(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
+ throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
+ }
+ orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
+ }
+ // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+ locMast = locMastService.selectById(taskDto.getLocNo());
+ if (locMast.getLocSts().equals("F")) {
+ locMast.setLocSts(ioType==101?"R":"P");
+ locMast.setModiUser(userId);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+taskDto.getLocNo());
+ }
+ } else {
+ throw new CoolException(taskDto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
}
}
- // 鑾峰彇搴撲綅
- LocMast locMast = locMastService.selectById(taskDto.getLocNo());
- // 鑾峰彇璺緞
- int ioType = taskDto.isAll() ? 101 : 103;
- StaDesc staDesc = staDescService.queryCrnStn(ioType, staNo.getDevNo());
- // 鐢熸垚宸ヤ綔鍙�
- int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
- // 鐢熸垚宸ヤ綔妗�
- WrkMast wrkMast = new WrkMast();
- wrkMast.setWrkNo(workNo);
- wrkMast.setIoTime(now);
- wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
- wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
- wrkMast.setIoPri(13D); // 浼樺厛绾э細13
- wrkMast.setCrnNo(locMast.getCrnNo());
- wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
- wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
- wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣�
- wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
- wrkMast.setPicking("N"); // 鎷f枡
- wrkMast.setExitMk("N"); // 閫�鍑�
- wrkMast.setEmptyMk("N"); // 绌烘澘
- wrkMast.setLinkMis("N");
- wrkMast.setBarcode(locMast.getBarcode());
- wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
- wrkMast.setAppeTime(now);
- wrkMast.setModiUser(userId);
- wrkMast.setModiTime(now);
- if (!wrkMastService.insert(wrkMast)) {
- throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+taskDto.getLocNo());
- }
- // 鐢熸垚宸ヤ綔妗f槑缁�
- for (LocDto locDto : taskDto.getLocDtos()) {
- if (locDto.getAnfme()==null || locDto.getAnfme() <= 0.0D) { continue; }
- OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
- if (orderDetl == null) {
- orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
+
+
+ //妫�娴嬫槸鍚﹀瓨鍦ㄦ祬搴撲綅
+ for (TaskDto taskDto : taskDtoList) {
+ //鍒ゆ柇鏄惁鏄繁搴撲綅 瑙﹀彂绉诲簱浠诲姟
+ if (Utils.isDeepLoc(taskDto.getLocNo())) {
+ String deepLoc = taskDto.getLocNo();
+ String shallowLocNo = Utils.getShallowLocNo(deepLoc);
+ LocMast shallowLocMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLocNo));
+ if (shallowLocMast.getLocSts().equals("F") || shallowLocMast.getLocSts().equals("D")) {
+ //瑙﹀彂绉诲簱浠诲姟
+ String locTransferLocNo = commonService.getLocTransferLocNo(shallowLocNo);
+ if (locTransferLocNo == null) {
+ throw new CoolException(shallowLocNo + "娴呭簱浣嶆悳绱㈢Щ搴撶┖搴撲綅澶辫触");
+ }
+ this.locMove(shallowLocNo, locTransferLocNo, userId);
+ }
}
- LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locDto.getLocNo()).eq("matnr", locDto.getMatnr()));
- Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", locDto.getMatnr()));
- WrkDetl wrkDetl = new WrkDetl();
- wrkDetl.sync(orderDetl);
- wrkDetl.setZpallet(wrkMast.getBarcode());
- wrkDetl.setIoTime(now);
- wrkDetl.setWrkNo(workNo);
- wrkDetl.setBatch(locDto.getBatch());
- wrkDetl.setOrderNo(locDto.getOrderNo());
- wrkDetl.setModel(mat.getModel());
- wrkDetl.setPrice(locDetl.getAnfme());//搴撳瓨鏁伴噺
- wrkDetl.setAnfme(locDto.getAnfme()); // 鏁伴噺
- wrkDetl.setWeight(locDetl.getAnfme());//鎬绘暟
- wrkDetl.setAppeTime(now);
- wrkDetl.setAppeUser(userId);
- wrkDetl.setModiTime(now);
- wrkDetl.setModiUser(userId);
- if (!wrkDetlService.insert(wrkDetl)) {
- throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
- }
- // 淇敼璁㈠崟鏄庣粏
- if (!orderDetlService.increaseWorkQty(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
- throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
- }
- orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
- }
- // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
- locMast = locMastService.selectById(taskDto.getLocNo());
- if (locMast.getLocSts().equals("F")) {
- locMast.setLocSts(ioType==101?"R":"P");
- locMast.setModiUser(userId);
- locMast.setModiTime(now);
- if (!locMastService.updateById(locMast)) {
- throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+taskDto.getLocNo());
- }
- } else {
- throw new CoolException(taskDto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
}
}
diff --git a/src/main/java/com/zy/asrs/task/OutWorkScheduler.java b/src/main/java/com/zy/asrs/task/OutWorkScheduler.java
index c27ce48..3d1211d 100644
--- a/src/main/java/com/zy/asrs/task/OutWorkScheduler.java
+++ b/src/main/java/com/zy/asrs/task/OutWorkScheduler.java
@@ -26,11 +26,11 @@
/**
* 鍑哄簱浠诲姟涓嬪彂
*/
-// @Scheduled(cron = "0/3 * * * * ? ")
+ @Scheduled(cron = "0/3 * * * * ? ")
private void execute() {
- List<WrkMast> wrkMasts=wrkMastService.selectList(new EntityWrapper<WrkMast>()
- .eq("wrk_sts",11)
- .in("io_type",11,101,103,107,110));
+ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
+ .eq("wrk_sts", 11)
+ .in("io_type", 11, 101, 103, 107, 110));
for(WrkMast wrkMast:wrkMasts){
ReturnT<String> result = outWorkHandler.start(wrkMast);
if (!result.isSuccess()) {
diff --git a/src/main/java/com/zy/asrs/task/handler/OutWorkHandler.java b/src/main/java/com/zy/asrs/task/handler/OutWorkHandler.java
index 113b152..039dda2 100644
--- a/src/main/java/com/zy/asrs/task/handler/OutWorkHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/OutWorkHandler.java
@@ -7,6 +7,8 @@
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.utils.Utils;
+import com.zy.common.model.StartupDto;
import com.zy.common.utils.HttpHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -21,64 +23,88 @@
@Transactional
public class OutWorkHandler extends AbstractHandler<String> {
- @Autowired
- private ApiLogService apiLogService;
@Value("${wcs.address.URL}")
private String addrs;
- @Value("${wcs.address.outboundTaskSend}")
- private String outboundTaskSend;
+ @Value("${wcs.address.createOutTask}")
+ private String outTask;
+ @Value("${wcs.address.createLocMoveTask}")
+ private String locMoveTask;
+
+ @Autowired
+ private ApiLogService apiLogService;
@Autowired
private WrkMastService wrkMastService;
-
public synchronized ReturnT<String> start(WrkMast wrkMast) {
- HashMap<String, Object> map = new HashMap<>();
- map.put("taskNo", wrkMast.getWrkNo());
- map.put("taskPriority", 10);
- map.put("barcode", wrkMast.getBarcode());
+ StartupDto startupDto = new StartupDto();
+ startupDto.setTaskNo(wrkMast.getWrkNo());
+ startupDto.setStaNo(wrkMast.getStaNo());
+ startupDto.setLocNo(Utils.locToLocNo(wrkMast.getSourceLocNo()));
+ startupDto.setTaskPri(wrkMast.getIoPri());
if (wrkMast.getIoType() == 11) {
- map.put("taskType", 3);
- map.put("startPoint", wrkMast.getSourceLocNo());
- map.put("targetPoint", wrkMast.getLocNo());
- }else {
- map.put("taskType", 2);
- map.put("startPoint", wrkMast.getSourceLocNo());
- map.put("targetPoint", wrkMast.getSourceStaNo() + "-" + wrkMast.getStaNo());
- }
-
- String response ="";
- boolean bool =false;
- try {
- log.info("wms娲惧彂浠诲姟缁檞cs鍑哄簱={}", JSON.toJSONString(map));
- response = new HttpHandler.Builder()
- // .setHeaders(headParam)
- .setUri(addrs)
- .setPath(outboundTaskSend)
- .setJson(JSON.toJSONString(map))
- .build()
- .doPost();
- JSONObject jsonObject = JSON.parseObject(response);
- if(jsonObject.getInteger("code") == 200){
- wrkMast.setWrkSts(12L);
- wrkMastService.updateById(wrkMast);
- bool = true;
- }else {
- log.error("wms娲惧彂浠诲姟缁檞cs鍑哄簱澶辫触{},杩斿洖鍊�={}", JSON.toJSONString(wrkMast), response);
+ String response = "";
+ boolean bool = false;
+ try {
+ log.info("wms娲惧彂浠诲姟缁檞cs绉诲簱={}", JSON.toJSONString(startupDto));
+ response = new HttpHandler.Builder()
+ .setUri(addrs)
+ .setPath(locMoveTask)
+ .setJson(JSON.toJSONString(startupDto))
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getInteger("code") == 200) {
+ wrkMast.setWrkSts(12L);
+ wrkMastService.updateById(wrkMast);
+ bool = true;
+ } else {
+ log.error("wms娲惧彂浠诲姟缁檞cs绉诲簱澶辫触{},杩斿洖鍊�={}", JSON.toJSONString(wrkMast), response);
+ }
+ } catch (Exception e) {
+ log.error("wms娲惧彂浠诲姟缁檞cs绉诲簱澶辫触{},杩斿洖鍊�={}", JSON.toJSONString(wrkMast), response);
+ } finally {
+ apiLogService.save("wms娲惧彂浠诲姟缁檞cs绉诲簱"
+ , addrs + locMoveTask
+ , null
+ , "127.0.0.1"
+ , JSON.toJSONString(startupDto)
+ , response
+ , bool
+ );
}
- } catch (Exception e) {
- log.error("wms娲惧彂浠诲姟缁檞cs鍑哄簱澶辫触{},杩斿洖鍊�={}", JSON.toJSONString(wrkMast), response);
- } finally {
- apiLogService.save("wms娲惧彂浠诲姟缁檞cs鍑哄簱"
- , addrs + outboundTaskSend
- , null
- , "127.0.0.1"
- , JSON.toJSONString(map)
- , response
- , bool
- );
+ } else {
+ String response ="";
+ boolean bool =false;
+ try {
+ log.info("wms娲惧彂浠诲姟缁檞cs鍑哄簱={}", JSON.toJSONString(startupDto));
+ response = new HttpHandler.Builder()
+ .setUri(addrs)
+ .setPath(outTask)
+ .setJson(JSON.toJSONString(startupDto))
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ if(jsonObject.getInteger("code") == 200){
+ wrkMast.setWrkSts(12L);
+ wrkMastService.updateById(wrkMast);
+ bool = true;
+ }else {
+ log.error("wms娲惧彂浠诲姟缁檞cs鍑哄簱澶辫触{},杩斿洖鍊�={}", JSON.toJSONString(wrkMast), response);
+ }
+ } catch (Exception e) {
+ log.error("wms娲惧彂浠诲姟缁檞cs鍑哄簱澶辫触{},杩斿洖鍊�={}", JSON.toJSONString(wrkMast), response);
+ } finally {
+ apiLogService.save("wms娲惧彂浠诲姟缁檞cs鍑哄簱"
+ , addrs + outTask
+ , null
+ , "127.0.0.1"
+ , JSON.toJSONString(startupDto)
+ , response
+ , bool
+ );
+ }
}
return SUCCESS;
-
}
}
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 3faf851..be8d545 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -1,7 +1,11 @@
package com.zy.asrs.utils;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Arith;
import com.core.common.Cools;
+import com.core.common.SpringUtils;
+import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.service.LocMastService;
import com.zy.common.model.LocGroupOrder;
import com.zy.common.properties.SlaveProperties;
@@ -136,6 +140,11 @@
return checkOrder;
}
+ public static List<Integer> getOutStaNoList() {
+ SlaveProperties slaveProperties = SpringUtils.getBean(SlaveProperties.class);
+ return slaveProperties.getOutStaNoList();
+ }
+
//鍒ゆ柇鏄惁鏄繁搴撲綅
public static boolean isDeepLoc(String locNo){
int i = getRow(locNo);
diff --git a/src/main/java/com/zy/common/properties/SlaveProperties.java b/src/main/java/com/zy/common/properties/SlaveProperties.java
index f953f3e..de13365 100644
--- a/src/main/java/com/zy/common/properties/SlaveProperties.java
+++ b/src/main/java/com/zy/common/properties/SlaveProperties.java
@@ -17,4 +17,6 @@
private List<LocGroupOrder> locGroupAscOrder;
+ private List<Integer> outStaNoList;
+
}
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 9733d3d..1c4bc4f 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
+import com.core.common.SpringUtils;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.result.FindLocNoAttributeVo;
@@ -212,20 +213,6 @@
StartupDto startupDto = new StartupDto();
- // 鑾峰彇鐩爣绔�
-// Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>().eq("type_no", staDescId).eq("stn_no", sourceStaNo).eq("crn_no", locMast.getCrnNo());
-// StaDesc staDesc = staDescService.selectOne(wrapper);
-// if (Cools.isEmpty(staDesc)) {
-// log.error("type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, crnNo);
-// throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
-// } else {
-// BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn());
-// if (!staNo.getAutoing().equals("Y")) {
-// log.error("鐩爣绔�" + staDesc.getCrnStn() + "涓嶅彲鐢�");
-// throw new CoolException("鐩爣绔�"+staDesc.getCrnStn()+"涓嶅彲鐢�");
-// }
-// startupDto.setStaNo(staNo.getDevNo());
-// }
String locNo = locMast.getLocNo();
// 鐢熸垚宸ヤ綔鍙�
int workNo = getWorkNo(0);
@@ -513,4 +500,23 @@
}
}
+ //绉诲簱浠诲姟鑾峰彇绌哄簱浣�
+ public String getLocTransferLocNo(String locNo){
+ List<Integer> locGroupDesc = Utils.getLocGroupDesc(slaveProperties, locNo);
+ //鍏堟壘娣卞簱浣�
+ List<LocMast> locMastList = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "O").in("row1", locGroupDesc));
+ if (locMastList.isEmpty()) {
+ //鎼滅储娴呭簱浣�
+ List<Integer> locGroupAsc = Utils.getLocGroupAsc(slaveProperties, locNo);
+ locMastList = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "O").in("row1", locGroupAsc));
+ }
+
+ if (locMastList.isEmpty()) {
+ return null;
+ }
+
+ LocMast locMast = locMastList.get(0);
+ return locMast.getLocNo();
+ }
+
}
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index 3a1102e..d3d8bcb 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -7,28 +7,26 @@
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.result.FindLocNoAttributeVo;
-import com.zy.asrs.entity.result.StorageResult;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.Utils;
import com.zy.common.CodeRes;
import com.zy.common.model.LocTypeDto;
import com.zy.common.model.StartupDto;
import com.zy.common.service.CommonService;
+import com.zy.common.web.param.GetLocNoReassignParam;
import com.zy.common.web.param.NotifyDto;
import com.zy.common.web.param.SearchLocParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.ReactiveTypeDescriptor;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
/**
* Created by vincent on 2020/10/30
@@ -78,6 +76,15 @@
return R.ok(map);
}
+ @PostMapping("/reassign/loc/v1")
+ @ResponseBody
+ @Transactional
+ public synchronized R getLocNoReassign(@RequestBody(required = false) GetLocNoReassignParam param) {
+ log.info("鏀跺埌WCS閲嶆柊鍒嗛厤鍏ュ簱鎺ュ彛璇锋眰====>>鍏ュ弬:{}", param);
+ StartupDto dto = startupFullReassign(param.getTaskNo(), param.getRow());
+ log.info("WCS鍏ュ簱鎺ュ彛杩斿弬:{}", dto);
+ return R.ok().add(dto);
+ }
@PostMapping("/pakin/loc/v1")
@ResponseBody
@@ -371,6 +378,78 @@
return dto;
}
+ /**
+ * 鍏ㄦ澘鍏ュ簱-閲嶆柊鍒嗛厤
+ */
+ @Transactional
+ public StartupDto startupFullReassign(String workNo, int[] row) {
+ WrkMast sourceWrkMast = wrkMastService.selectByTaskNo(workNo);
+ if(sourceWrkMast == null) {
+ throw new CoolException(workNo + "宸ヤ綔鏁版嵁涓嶅瓨鍦�");
+ }
+
+ List<WrkDetl> sourceWrkDetlList = wrkDetlService.selectByWrkNo(sourceWrkMast.getWrkNo());
+ if (sourceWrkDetlList.isEmpty()) {
+ throw new CoolException(workNo + "宸ヤ綔鏄庣粏鏁版嵁涓嶅瓨鍦�");
+ }
+
+ FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
+ findLocNoAttributeVo.setMatnr(sourceWrkDetlList.get(0).getMatnr());
+
+ LocMast sourceLocMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", sourceWrkMast.getLocNo()));
+ if (sourceLocMast == null) {
+ throw new CoolException(sourceWrkMast.getLocNo() + "搴撲綅鏁版嵁涓嶅瓨鍦�");
+ }
+
+ LocTypeDto locTypeDto = new LocTypeDto();
+ locTypeDto.setLocType1(sourceLocMast.getLocType1());
+
+ StartupDto dto = commonService.getLocNoToWmsDev(1, sourceWrkMast.getSourceStaNo(), findLocNoAttributeVo, locTypeDto, sourceWrkMast.getBarcode(), row);
+ if (dto == null) {
+ throw new CoolException("鎵句笉鍒扮┖搴撲綅");
+ }
+
+ Date now = new Date();
+ // 鐢熸垚宸ヤ綔妗�
+ sourceWrkMast.setIoTime(new Date());
+ sourceWrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+ sourceWrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
+ sourceWrkMast.setIoPri(13D); // 浼樺厛绾�
+ sourceWrkMast.setCrnNo(dto.getCrnNo());
+ sourceWrkMast.setSourceStaNo(dto.getSourceStaNo());
+ sourceWrkMast.setStaNo(dto.getStaNo());
+ sourceWrkMast.setLocNo(loc(dto.getLocNo()));
+ sourceWrkMast.setModiTime(now);
+ boolean res = wrkMastService.updateById(sourceWrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+
+ // 鏇存柊婧愬簱浣嶇姸鎬�
+ if (sourceLocMast.getLocSts().equals("S")) {
+ sourceLocMast.setLocSts("O");
+ sourceLocMast.setModiTime(now);
+ if (!locMastService.updateById(sourceLocMast)) {
+ throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅鐘舵�佷笉灞炰簬鍏ュ簱棰勭害涓�");
+ }
+
+ // 鏇存柊鐩爣搴撲綅鐘舵��
+ LocMast locMast = locMastService.selectById(loc(dto.getLocNo()));
+ if (locMast.getLocSts().equals("O")) {
+ locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+ }
+ return dto;
+ }
+
public String loc(String locNo){
String[] split = locNo.split("-");
return Utils.getLocNo(Integer.parseInt(split[0]),Integer.parseInt(split[1]),Integer.parseInt(split[2]));
diff --git a/src/main/java/com/zy/common/web/param/GetLocNoReassignParam.java b/src/main/java/com/zy/common/web/param/GetLocNoReassignParam.java
new file mode 100644
index 0000000..1ac9257
--- /dev/null
+++ b/src/main/java/com/zy/common/web/param/GetLocNoReassignParam.java
@@ -0,0 +1,13 @@
+package com.zy.common.web.param;
+
+import lombok.Data;
+
+@Data
+public class GetLocNoReassignParam {
+
+ private String taskNo;
+
+ //搴撲綅鎺�
+ private int[] row;
+
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index aa8d950..2df8c3d 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -12,7 +12,7 @@
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://127.0.0.1:1433;databasename=qlasrs-sxk
username: sa
- password: sa@123
+ password: Ab!123456
mvc:
static-path-pattern: /**
redis:
@@ -53,21 +53,28 @@
wcs-slave:
# 鐢辨祬鍏ユ繁
locGroupAscOrder: [
- {rowList: [1],minBay: 2,maxBay: 60},
- {rowList: [3,4,5,6],minBay: 2,maxBay: 60},
- {rowList: [10,9,8,7],minBay: 2,maxBay: 60},
- {rowList: [10,9,8,7,6,5,4,3],minBay: 2,maxBay: 60},
- {rowList: [12,13],minBay: 2,maxBay: 60},
- {rowList: [15,14],minBay: 2,maxBay: 60},
- {rowList: [17,18,19,20,21,22,23,24],minBay: 2,maxBay: 60},
- {rowList: [2],minBay: 2,maxBay: 60},
- {rowList: [11],minBay: 2,maxBay: 60},
- {rowList: [16],minBay: 2,maxBay: 60},
- {rowList: [25,26,27,28],minBay: 2,maxBay: 60},
- {rowList: [29,30,31,32],minBay: 2,maxBay: 60},
- {rowList: [33,34,35,36],minBay: 2,maxBay: 60},
- {rowList: [37,38,39,40],minBay: 2,maxBay: 60},
+ {rowList: [2,1],minBay: 2,maxBay: 60},
+ {rowList: [3,4],minBay: 2,maxBay: 60},
+ {rowList: [6,5],minBay: 2,maxBay: 60},
+ {rowList: [7,8],minBay: 2,maxBay: 60},
+ {rowList: [10,9],minBay: 2,maxBay: 60},
+ {rowList: [11,12],minBay: 2,maxBay: 60},
+ {rowList: [14,13],minBay: 2,maxBay: 60},
+ {rowList: [15,16],minBay: 2,maxBay: 60},
+ {rowList: [18,17],minBay: 2,maxBay: 60},
+ {rowList: [19,20],minBay: 2,maxBay: 60},
+ {rowList: [22,21],minBay: 2,maxBay: 60},
+ {rowList: [23,24],minBay: 2,maxBay: 60},
+ {rowList: [26,25],minBay: 2,maxBay: 60},
+ {rowList: [27,28],minBay: 2,maxBay: 60},
+ {rowList: [30,29],minBay: 2,maxBay: 60},
+ {rowList: [31,32],minBay: 2,maxBay: 60},
+ {rowList: [34,33],minBay: 2,maxBay: 60},
+ {rowList: [35,36],minBay: 2,maxBay: 60},
+ {rowList: [38,37],minBay: 2,maxBay: 60},
+ {rowList: [39,40],minBay: 2,maxBay: 60},
]
+ outStaNoList: [1152,1169,1177]
#wcs瀵规帴
wcs:
--
Gitblit v1.9.1