From 1fe81596a7b5042ef12dc6fbdcb7fc0cf6ff035c Mon Sep 17 00:00:00 2001 From: LSH Date: 星期一, 13 二月 2023 17:53:25 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 298 ++++++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 240 insertions(+), 58 deletions(-) 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 79107f4..34ec9c5 100644 --- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java @@ -13,8 +13,11 @@ 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.*; +import com.zy.common.model.enums.IoWorkType; import com.zy.common.model.enums.WorkNoType; +import com.zy.common.properties.SlaveProperties; import com.zy.common.service.CommonService; import com.zy.common.web.WcsController; import lombok.extern.slf4j.Slf4j; @@ -68,6 +71,12 @@ private OrderDetlService orderDetlService; @Autowired private WcsController wcsController; + @Autowired + private RowLastnoService rowLastnoService; + @Autowired + private SlaveProperties slaveProperties; + @Autowired + private WaitPakinService waitPakinService; @Override @Transactional @@ -88,7 +97,7 @@ // 鐢熸垚宸ヤ綔妗� WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); - wrkMast.setIoTime(new Date()); + wrkMast.setIoTime(now); wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱 wrkMast.setIoPri(13D); // 浼樺厛绾э細13 @@ -122,7 +131,7 @@ detlDtos.add(detlDto); } }); - wrkDetlService.createWorkDetail(workNo, detlDtos, param.getBarcode(), userId); + wrkDetlService.createWorkDetail(workNo, detlDtos, param.getBarcode(), userId, now); // 鏇存柊婧愮珯鐐逛俊鎭� sourceStaNo.setWrkNo(workNo); sourceStaNo.setModiUser(userId); @@ -168,7 +177,7 @@ @Override @Transactional - public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, Integer ioType, Long userId) { + public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId) { Date now = new Date(); // 鍚堝苟鍚岀被椤� Set<String> locNos = new HashSet<>(); @@ -187,17 +196,34 @@ dtos.add(new OutLocDto(locNo, locDetlDto)); } } - + Integer ioType = null; // 鐢熸垚宸ヤ綔妗� for (OutLocDto dto : dtos) { // 鍒ゆ柇鍏ュ嚭搴撶被鍨嬶細101.鍏ㄦ澘鍑哄簱 or 103.鎷f枡鍑哄簱 - if (ioType == null) { - ioType = dto.isAll() ? 101 : 103; + if (ioWorkType == null) { +// ioType = dto.isAll() ? 101 : 103; + ioType = 101; + } else if (ioWorkType.equals(IoWorkType.CHECK_OUT)) { + ioType = 107; } + assert ioType != null; // 鑾峰彇搴撲綅 LocMast locMast = locMastService.selectById(dto.getLocNo()); + if (Cools.isEmpty(locMast)){ + throw new CoolException("鏈壘鍒板簱浣�"); + } + if (locMast.getPackStatus()==2 ){ + throw new CoolException("浜у搧鍦ㄦ祴璇曚腑锛岀姝㈠嚭搴�"); + } + + Integer outSta = staNo.getDevNo(); + //2鍙峰爢鍨涙満鍏ㄦ澘鍑哄簱绔欐寚瀹氫负204绔欙紝鎷f枡绔欐寚瀹氫负202 + if(locMast.getCrnNo()==2){ + outSta = ioType == 101 ? 204 : 202; + } + // 鑾峰彇璺緞 - StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), staNo.getDevNo()); + StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta); // 鐢熸垚宸ヤ綔鍙� int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); // 鐢熸垚宸ヤ綔妗� @@ -216,6 +242,7 @@ wrkMast.setExitMk("N"); // 閫�鍑� wrkMast.setEmptyMk("N"); // 绌烘澘 wrkMast.setLinkMis("N"); + wrkMast.setBarcode(locMast.getBarcode()); wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁 wrkMast.setAppeTime(now); wrkMast.setModiUser(userId); @@ -270,7 +297,7 @@ LocMast locMast = locMastService.selectById(taskDto.getLocNo()); // 鑾峰彇璺緞 int ioType = taskDto.isAll() ? 101 : 103; - StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), staNo.getDevNo()); + StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo()); // 鐢熸垚宸ヤ綔鍙� int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); // 鐢熸垚宸ヤ綔妗� @@ -289,6 +316,7 @@ wrkMast.setExitMk("N"); // 閫�鍑� wrkMast.setEmptyMk("N"); // 绌烘澘 wrkMast.setLinkMis("N"); + wrkMast.setBarcode(locMast.getBarcode()); wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁 wrkMast.setAppeTime(now); wrkMast.setModiUser(userId); @@ -300,8 +328,12 @@ 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); + } WrkDetl wrkDetl = new WrkDetl(); wrkDetl.sync(orderDetl); + wrkDetl.setZpallet(wrkMast.getBarcode()); wrkDetl.setIoTime(now); wrkDetl.setWrkNo(workNo); wrkDetl.setBatch(locDto.getBatch()); @@ -343,10 +375,11 @@ LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, devpNo, null, locTypeDto, 0); int workNo = dto.getWorkNo(); + Date now = new Date(); // 鐢熸垚宸ヤ綔妗� WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); - wrkMast.setIoTime(new Date()); + wrkMast.setIoTime(now); wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱 wrkMast.setIoPri(10D); // 浼樺厛绾э細10 @@ -362,9 +395,9 @@ wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷 // 鎿嶄綔浜哄憳鏁版嵁 wrkMast.setAppeUser(userId); - wrkMast.setAppeTime(new Date()); + wrkMast.setAppeTime(now); wrkMast.setModiUser(userId); - wrkMast.setModiTime(new Date()); + wrkMast.setModiTime(now); boolean res = wrkMastService.insert(wrkMast); if (!res) { throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); @@ -372,7 +405,7 @@ // 鏇存柊婧愮珯鐐逛俊鎭� sourceStaNo.setWrkNo(workNo); sourceStaNo.setModiUser(userId); - sourceStaNo.setModiTime(new Date()); + sourceStaNo.setModiTime(now); if (!basDevpService.updateById(sourceStaNo)){ throw new CoolException("鏇存柊婧愮珯澶辫触"); } @@ -381,7 +414,7 @@ if (locMast.getLocSts().equals("O")){ locMast.setLocSts("S"); // S.鍏ュ簱棰勭害 locMast.setModiUser(userId); - locMast.setModiTime(new Date()); + locMast.setModiTime(now); if (!locMastService.updateById(locMast)){ throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�"); } @@ -415,10 +448,11 @@ if (Cools.isEmpty(sourceStaNo)) { throw new CoolException("妫�绱㈡簮绔欏け璐�"); } + Date now = new Date(); // 淇濆瓨宸ヤ綔妗� WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); - wrkMast.setIoTime(new Date()); + wrkMast.setIoTime(now); wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱 wrkMast.setIoPri(10D); @@ -432,9 +466,9 @@ wrkMast.setEmptyMk("Y"); // 绌烘澘 wrkMast.setLinkMis("N"); wrkMast.setAppeUser(userId); - wrkMast.setAppeTime(new Date()); + wrkMast.setAppeTime(now); wrkMast.setModiUser(userId); - wrkMast.setModiTime(new Date()); + wrkMast.setModiTime(now); boolean res = wrkMastService.insert(wrkMast); if (!res) { throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); @@ -443,7 +477,7 @@ if (locMast.getLocSts().equals("D")){ locMast.setLocSts("R"); locMast.setModiUser(userId); - locMast.setModiTime(new Date()); + locMast.setModiTime(now); if (!locMastService.updateById(locMast)) { throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�"); } @@ -466,7 +500,7 @@ } if (!locDetlDtos.isEmpty()) { // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱 - stockOut(staNo, locDetlDtos, 107, userId); + stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId); } else { throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�"); } @@ -476,53 +510,59 @@ @Transactional public void locMove(String sourceLocNo, String locNo, Long userId) { LocMast sourceLoc = locMastService.selectById(sourceLocNo); + List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo)); if (Cools.isEmpty(sourceLoc)){ throw new CoolException("鏈壘鍒板簱浣�"); } LocMast loc = locMastService.selectById(locNo); if (Cools.isEmpty(loc)){ throw new CoolException("鏈壘鍒板簱浣�"); + }else if (sourceLoc.getPackStatus()==2){ + throw new CoolException("浜у搧鍦ㄦ祴璇曚腑锛岀姝㈠簱浣嶇Щ鏍�"); +// }else if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) { +// throw new CoolException("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�"); + }else if(sourceLoc.getPackStatus()!=3){ + if(sourceLoc.getLocType1()!=loc.getLocType1()){ + throw new CoolException("婧愬簱涓轰笌鐩爣搴撲綅鐨勫簱浣嶇被鍨嬩笉鍚�"); + } } - if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) { - throw new CoolException("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�"); - } + Date now = new Date(); // 鑾峰彇宸ヤ綔鍙� int workNo = commonService.getWorkNo(WorkNoType.PICK.type); // 淇濆瓨宸ヤ綔妗� WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); - wrkMast.setIoTime(new Date()); + wrkMast.setIoTime(now); wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇 wrkMast.setIoPri(10D); - wrkMast.setCrnNo(sourceLoc.getCrnNo()); + wrkMast.setCrnNo(1); wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣� wrkMast.setLocNo(locNo); // 鐩爣搴撲綅 - wrkMast.setFullPlt("N"); // 婊℃澘锛歒 + wrkMast.setFullPlt(Cools.isEmpty(locDetls)?"N":"Y"); // 婊℃澘锛歒 wrkMast.setPicking("N"); // 鎷f枡 wrkMast.setExitMk("N"); // 閫�鍑� wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D")?"Y":"N"); // 绌烘澘 wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮� wrkMast.setLinkMis("N"); wrkMast.setAppeUser(userId); - wrkMast.setAppeTime(new Date()); + wrkMast.setAppeTime(now); wrkMast.setModiUser(userId); - wrkMast.setModiTime(new Date()); + wrkMast.setModiTime(now); boolean res = wrkMastService.insert(wrkMast); if (!res) { throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); } // 宸ヤ綔妗f槑缁嗕繚瀛� - List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo)); for (LocDetl locDetl : locDetls) { WrkDetl wrkDetl = new WrkDetl(); wrkDetl.sync(locDetl); wrkDetl.setWrkNo(workNo); - wrkDetl.setIoTime(new Date()); + wrkDetl.setIoTime(now); wrkDetl.setAnfme(locDetl.getAnfme()); - wrkDetl.setAppeTime(new Date()); + wrkDetl.setAppeTime(now); wrkDetl.setAppeUser(userId); - wrkDetl.setModiTime(new Date()); + wrkDetl.setModiTime(now); wrkDetl.setModiUser(userId); if (!wrkDetlService.insert(wrkDetl)) { throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); @@ -532,7 +572,7 @@ if (sourceLoc.getLocSts().equals("D") || sourceLoc.getLocSts().equals("F")) { sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害 sourceLoc.setModiUser(userId); - sourceLoc.setModiTime(new Date()); + sourceLoc.setModiTime(now); if (!locMastService.updateById(sourceLoc)){ throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�"); } @@ -542,7 +582,7 @@ // 淇敼鐩爣搴撲綅鐘舵�� if (loc.getLocSts().equals("O")) { loc.setLocSts("S"); // S.鍏ュ簱棰勭害 - loc.setModiTime(new Date()); + loc.setModiTime(now); loc.setModiUser(userId); if (!locMastService.updateById(loc)) { throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�"); @@ -695,7 +735,7 @@ } } locMast.setModiUser(userId); - locMast.setModiTime(new Date()); + locMast.setModiTime(now); if (!locMastService.updateById(locMast)) { throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�"); } @@ -705,6 +745,7 @@ @Override @Transactional public void cancelWrkMast(String workNo, Long userId) { + Date now = new Date(); WrkMast wrkMast = wrkMastService.selectById(workNo); if (Cools.isEmpty(wrkMast)){ throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪"); @@ -715,19 +756,16 @@ if (wrkMast.getWrkSts() < 4) { locNo = wrkMast.getLocNo(); locSts = "O"; - /** - * 搴撲綅杞Щ - * 鍙栨秷鍚� 婧愬簱浣� ==>> F.鍦ㄥ簱 - * 鐩爣搴撲綅 ===>> O.绌哄簱浣� - **/ + + // 搴撲綅杞Щ if (wrkMast.getIoType() == 11) { // 搴撲綅杞Щ锛氭簮搴撲綅 LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo()); if (Cools.isEmpty(locMast)) { throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:"+ wrkMast.getSourceLocNo()); } - locMast.setLocSts("F"); - locMast.setModiTime(new Date()); + locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F"); + locMast.setModiTime(now); locMast.setModiUser(userId); locMastService.updateById(locMast); } @@ -742,35 +780,83 @@ locSts = "D"; // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉� } else if (wrkMast.getIoType() == 11) { - locSts = "F"; + locSts = wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F"; // 搴撲綅杞Щ锛氱洰鏍囧簱浣� LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); if (Cools.isEmpty(locMast)) { throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛岀洰鏍囧簱浣嶄笉瀛樺湪:"+ wrkMast.getSourceLocNo()); } locMast.setLocSts("O"); - locMast.setModiTime(new Date()); + locMast.setModiTime(now); locMast.setModiUser(userId); locMastService.updateById(locMast); } } else { throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曞彇娑�"); } - // 璁㈠崟鍏宠仈 - List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); - for (WrkDetl wrkDetl : wrkDetls) { - if (!Cools.isEmpty(wrkDetl.getOrderNo())) { - if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) { - throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触"); + + //鍙栨秷鍏ュ簱宸ヤ綔妗f椂锛屾煡璇㈢粍鎵樿〃锛屽鏋滄湁灏嗙姸鎬佹敼涓哄緟澶勭悊 + if(wrkMast.getIoType() == 1) { + List<WaitPakin> waitPakins=waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode())); + for (WaitPakin waitPakin:waitPakins){ + if (!Cools.isEmpty(waitPakin)) { + waitPakin.setIoStatus("N"); + waitPakin.setLocNo(""); + boolean result = waitPakinService.update(waitPakin, new EntityWrapper<WaitPakin>() + .eq("zpallet", wrkMast.getBarcode())); } - // 鐢熸垚鏂扮殑鍑哄簱浣滀笟 -// stockOutRe(wrkMast, wrkDetls); } } + + //鍙栨秷鍑哄簱宸ヤ綔妗f椂锛屾煡璇㈠崟鎹鐞嗚〃锛屽洖婊氫綔涓氫腑鏁伴噺 + if(wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103) { + List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); + for (WrkDetl wrkDetl : wrkDetls) { + if (!Cools.isEmpty(wrkDetl.getOrderNo())) { + if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) { + throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触"); + } + + //淇敼璁㈠崟涓昏〃鐘舵��,娌℃湁浣滀笟鏁伴噺鏃舵墠鍙互淇敼 + boolean flag = true; + List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no",wrkDetl.getOrderNo())); + for(OrderDetl orderDetl : orderDetls){ + if(orderDetl.getWorkQty() > 0){ + flag = false; + } + } + if(flag){ + Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo())); + if(!Cools.isEmpty(order) && order.getSettle()==2){ + order.setSettle(1L); + order.setUpdateBy(userId); + order.setUpdateTime(now); + } + if(!orderService.update(order,new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo()))){ + throw new CoolException("淇敼璁㈠崟鐘舵�佸け璐�"); + } + } + } + } + + } + +// // 璁㈠崟鍏宠仈 +// List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); +// for (WrkDetl wrkDetl : wrkDetls) { +// if (!Cools.isEmpty(wrkDetl.getOrderNo())) { +// if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) { +// throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触"); +// } +// // 鐢熸垚鏂扮殑鍑哄簱浣滀笟 +//// stockOutRe(wrkMast, wrkDetls); +// } +// } + // 鍙栨秷鎿嶄綔浜哄憳璁板綍 wrkMast.setManuType("鎵嬪姩鍙栨秷"); wrkMast.setModiUser(userId); - wrkMast.setModiTime(new Date()); + wrkMast.setModiTime(now); if (!wrkMastService.updateById(wrkMast)) { throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐�"); } @@ -784,7 +870,7 @@ if (wrkMast.getIoType() != 10 && wrkMast.getIoType() != 110) { // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。 if (!wrkDetlLogService.save(wrkMast.getWrkNo())) { - throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo()); +// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo()); } // 鍒犻櫎宸ヤ綔妗f槑缁� boolean wrkDetlRes = wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo)); @@ -796,7 +882,7 @@ throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:"+ locNo); } locMast.setLocSts(locSts); - locMast.setModiTime(new Date()); + locMast.setModiTime(now); locMast.setModiUser(userId); boolean locMastRes = locMastService.updateById(locMast); if (!wrkMastRes || !locMastRes) { @@ -820,9 +906,9 @@ throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曡繘琛屾搷浣�"); } // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。 - if (!wrkDetlLogService.save(wrkMast.getWrkNo())) { - throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触"); - } +// if (!wrkDetlLogService.save(wrkMast.getWrkNo())) { +// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触"); +// } // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� if (!wrkMastLogService.save(wrkMast.getWrkNo())) { throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); @@ -836,6 +922,7 @@ if (Cools.isEmpty(staDesc)) { throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�"); } + Date now = new Date(); // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�) Integer staNo = staDesc.getCrnStn(); // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� @@ -845,7 +932,7 @@ wrkMast.setStaNo(staNo); // 鐩爣绔� wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣� wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌� - wrkMast.setModiTime(new Date()); + wrkMast.setModiTime(now); wrkMast.setModiUser(userId); if (!wrkMastService.updateById(wrkMast)) { throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); @@ -853,7 +940,7 @@ // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴� LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); locMast.setLocSts("Q"); - locMast.setModiTime(new Date()); + locMast.setModiTime(now); locMast.setModiUser(userId); if (!locMastService.updateById(locMast)) { throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�"); @@ -870,4 +957,99 @@ return wcsController.startupFullPutStore(301, list.get(0).getZpallet(), locTypeDto, list); } + @Override + @Transactional + public String dealPreHaveStart(Integer wrkNo, Long userId) { + WrkMast wrkMast = wrkMastService.selectById(wrkNo); + if (wrkMast == null) { + throw new CoolException("浠诲姟宸插け鏁�"); + } + String locNo = wrkMast.getLocNo(); + LocMast locMast = locMastService.selectById(locNo); + assert locMast != null; + RowLastno rowLastno = rowLastnoService.findBySection(locMast.getRow1()); + assert rowLastno != null; + + // 鐩爣搴撲綅 + LocMast targetLoc = null; + + for (int curRow = rowLastno.getsRow(); curRow<=rowLastno.geteRow(); curRow++) { + + if (Utils.isShallowLoc(slaveProperties, curRow)) { + Integer deepRow = Utils.getDeepRow(slaveProperties, curRow); + targetLoc = locMastService.queryFreeLocMast(deepRow, locMast.getLocType1()); + // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣� + if (!locMastService.checkEmptyCount(targetLoc)) { + continue; + } + } + if (Cools.isEmpty(targetLoc)) { + targetLoc = locMastService.queryFreeLocMast(curRow, locMast.getLocType1()); + // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣� + if (!locMastService.checkEmptyCount(targetLoc)) { + continue; + } + // 鐩爣搴撲綅 ===>> 娴呭簱浣嶏紝 鍒欐牎楠屽叾娣卞簱浣嶆槸鍚︿负 F D X + if (null != targetLoc && Utils.isShallowLoc(slaveProperties, targetLoc.getLocNo())) { + LocMast deepLoc = locMastService.selectById(Utils.getDeepLoc(slaveProperties, targetLoc.getLocNo())); + if (!deepLoc.getLocSts().equals("F") && !deepLoc.getLocSts().equals("D") && !deepLoc.getLocSts().equals("X")) { + continue; + } + } + // 鐩爣搴撲綅 ===>> 娣卞簱浣嶏紝 鍒欐牎楠屽叾娴呭簱浣嶆槸鍚︿负 O + if (null != targetLoc && Utils.isDeepLoc(slaveProperties, targetLoc.getLocNo())) { + LocMast shallowLoc = locMastService.selectById(Utils.getShallowLoc(slaveProperties, targetLoc.getLocNo())); + if (!shallowLoc.getLocSts().equals("O")) { + continue; + } + } + } + + if (!Cools.isEmpty(targetLoc)) { + break; + } + + } + + if (targetLoc == null) { + throw new CoolException("鎿嶄綔澶辫触锛屽綋鍓嶄粨搴撴壘涓嶅埌绌哄簱浣�"); + } + + Date now = new Date(); + // 淇敼宸ヤ綔妗� + StaDesc staDesc = staDescService.queryCrnStn(targetLoc.getCrnNo()); + if (Cools.isEmpty(staDesc)) { + throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�"); + } + wrkMast.setWrkSts(2L); + wrkMast.setLocNo(targetLoc.getLocNo()); + wrkMast.setStaNo(staDesc.getCrnStn()); + wrkMast.setCrnNo(targetLoc.getCrnNo()); + wrkMast.setModiTime(now); + wrkMast.setModiUser(userId); + wrkMast.setPreHave("N"); + if (!wrkMastService.updateById(wrkMast)) { + throw new CoolException("淇敼宸ヤ綔妗eけ璐�"); + } + // 淇敼搴撲綅鐘舵�� O ===>>> S + if (targetLoc.getLocSts().equals("O")){ + targetLoc.setLocSts("S"); // S.鍏ュ簱棰勭害 + targetLoc.setModiUser(userId); + targetLoc.setModiTime(now); + if (!locMastService.updateById(targetLoc)){ + throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�"); + } + } else { + throw new CoolException(targetLoc.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤"); + } + // 绂佺敤寮傚父搴撲綅 +// locMast.setLocSts("X"); // X.绂佺敤 +// locMast.setModiUser(userId); +// locMast.setModiTime(now); +// if (!locMastService.updateById(locMast)){ +// throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�"); +// } + return targetLoc.getLocNo(); + } + } -- Gitblit v1.9.1