From b6e0bec71de45cad64e9de14977770053be7e010 Mon Sep 17 00:00:00 2001 From: pang.jiabao <pang_jiabao@163.com> Date: 星期二, 10 六月 2025 19:28:02 +0800 Subject: [PATCH] 流程更改 --- src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 497 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 419 insertions(+), 78 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 fe07b72..e9920df 100644 --- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java @@ -12,7 +12,10 @@ import com.zy.asrs.entity.param.FullStoreParam; import com.zy.asrs.entity.param.LocDetlAdjustParam; import com.zy.asrs.entity.param.StockOutParam; +import com.zy.asrs.mapper.LocMastMapper; +import com.zy.asrs.entity.result.FindLocNoAttributeVo; import com.zy.asrs.service.*; +import com.zy.asrs.utils.OrderInAndOutUtil; import com.zy.asrs.utils.Utils; import com.zy.common.model.*; import com.zy.common.model.enums.IoWorkType; @@ -25,6 +28,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -78,6 +82,18 @@ @Autowired private WaitPakinService waitPakinService; + @Autowired + private LocOwnerService locOwnerService; + + @Autowired + private ManLocDetlService manLocDetlService; + + @Resource + private LocMastMapper locMastMapper; + + @Resource + private OrderPakoutService orderPakOutService; + @Override @Transactional public String startupFullPutStore(FullStoreParam param, Long userId) { @@ -90,8 +106,13 @@ BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getDevpNo(), true); // 妫�绱㈠簱浣� LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); - List<String> matnrs = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatnr).distinct().collect(Collectors.toList()); - StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo(), matnrs, locTypeDto, 0); +// List<String> matnrs = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatnr).distinct().collect(Collectors.toList()); +// List<String> batchs = param.getList().stream().map(FullStoreParam.MatCodeStore::getBatch).distinct().collect(Collectors.toList()); + FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(param.getList().get(0)); + StartupDto dto = commonService.getLocNo(1, param.getDevpNo(), findLocNoAttributeVo,locTypeDto); + if (Cools.isEmpty(dto)){ + throw new CoolException("鏌ヨ搴撲綅澶辫触锛侊紒==銆媠tartupFullPutStore ==銆� commonService.getLocNo"); + } // 鐢熸垚宸ヤ綔鍙� int workNo = dto.getWorkNo(); // 鐢熸垚宸ヤ綔妗� @@ -122,9 +143,9 @@ // 鐢熸垚宸ヤ綔妗f槑缁� List<DetlDto> detlDtos = new ArrayList<>(); param.getList().forEach(elem -> { - DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme()); + DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(),elem.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(),elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3(), elem.getAnfme()); if (DetlDto.has(detlDtos, detlDto)) { - DetlDto detlDto1 = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch()); + DetlDto detlDto1 = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(),detlDto.getBrand(),detlDto.getStandby1(),detlDto.getStandby2(),detlDto.getStandby3(),detlDto.getBoxType1(),detlDto.getBoxType2(),detlDto.getBoxType3()); assert detlDto1 != null; detlDto1.setAnfme(detlDto1.getAnfme() + detlDto.getAnfme()); } else { @@ -163,15 +184,105 @@ List<LocDetlDto> locDetlDtos = new ArrayList<>(); for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) { - LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch()); + LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(),paramLocDetl.getBrand() + ,paramLocDetl.getStandby1(),paramLocDetl.getStandby2(),paramLocDetl.getStandby3(),paramLocDetl.getBoxType1(),paramLocDetl.getBoxType2(),paramLocDetl.getBoxType3()); if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount())); } } if (!locDetlDtos.isEmpty()) { - // 鍚姩鍑哄簱寮�濮� 101.鍑哄簱 - stockOut(staNo, locDetlDtos, null, userId); + // 搴撲綅鍙烽泦鍚� + List<String> locNoList = param.getLocDetls().stream().map(StockOutParam.LocDetl::getLocNo).distinct().collect(Collectors.toList()); + String firstFrozenLocNo = locMastMapper.findFirstFrozenLocNo(locNoList); + if (firstFrozenLocNo != null) { + throw new CoolException(firstFrozenLocNo + "搴撲綅宸茶鍐荤粨!"); + } + LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo())); + if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D") ){ + // 鍚姩鍑哄簱寮�濮� 101.鍑哄簱 + stockOut(staNo, locDetlDtos, null, userId); + }else { + throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎銆丏鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$()); + } } else { throw new CoolException("搴撳瓨涓嶅瓨鍦�"); + } + } + + @Override + @Transactional + public void turnOverOut(EmptyPlateOutParam param, Long userId) { + try { + if (Cools.isEmpty(param.getOwnerId())) { + throw new CoolException("瀹㈡埛鍚嶇О涓嶈兘涓虹┖"); + }else if (param.getLocDetls().size()<=0){ + throw new CoolException("璇锋彁鍙栨槑缁�"); + } + ArrayList<String> locNos = new ArrayList<>(); + String[][] locNos2 =new String[param.getLocDetls().size()][4]; + int i=0; + for (EmptyPlateOutParam.LocDetl locDetl : param.getLocDetls()){ + if (!locNos.contains(locDetl.getLoc_no())){ + locNos.add(locDetl.getLoc_no()); + locNos2[i][0]=locDetl.getLoc_no(); + locNos2[i][1]=locDetl.getManu(); + locNos2[i][2] = locDetl.getMatnr(); + locNos2[i][3] = locDetl.getBatch(); + i++; + } + } + LocOwner locOwner = locOwnerService.selectById(param.getOwnerId()); + param.setOwner(locOwner.getOwner()); + String lgort = ""; + String owner=""; + List<DetlDto> detlDtos = new ArrayList<>(); + for (String[] locNo1 : locNos2) { + String locNo = locNo1[0]; + if (locNo1[1].equals("骞冲簱")){ + List<ManLocDetl> manLocDetls = new ArrayList<>(); + if (locNo1[3] == null){ + manLocDetls = manLocDetlService.selectList(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr",locNo1[2])); + }else { + manLocDetls = manLocDetlService.selectList(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr",locNo1[2]).eq("batch",locNo1[3])); + } + for (ManLocDetl manLocDetl:manLocDetls){ + if (Cools.isEmpty(owner)) { + owner = manLocDetl.getOwner$(); + } +// detlDtos.add(new DetlDto(manLocDetl.getMatnr(), manLocDetl.getBatch(),manLocDetl.getBrand(), +// manLocDetl.getStandby1(),manLocDetl.getStandby2(),manLocDetl.getStandby3(), +// manLocDetl.getBoxType1(),manLocDetl.getBoxType2(),manLocDetl.getBoxType3(), manLocDetl.getAnfme())); + manLocDetl.setOwner(param.getOwnerId()); + try{ + manLocDetlService.update(manLocDetl,new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr",manLocDetl.getMatnr())); + }catch (Exception e){ + throw new Exception("鏇存柊搴撳瓨鏄庣粏鎷ユ湁鑰呭瓧娈典俊鎭嚭閿欎簡"); + } + } + }else if (locNo1[1].equals("绔嬪簱")){ + List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", locNo).eq("matnr",locNo1[2]).eq("batch",locNo1[3])); + for (LocDetl locDetl:locDetls){ + if (Cools.isEmpty(lgort)) { + lgort = locDetl.getOrigin(); + } + if (Cools.isEmpty(owner)) { + owner = locDetl.getOwner$(); + } + detlDtos.add(new DetlDto(locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(), + locDetl.getStandby1(),locDetl.getStandby2(),locDetl.getStandby3(), + locDetl.getBoxType1(),locDetl.getBoxType2(),locDetl.getBoxType3(), locDetl.getAnfme())); + locDetl.setOwner(param.getOwnerId()); + try{ + locDetlService.update(locDetl,new EntityWrapper<LocDetl>().eq("loc_no", locNo).eq("matnr",locDetl.getMatnr())); + }catch (Exception e){ + throw new Exception("鏇存柊搴撳瓨鏄庣粏鎷ユ湁鑰呭瓧娈典俊鎭嚭閿欎簡"); + } + } + }else { + throw new Exception("鏇存柊搴撲綅鎷ユ湁鑰呭瓧娈典俊鎭嚭閿欎簡"); + } + } + }catch (Exception e){ + throw new CoolException("绉讳氦浣滀笟鍑洪敊浜嗭細"+e); } } @@ -236,6 +347,7 @@ wrkMast.setEmptyMk("N"); // 绌烘澘 wrkMast.setLinkMis("N"); wrkMast.setBarcode(locMast.getBarcode()); + wrkMast.setPdcType(dto.getLocDetlDtos().get(0).getLocDetl().getModel()); wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁 wrkMast.setAppeTime(now); wrkMast.setModiUser(userId); @@ -288,8 +400,10 @@ } // 鑾峰彇搴撲綅 LocMast locMast = locMastService.selectById(taskDto.getLocNo()); - // 鑾峰彇璺緞 - int ioType = taskDto.isAll() ? 101 : 103; + // 鍒ゆ柇鏄惁鏄洏鐐瑰崟 + String orderNo = taskDto.getLocDtos().get(0).getOrderNo(); + OrderPakout orderPakout = orderPakOutService.selectByNo(orderNo); + int ioType = orderPakout.getDocType() == 8 ? 107 : (taskDto.isAll() ? 101 : 103); StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo()); // 鐢熸垚宸ヤ綔鍙� int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); @@ -320,10 +434,14 @@ // 鐢熸垚宸ヤ綔妗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); - } +// OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch()); + OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.FALSE, locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getBrand() + ,locDto.getStandby1(),locDto.getStandby2(),locDto.getStandby3(),locDto.getBoxType1(),locDto.getBoxType2(),locDto.getBoxType3()); +// if (orderDetl == null) { +//// orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null); +// orderDetl = OrderInAndOutUtil.selectItem(Boolean.FALSE, locDto.getOrderNo(), locDto.getMatnr(), null); +// +// } WrkDetl wrkDetl = new WrkDetl(); wrkDetl.sync(orderDetl); wrkDetl.setZpallet(wrkMast.getBarcode()); @@ -339,11 +457,16 @@ 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); +// // 淇敼璁㈠崟鏄庣粏 +// if (!orderDetlService.increaseWorkQty(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) { +// throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触"); +// } +// orderService.updateSettle(orderDetl.getOrderId(), 2L, userId); + OrderInAndOutUtil.increaseWorkQty(Boolean.FALSE,orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), + orderDetl.getBrand(),orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(), + orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3() + , locDto.getAnfme()); + OrderInAndOutUtil.updateOrder(Boolean.FALSE,orderDetl.getOrderId(), 2L, userId); } // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓� locMast = locMastService.selectById(taskDto.getLocNo()); @@ -366,7 +489,9 @@ BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); // 妫�绱㈠簱浣� LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); - StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, devpNo, null, locTypeDto, 0); + FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(); + + StartupDto dto = commonService.getLocNo( 10, devpNo, findLocNoAttributeVo, locTypeDto); int workNo = dto.getWorkNo(); Date now = new Date(); // 鐢熸垚宸ヤ綔妗� @@ -423,6 +548,13 @@ if (Cools.isEmpty(param.getOutSite())) { throw new CoolException("绔欑偣涓嶅瓨鍦�"); } + + // 搴撲綅鍐荤粨涓嶈兘鍑哄簱 + String firstFrozenLocNo = locMastMapper.findFirstFrozenLocNo(param.getLocNos()); + if (firstFrozenLocNo != null) { + throw new CoolException(firstFrozenLocNo + "搴撲綅宸茶鍐荤粨!"); + } + for (String locNo : param.getLocNos()) { // 鑾峰彇宸ヤ綔鍙� int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type); @@ -430,6 +562,9 @@ LocMast locMast = locMastService.selectById(locNo); if (Cools.isEmpty(locMast)) { throw new CoolException(locNo+"搴撲綅涓嶅瓨鍦�"); + } + if (!locMast.getLocSts().equals("D")){ + throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篋鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$()); } // 鑾峰彇婧愮珯 Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() @@ -487,7 +622,7 @@ } for (String locNo : param.getLocNos()) { // 鑾峰彇宸ヤ綔鍙� - int workNo = commonService.getWorkNo(0); + int workNo = commonService.getWorkNo(2); // 鑾峰彇搴撲綅 LocMast locMast = locMastService.selectById(locNo); if (Cools.isEmpty(locMast)) { @@ -509,8 +644,8 @@ wrkMast.setWrkNo(workNo); wrkMast.setIoTime(now); wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID - wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱 - wrkMast.setIoPri(10D); + wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬� + wrkMast.setIoPri(14D); wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯 wrkMast.setStaNo(param.getOutSite()); // 鐩爣绔� wrkMast.setCrnNo(locMast.getCrnNo()); @@ -524,13 +659,12 @@ wrkMast.setAppeTime(now); wrkMast.setModiUser(1L); wrkMast.setModiTime(now); - wrkMast.setMemo("鐢熸垚鑷姩绌烘澘鍑哄簱"); boolean res = wrkMastService.insert(wrkMast); if (!res) { throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); } // 鏇存柊搴撲綅鐘舵�� D.绌烘澘 -> R.鍑哄簱棰勭害 - if (locMast.getLocSts().equals("D")){ + if (locMast.getLocSts().equals("M") || locMast.getLocSts().equals("Z")){ locMast.setLocSts("R"); locMast.setModiUser(1L); locMast.setModiTime(now); @@ -551,13 +685,25 @@ List<LocDetlDto> locDetlDtos = new ArrayList<>(); for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) { - LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch()); + LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(),paramLocDetl.getBrand() + ,paramLocDetl.getStandby1(),paramLocDetl.getStandby2(),paramLocDetl.getStandby3(),paramLocDetl.getBoxType1(),paramLocDetl.getBoxType2(),paramLocDetl.getBoxType3()); if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount())); } } if (!locDetlDtos.isEmpty()) { - // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱 - stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId); + // 搴撲綅鍙烽泦鍚� + List<String> locNoList = param.getLocDetls().stream().map(StockOutParam.LocDetl::getLocNo).distinct().collect(Collectors.toList()); + String firstFrozenLocNo = locMastMapper.findFirstFrozenLocNo(locNoList); + if (firstFrozenLocNo != null) { + throw new CoolException(firstFrozenLocNo + "搴撲綅宸茶鍐荤粨!"); + } + LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo())); + if (locMast.getLocSts().equals("F")){ + // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱 + stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId); + }else { + throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$()); + } } else { throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�"); } @@ -574,6 +720,22 @@ LocMast loc = locMastService.selectById(locNo); if (Cools.isEmpty(loc)){ throw new CoolException("鏈壘鍒板簱浣�"); + } + // 鍒ゆ柇搴撲綅鏄惁鍐荤粨 + String sourceLocFrozen = locMastMapper.findFirstFrozenLocNo(Arrays.asList(sourceLoc.getLocNo(),loc.getLocNo())); + if (sourceLocFrozen != null) { + throw new CoolException(sourceLocFrozen + "搴撲綅宸茶鍐荤粨!"); + } + + // 鍒ゆ柇搴撳瓨鏄惁鍐荤粨 + Optional<LocDetl> first = locDetls.stream().filter(locDetl -> locDetl.getFrozen() == 1).findFirst(); + if (first.isPresent()) { + LocDetl locDetl = first.get(); + throw new CoolException(locDetl.getLocNo() + "," + locDetl.getMatnr() + "," + locDetl.getBatch() + "搴撳瓨鏄庣粏宸茶鍐荤粨!"); + } + + if (!loc.getLocSts().equals("O") || (!sourceLoc.getLocSts().equals("F") && !sourceLoc.getLocSts().equals("D"))){ + throw new CoolException("搴撲綅鐘舵�佸凡鏀瑰彉"); } if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) { throw new CoolException("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�"); @@ -651,15 +813,26 @@ if (Cools.isEmpty(wrkMast)){ throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪"); } + if (wrkMast.getStaNo() == 1090 && wrkMast.getLocNo() == null) { + throw new CoolException(workNo+"宸ヤ綔妗f棤娉曞畬鎴�,搴撲綅鍙蜂负绌猴紒"); + } if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 14) { throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚"); } + // 瀹屾垚绌烘《搴撳叆鍑哄簱浠诲姟鍙︿竴涓换鍔� + int workNoOther = 0; // 鍏ュ簱 + 搴撲綅杞Щ - if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) { + if ((wrkMast.getWrkSts() < 4 && wrkMast.getIoType() != 101 && wrkMast.getIoType() != 110) || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) { wrkMast.setWrkSts(4L); + workNoOther = wrkMast.getWorkNoOther(); // 鍑哄簱 - } else if (wrkMast.getWrkSts() > 10) { - wrkMast.setWrkSts(14L); + } else if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 110) { + if(wrkMast.getWrkSts() == 2) { + wrkMast.setWrkSts(15L); + } else { + wrkMast.setWrkSts(14L); + } + workNoOther = wrkMast.getWorkNoOther(); } Date now = new Date(); wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true)); @@ -670,6 +843,16 @@ wrkMast.setManuType("鎵嬪姩瀹屾垚"); if (!wrkMastService.updateById(wrkMast)) { throw new CoolException("淇敼宸ヤ綔妗eけ璐�"); + } + if(workNoOther != 0) { + WrkMast wrkMast1 = wrkMastService.selectById(workNoOther); + wrkMast1.setWrkSts(wrkMast.getWrkSts()); + wrkMast1.setCrnStrTime(wrkMast.getCrnStrTime()); + wrkMast1.setCrnEndTime(now); + wrkMast1.setModiTime(now); + wrkMast1.setModiUser(userId); + wrkMast1.setManuType("鎵嬪姩瀹屾垚"); + wrkMastService.updateById(wrkMast1); } } @@ -690,6 +873,31 @@ List<LocDetlAdjustParam.LocDetlAdjust> list = param.getList(); + // 娣诲姞鍘嗗彶宸ヤ綔涓绘。 + WrkMastLog wrkMast = new WrkMastLog(); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(5); + wrkMast.setIoPri(13D); // 浼樺厛绾� + wrkMast.setCrnNo(locMast.getCrnNo()); + wrkMast.setSourceLocNo(locMast.getLocNo()); + wrkMast.setLocNo(locMast.getLocNo()); + wrkMast.setBarcode(locMast.getBarcode()); // 鎵樼洏鐮� + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("N"); // 绌烘澘 + wrkMast.setLinkMis("Y"); + // 鎿嶄綔浜哄憳鏁版嵁 + wrkMast.setAppeTime(now); + wrkMast.setModiTime(now); + wrkMast.setAppeUser(userId); + wrkMast.setModiUser(userId); + + // 澧炲垹鏀瑰彧鍒涘缓涓�娆″伐浣滀富妗� + boolean updateFlag = true; + boolean deleteFlag = true; + boolean addFlag = true; + // 淇敼鏁伴噺 Iterator<LocDetl> iterator = locDetls.iterator(); while (iterator.hasNext()) { @@ -703,7 +911,8 @@ if (!locDetl.getAnfme().equals(adjust.getCount())) { // todo 鐩樼偣璁板綍 // 淇敼搴撳瓨 - if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) { + if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(), + locDetl.getStandby1(),locDetl.getStandby2(),locDetl.getStandby3(),locDetl.getBoxType1(),locDetl.getBoxType2(),locDetl.getBoxType3())) { throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿淇敼鏁伴噺澶辫触"); } // 淇濆瓨璋冩暣璁板綍 @@ -718,6 +927,30 @@ adjDetl.setAppeTime(now); adjDetl.setAppeUser(userId); adjDetlService.save(adjDetl, userId); + + if (updateFlag) { + wrkMast.setWrkNo(commonService.getWorkNo(3)); + wrkMast.setIoType(23); + boolean res = wrkMastLogService.insert(wrkMast); + if (!res) { + throw new CoolException("搴撳瓨璋冩暣-淇敼 淇濆瓨宸ヤ綔妗eけ璐�"); + } + updateFlag = false; + } + + // 娣诲姞鍘嗗彶宸ヤ綔鏄庣粏 + WrkDetlLog wrkDetl = new WrkDetlLog(); + wrkDetl.sync(locDetl); + wrkDetl.setWrkNo(wrkMast.getWrkNo()); + wrkDetl.setIoTime(wrkMast.getIoTime()); + wrkDetl.setAnfme(adjust.getCount()); + wrkDetl.setAppeTime(now); + wrkDetl.setModiTime(now); + wrkMast.setAppeUser(userId); + wrkMast.setModiUser(userId); + if (!wrkDetlLogService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); + } } iterator.remove(); iterator1.remove(); @@ -728,7 +961,8 @@ // 鍒犻櫎搴撳瓨 for (LocDetl locDetl : locDetls) { // todo 鐩樼偣璁板綍 - if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) { + if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(), + locDetl.getStandby1(),locDetl.getStandby2(),locDetl.getStandby3(),locDetl.getBoxType1(),locDetl.getBoxType2(),locDetl.getBoxType3())) { throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿搴撳瓨鏄庣粏澶辫触"); } // 淇濆瓨璋冩暣璁板綍 @@ -743,6 +977,30 @@ adjDetl.setAppeTime(now); adjDetl.setAppeUser(userId); adjDetlService.save(adjDetl, userId); + + if (deleteFlag) { + wrkMast.setWrkNo(commonService.getWorkNo(3)); + wrkMast.setIoType(22); + boolean res = wrkMastLogService.insert(wrkMast); + if (!res) { + throw new CoolException("搴撳瓨璋冩暣-鍒犻櫎 淇濆瓨宸ヤ綔妗eけ璐�"); + } + deleteFlag = false; + } + + // 娣诲姞鍘嗗彶宸ヤ綔鏄庣粏 + WrkDetlLog wrkDetl = new WrkDetlLog(); + wrkDetl.sync(locDetl); + wrkDetl.setWrkNo(wrkMast.getWrkNo()); + wrkDetl.setIoTime(wrkMast.getIoTime()); + wrkDetl.setAnfme(0.0); + wrkDetl.setAppeTime(now); + wrkDetl.setModiTime(now); + wrkMast.setAppeUser(userId); + wrkMast.setModiUser(userId); + if (!wrkDetlLogService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); + } } // 娣诲姞搴撳瓨 @@ -753,6 +1011,7 @@ locDetl.sync(mat); locDetl.setBatch(adjust.getBatch()); locDetl.setLocNo(locMast.getLocNo()); + locDetl.setZpallet(locMast.getBarcode()); locDetl.setAnfme(adjust.getCount()); // 鏁伴噺 locDetl.setModiUser(userId); // 鎿嶄綔浜哄憳淇℃伅 locDetl.setModiTime(now); @@ -773,6 +1032,30 @@ adjDetl.setAppeTime(now); adjDetl.setAppeUser(userId); adjDetlService.save(adjDetl, userId); + + if (addFlag) { + wrkMast.setWrkNo(commonService.getWorkNo(3)); + wrkMast.setIoType(21); + boolean res = wrkMastLogService.insert(wrkMast); + if (!res) { + throw new CoolException("搴撳瓨璋冩暣-鏂板 淇濆瓨宸ヤ綔妗eけ璐�"); + } + addFlag = false; + } + + // 娣诲姞鍘嗗彶宸ヤ綔鏄庣粏 + WrkDetlLog wrkDetl = new WrkDetlLog(); + wrkDetl.sync(locDetl); + wrkDetl.setWrkNo(wrkMast.getWrkNo()); + wrkDetl.setIoTime(wrkMast.getIoTime()); + wrkDetl.setAnfme(adjust.getCount()); + wrkDetl.setAppeTime(now); + wrkDetl.setModiTime(now); + wrkMast.setAppeUser(userId); + wrkMast.setModiUser(userId); + if (!wrkDetlLogService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); + } } // 淇敼搴撲綅鐘舵�� int count = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo())); @@ -805,7 +1088,7 @@ String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣� String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬� // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級 - if (wrkMast.getWrkSts() < 4) { + if (wrkMast.getWrkSts() <= 10) { locNo = wrkMast.getLocNo(); locSts = "O"; @@ -824,13 +1107,17 @@ // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛� } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14) { locNo = wrkMast.getSourceLocNo(); - // 鍑哄簱 ===>> F.鍦ㄥ簱 - if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) { + if (wrkMast.getIoType() == 110) { + if(wrkMast.getStaNo() == 1035) { // 瀛愭媶鐩樻満绔欑偣 + locSts = "Z"; + }else { + locSts = "M"; + } +// locSts = "D"; + } else if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) { + // 鍑哄簱 ===>> F.鍦ㄥ簱 locSts = "F"; - // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉� - } else if (wrkMast.getIoType() == 110) { - locSts = "D"; - // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉� + // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉� } else if (wrkMast.getIoType() == 11) { locSts = wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F"; // 搴撲綅杞Щ锛氱洰鏍囧簱浣� @@ -847,48 +1134,43 @@ 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(""); - waitPakinService.update(waitPakin, new EntityWrapper<WaitPakin>() - .eq("order_no", waitPakin.getOrderNo()) - .eq("matnr", waitPakin.getMatnr()) - .eq("batch", waitPakin.getBatch())); - } - } - } + // 鍒犻櫎缁勬墭閫氱煡妗� + waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet",wrkMast.getBarcode())); + //鍙栨秷鍑哄簱宸ヤ綔妗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("璁㈠崟鏁版嵁鍥炴粴澶辫触"); - } +// if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) { +// throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触"); +// } + OrderInAndOutUtil.decrease(Boolean.FALSE,wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(), + wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), + wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3(), wrkDetl.getAnfme()); //淇敼璁㈠崟涓昏〃鐘舵��,娌℃湁浣滀笟鏁伴噺鏃舵墠鍙互淇敼 boolean flag = true; - List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no",wrkDetl.getOrderNo())); +// List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no",wrkDetl.getOrderNo())); + Order order = OrderInAndOutUtil.selectByNo(Boolean.FALSE, wrkDetl.getOrderNo()); + List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(Boolean.FALSE, order.getId()); for(OrderDetl orderDetl : orderDetls){ if(orderDetl.getWorkQty() > 0){ flag = false; } } if(flag){ - Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo())); +// 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("淇敼璁㈠崟鐘舵�佸け璐�"); - } +// if(!orderService.update(order,new EntityWrapper<Order>().eq("order_no",wrkDetl.getOrderNo()))){ +// throw new CoolException("淇敼璁㈠崟鐘舵�佸け璐�"); +// } + OrderInAndOutUtil.updateOrder(Boolean.FALSE,order.getId(),order.getSettle(),userId); } } } @@ -920,27 +1202,59 @@ } // 鍒犻櫎宸ヤ綔涓绘。 boolean wrkMastRes = wrkMastService.deleteById(wrkMast); + // 淇濆瓨鏄庣粏 + wrkDetlLogService.save(wrkMast.getWrkNo()); + // 鍒犻櫎宸ヤ綔妗f槑缁� + boolean wrkDetlRes = wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo)); - if (wrkMast.getIoType() != 10 && wrkMast.getIoType() != 110) { - // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。 - if (!wrkDetlLogService.save(wrkMast.getWrkNo())) { -// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo()); + // 绌烘《搴撲换鍔� + if(wrkMast.getWorkNoOther() != null && wrkMast.getWorkNoOther() != 0) { + WrkMast wrkMast1 = wrkMastService.selectById(wrkMast.getWorkNoOther()); + if (wrkMast1 != null) { + if(wrkMast1.getIoType() == 1) { + wrkMast1.setLocSts("O"); + } else { + wrkMast1.setLocSts("F"); + } + // 鍙栨秷鎿嶄綔浜哄憳璁板綍 + wrkMast1.setManuType("鎵嬪姩鍙栨秷"); + wrkMast1.setModiUser(userId); + wrkMast1.setModiTime(now); + + // 鍒犻櫎缁勬墭閫氱煡妗� + waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet",wrkMast1.getBarcode())); + // 鍒犻櫎宸ヤ綔涓绘。 + wrkMastService.deleteById(wrkMast1); + // 淇濆瓨宸ヤ綔鏄庣粏 + wrkDetlLogService.save(wrkMast1.getWrkNo()); + // 鍒犻櫎宸ヤ綔鏄庣粏 + wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast1.getWrkNo())); + // 淇敼搴撲綅鐘舵�� + LocMast locMast = locMastService.selectById(wrkMast1.getIoType() == 1 ? wrkMast1.getLocNo() : wrkMast1.getSourceLocNo()); + if (Cools.isEmpty(locMast)) { + throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:" + locNo); + } + locMast.setLocSts(locSts); + locMast.setModiTime(now); + locMast.setModiUser(userId); + locMastService.updateById(locMast); } - // 鍒犻櫎宸ヤ綔妗f槑缁� - boolean wrkDetlRes = wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo)); } + // 淇敼搴撲綅鐘舵�� - LocMast locMast = locMastService.selectById(locNo); - if (Cools.isEmpty(locMast)) { - throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:"+ locNo); - } - locMast.setLocSts(locSts); - locMast.setModiTime(now); - locMast.setModiUser(userId); - boolean locMastRes = locMastService.updateById(locMast); - if (!wrkMastRes || !locMastRes) { - throw new CoolException("淇濆瓨鏁版嵁澶辫触"); + if(locNo != null) { + LocMast locMast = locMastService.selectById(locNo); + if (Cools.isEmpty(locMast)) { + throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:"+ locNo); + } + locMast.setLocSts(locSts); + locMast.setModiTime(now); + locMast.setModiUser(userId); + boolean locMastRes = locMastService.updateById(locMast); + if (!wrkMastRes || !locMastRes) { + throw new CoolException("淇濆瓨鏁版嵁澶辫触"); + } } } @@ -1008,7 +1322,7 @@ } LocTypeDto locTypeDto = new LocTypeDto(); locTypeDto.setLocType1((short) 1); - return wcsController.startupFullPutStore(301, list.get(0).getZpallet(), locTypeDto, list); + return wcsController.startupFullPutStore(301, list.get(0).getZpallet(), locTypeDto, list.get(0),false); } @Override @@ -1106,4 +1420,31 @@ return targetLoc.getLocNo(); } + @Override + @Transactional + public void turnMatLocDetl(EmptyPlateOutParam param, Long userId) { + Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("id", param.getMatId())); + if (Cools.isEmpty(mat)){ + throw new CoolException("鐩爣搴撲綅鍟嗗搧缂栫爜鏈夎锛�"); + } + List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("matnr", param.getLocDetls().get(0).getMatnr())); + if (Cools.isEmpty(locDetls) || locDetls.size()<1){ + throw new CoolException("寰呬慨鏀瑰晢鍝佹棤搴撳瓨锛屾棤闇�淇敼锛� 鍝佸彿锛�"+param.getLocDetls().get(0).getMatnr()); + } + try { + locDetlService.updateMatTurn(param.getLocDetls().get(0).getMatnr(),mat.getMatnr()); + }catch (Exception e){ + throw new CoolException("瀵规暟鎹簱淇敼鍑洪敊锛�"); + } + for (LocDetl locDetl:locDetls){ + // 淇濆瓨璋冩暣璁板綍 + AdjDetl adjDetl = new AdjDetl(); + adjDetl.setLocNo(locDetl.getLocNo()); + adjDetl.setMatnr(mat.getMatnr()); + adjDetl.setMatnrOld(param.getLocDetls().get(0).getMatnr()); + adjDetl.setAdjQty(locDetl.getAnfme()); + adjDetlService.save(adjDetl, userId); + } + } + } -- Gitblit v1.9.1