From 287170042ad762d32ca574a5ed692648ea8e002f Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期一, 14 四月 2025 08:56:29 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/common/web/WcsController.java | 227 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 214 insertions(+), 13 deletions(-)
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index 46005e3..721258a 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -8,9 +8,13 @@
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.EmptyPlateOutParam;
import com.zy.asrs.service.*;
+import com.zy.asrs.service.impl.MatServiceImpl;
+import com.zy.asrs.utils.Utils;
import com.zy.common.CodeRes;
+import com.zy.common.model.LocDto;
import com.zy.common.model.LocTypeDto;
import com.zy.common.model.StartupDto;
+import com.zy.common.model.enums.WorkNoType;
import com.zy.common.service.CommonService;
import com.zy.common.web.param.SearchLocParam;
import lombok.extern.slf4j.Slf4j;
@@ -51,6 +55,14 @@
private WorkService workService;
@Autowired
private BasCrnpService basCrnpService;
+ @Autowired
+ private StaDescService staDescService;
+ @Autowired
+ private WrkMastLogService wrkMastLogService;
+ @Autowired
+ private WrkDetlLogService wrkDetlLogService;
+ @Autowired
+ private MatServiceImpl matService;
@PostMapping("/pakin/loc/v1")
@ResponseBody
@@ -115,7 +127,7 @@
BasDevp sourceStaNo = basDevpService.checkSiteStatus(12, true);
// 妫�绱㈠簱浣�
- StartupDto dto = commonService.getLocNo(rowLastnoService.selectNextWhsType(), 10, 12, null, locTypeDto,0);
+ StartupDto dto = commonService.getLocNo(1, 10, 12, null,null,null,0, locTypeDto,0);
Date now = new Date();
// 鐢熸垚宸ヤ綔妗�
WrkMast wrkMast = new WrkMast();
@@ -143,17 +155,43 @@
@PostMapping("auto/emptyOut/v1")
@ResponseBody
- public R autoEmptyOut(){
- LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
- .eq("loc_sts", "D"));
- if (Cools.isEmpty(locMast)) {
+ public R autoEmptyOut(@RequestParam("crnNo") Integer crnNo,@RequestParam("staNo") Integer staNo) {
+ List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+ .eq("loc_sts", "D")
+ .eq("crn_no", crnNo)
+ .orderBy("lev1,bay1,row1"));
+ if (locMasts.isEmpty()) {
return R.error("搴撳瓨娌℃湁绌烘澘");
}
- EmptyPlateOutParam emptyPlateOutParam = new EmptyPlateOutParam();
- emptyPlateOutParam.setOutSite(12);
- emptyPlateOutParam.setLocNos(new ArrayList<String>(){{add(locMast.getLocNo()+"");}});
- WrkMast wrkMast = workService.emptyPlateOut(emptyPlateOutParam);
- return R.ok(!Cools.isEmpty(wrkMast)? R.ok("鑷姩绌烘墭鍑哄簱鎴愬姛,宸ヤ綔鍙�:" + wrkMast.getWrkNo()) : R.error("鐢熸垚鑷姩绌烘墭鍑哄簱澶辫触"));
+
+ for (LocMast locMast : locMasts) {
+ LocMast locMast0 = null;
+ List<String> outerLocNo = Utils.getGroupLocNo(locMast.getLocNo(), false);
+ for (String loc : outerLocNo) {
+ LocMast locMast1 = locMastService.selectByLoc(loc);
+ if (locMast1 == null) {
+ continue;
+ }
+
+ if (locMast1.getLocSts().equals("D")) {
+ locMast0 = locMast1;
+ break;
+ }
+ }
+
+ if (locMast0 == null) {
+ continue;
+ }
+
+ EmptyPlateOutParam emptyPlateOutParam = new EmptyPlateOutParam();
+ ArrayList<String> locNos = new ArrayList<>();
+ locNos.add(locMast0.getLocNo());
+ emptyPlateOutParam.setLocNos(locNos);
+ emptyPlateOutParam.setOutSite(staNo);
+ WrkMast wrkMast = workService.emptyPlateOut(emptyPlateOutParam);
+ return R.ok(!Cools.isEmpty(wrkMast) ? R.ok("鑷姩绌烘墭鍑哄簱鎴愬姛,宸ヤ綔鍙�:" + wrkMast.getWrkNo()) : R.error("鐢熸垚鑷姩绌烘墭鍑哄簱澶辫触"));
+ }
+ return R.error("鐢熸垚鑷姩绌烘墭鍑哄簱澶辫触");
}
/**
@@ -164,7 +202,8 @@
// 婧愮珯鐐圭姸鎬佹娴�
BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
// 妫�绱㈠簱浣�
- List<String> matNos = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList());
+ List<String> matnrs = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList());
+ List<String> batchs = waitPakins.stream().map(WaitPakin::getBatch).distinct().collect(Collectors.toList());
int rowCount = rowLastnoService.selectCount(null);
Integer integer = 2;
for (int i = 1; i <= rowCount; i++) {
@@ -176,7 +215,7 @@
}
}
- StartupDto dto = commonService.getLocNo(integer, 1, devpNo, matNos, locTypeDto,0);
+ StartupDto dto = commonService.getLocNo(1, 1, devpNo, matnrs.get(0),batchs.get(0),null,0, locTypeDto,0);
int workNo = dto.getWorkNo();
Date now = new Date();
// 鐢熸垚宸ヤ綔妗�
@@ -206,12 +245,17 @@
}
// 鐢熸垚宸ヤ綔妗f槑缁�
waitPakins.forEach(waitPakin -> {
+ String uuid = String.valueOf(System.currentTimeMillis());
WrkDetl wrkDetl = new WrkDetl();
wrkDetl.sync(waitPakin);
wrkDetl.setWrkNo(wrkMast.getWrkNo());
wrkDetl.setIoTime(wrkMast.getIoTime());
wrkDetl.setAppeTime(now);
wrkDetl.setModiTime(now);
+ wrkDetl.setUuid(uuid);
+ wrkDetl.setWeight(waitPakin.getWeight());
+ wrkDetl.setOwner(waitPakin.getOwner());
+ wrkDetl.setPayment(waitPakin.getPayment());
if (!wrkDetlService.insert(wrkDetl)) {
throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
}
@@ -262,7 +306,7 @@
}
}
// 妫�绱㈠簱浣�
- StartupDto dto = commonService.getLocNo(integer, 10, devpNo, null, locTypeDto,0);
+ StartupDto dto = commonService.getLocNo(1, 10, devpNo, null,null,null,0, locTypeDto,0);
int workNo = dto.getWorkNo();
// 鐢熸垚宸ヤ綔妗�
WrkMast wrkMast = new WrkMast();
@@ -309,4 +353,161 @@
return dto;
}
+ @PostMapping("/process/loc/v1")
+ @ResponseBody
+ @Transactional
+ public synchronized R processLoc() {
+ log.info("鏀跺埌WCS缃愯鍑哄簱鎺ュ彛璇锋眰");
+ Date now = new Date();
+ // 鏌ヨ搴撳瓨鐘舵�佷綅F 涓� 搴撳瓨鏄庣粏鍖呭惈璇ョ墿鏂欑殑搴撲綅
+ LocMast tarLoc = locMastService.getLocFByMatnr("BZ10100ZZ00000010");
+ if (Cools.isEmpty(tarLoc)) {
+ throw new CoolException("娌℃湁鍙嚭搴撶殑搴撲綅");
+ }
+ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("io_type", 105).ne("wrk_sts", 14));
+ if (!Cools.isEmpty(tarLoc)) {
+ if (wrkMasts.size() > 3) {
+ throw new CoolException("褰撳墠宸叉湁4绗斿嚭搴撲换鍔★紝鏆傚仠涓嬪彂");
+ }
+ }
+ // 鑾峰彇婧愮珯
+ StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
+ .eq("type_no", 105)
+ .eq("stn_no", 2301)
+ .eq("crn_no", tarLoc.getCrnNo()));
+ Integer sourceStaNo = staDesc.getCrnStn();
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(103));
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(105); // 鍏ュ嚭搴撶姸鎬�
+ wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+ wrkMast.setCrnNo(tarLoc.getCrnNo());
+ wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
+ wrkMast.setStaNo(2301); // 鐩爣绔�
+ wrkMast.setSourceLocNo(tarLoc.getLocNo()); // 婧愬簱浣�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("N");
+ wrkMast.setBarcode(tarLoc.getBarcode());
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiTime(now);
+ if (!wrkMastService.insert(wrkMast)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+tarLoc.getLocNo());
+ }
+ // 鐢熸垚宸ヤ綔妗f槑缁�
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", tarLoc.getLocNo()));
+ for (LocDetl locDetl : locDetls) {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(locDetl);
+ wrkDetl.setZpallet(wrkMast.getBarcode());
+ wrkDetl.setIoTime(now);
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setBatch(locDetl.getBatch());
+ wrkDetl.setAnfme(locDetl.getAnfme()); // 鏁伴噺
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setModiTime(now);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+ }
+ // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+ if (tarLoc.getLocSts().equals("F")) {
+ tarLoc.setLocSts("P");
+ tarLoc.setModiTime(now);
+ if (!locMastService.updateById(tarLoc)) {
+ throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+tarLoc.getLocNo());
+ }
+ } else {
+ throw new CoolException(tarLoc.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+ }
+ return R.ok();
+ }
+ @PostMapping("/process/in/loc/v1")
+ @ResponseBody
+ @Transactional
+ public synchronized R processInLoc(@RequestBody SearchLocParam param){
+ log.info("鐏岃绾挎敹鍒癢CS鍏ュ簱鎺ュ彛璇锋眰====>>鍏ュ弬:{}", param);
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+ .eq("barcode", param.getBarcode())
+ .eq("io_type", 105)
+ .eq("wrk_sts", 14));
+ if (Cools.isEmpty(wrkMast)) {
+ log.info("鏌ヨ涓嶅埌璇ユ墭鐩樼爜鐨勭綈瑁呭嚭搴撲换鍔★紝鎵樼洏鐮佷綅{" + param.getBarcode() + "}" );
+ throw new CoolException("鏌ヨ涓嶅埌璇ユ墭鐩樼爜鐨勭綈瑁呭嚭搴撲换鍔★紝鎵樼洏鐮佷綅{" + param.getBarcode() + "}" );
+ }
+ // 鑾峰彇鐩爣绔�
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", 55)
+ .eq("stn_no", 2106)
+ .eq("crn_no", wrkMast.getCrnNo());
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ if (Cools.isEmpty(staDesc)) {
+ throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦紒");
+ }
+ try {
+ // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
+ if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
+ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触");
+ }
+ // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+ if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
+ throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
+ }
+ Date now = new Date();
+ // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
+ Integer staNo = staDesc.getCrnStn();
+ // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
+ wrkMast.setIoTime(now);
+ wrkMast.setIoType(55);
+ wrkMast.setWrkSts(2L);
+ wrkMast.setSourceStaNo(2106);
+ wrkMast.setStaNo(staNo);
+ wrkMast.setLocNo(wrkMast.getSourceLocNo(
+
+ ));
+ wrkMast.setSourceLocNo("");
+ wrkMast.setModiTime(now);
+ if (!wrkMastService.updateById(wrkMast)) {
+ throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+ }
+ List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+ for (WrkDetl wrkDetl : wrkDetls) {
+ Mat mat = matService.selectByMatnr("CP10103TY22014617");
+ WrkDetl wrkDetl1 = new WrkDetl();
+ wrkDetl1.sync(wrkDetl);
+ wrkDetl1.sync(mat);
+ wrkDetl1.setBatch(param.getBatch());
+ wrkDetl1.setIoTime(now);
+ wrkDetlService.insert(wrkDetl1);
+ }
+ wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("matnr", "BZ10100ZZ00000010").eq("wrk_no",wrkMast.getWrkNo()));
+ // 鏇存柊鏄庣粏妗o_time (鍘嗗彶妗e叧鑱斾娇鐢級
+// wrkDetlService.updateIoTime(wrkMast.getWrkNo(), now);
+
+ // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
+ LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+ locMast.setLocSts("Q");
+ locMast.setModiTime(new Date());
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
+ }
+
+ } catch (Exception e) {
+ throw new CoolException("鍏ュ簱澶辫触锛�");
+ }
+ StartupDto dto = new StartupDto();
+ dto.setWorkNo(wrkMast.getWrkNo());
+ dto.setCrnNo(wrkMast.getCrnNo());
+ dto.setSourceStaNo(wrkMast.getSourceStaNo());
+ dto.setStaNo(wrkMast.getStaNo());
+ dto.setLocNo(wrkMast.getLocNo());
+ log.info("WCS鍏ュ簱鎺ュ彛杩斿弬:{},鎵樼洏鐮�:{}", dto, param.getBarcode());
+ return R.ok().add(dto);
+ }
}
--
Gitblit v1.9.1