From 2ee70a38e4c832e3888b12d29ebf962456069cdb Mon Sep 17 00:00:00 2001 From: whycq <123456> Date: 星期三, 03 七月 2024 14:30:04 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/phpsasrs' into phpsasrs --- src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 280 +++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 255 insertions(+), 25 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 319a009..c804b6c 100644 --- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java @@ -8,10 +8,7 @@ import com.core.common.SnowflakeIdWorker; import com.core.exception.CoolException; import com.zy.asrs.entity.*; -import com.zy.asrs.entity.param.EmptyPlateOutParam; -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.entity.param.*; import com.zy.asrs.service.*; import com.zy.asrs.utils.Utils; import com.zy.common.model.*; @@ -75,6 +72,8 @@ private RowLastnoService rowLastnoService; @Autowired private SlaveProperties slaveProperties; + @Autowired + private WaitPakinService waitPakinService; @Override @Transactional @@ -206,8 +205,11 @@ assert ioType != null; // 鑾峰彇搴撲綅 LocMast locMast = locMastService.selectById(dto.getLocNo()); + + Integer outSta = staNo.getDevNo(); + // 鑾峰彇璺緞 - StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), staNo.getDevNo()); + StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta); // 鐢熸垚宸ヤ綔鍙� int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); // 鐢熸垚宸ヤ綔妗� @@ -281,6 +283,7 @@ LocMast locMast = locMastService.selectById(taskDto.getLocNo()); // 鑾峰彇璺緞 int ioType = taskDto.isAll() ? 101 : 103; + StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo()); // 鐢熸垚宸ヤ綔鍙� int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); @@ -312,9 +315,9 @@ 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); - } +// if (orderDetl == null) { +// orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null); +// } WrkDetl wrkDetl = new WrkDetl(); wrkDetl.sync(orderDetl); wrkDetl.setZpallet(wrkMast.getBarcode()); @@ -471,6 +474,70 @@ @Override @Transactional + public WrkMast emptyPlateOut(EmptyPlateOutParam param) { + WrkMast wrkMast = new WrkMast(); + if (Cools.isEmpty(param.getOutSite())) { + throw new CoolException("绔欑偣涓嶅瓨鍦�"); + } + for (String locNo : param.getLocNos()) { + // 鑾峰彇宸ヤ綔鍙� + int workNo = commonService.getWorkNo(0); + // 鑾峰彇搴撲綅 + LocMast locMast = locMastService.selectById(locNo); + if (Cools.isEmpty(locMast)) { + throw new CoolException(locNo+"搴撲綅涓嶅瓨鍦�"); + } + // 鑾峰彇婧愮珯 + Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() + .eq("type_no", 110) + .eq("stn_no", param.getOutSite()) + .eq("crn_no", locMast.getCrnNo()); + StaDesc staDesc = staDescService.selectOne(wrapper); + Integer sourceStaNo = staDesc.getCrnStn(); + if (Cools.isEmpty(sourceStaNo)) { + throw new CoolException("妫�绱㈡簮绔欏け璐�"); + } + Date now = new Date(); + // 淇濆瓨宸ヤ綔妗� + + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID + wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱 + wrkMast.setIoPri(10D); + wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯 + wrkMast.setStaNo(param.getOutSite()); // 鐩爣绔� + wrkMast.setCrnNo(locMast.getCrnNo()); + wrkMast.setSourceLocNo(locNo); // 婧愬簱浣� + wrkMast.setFullPlt("N"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("Y"); // 绌烘澘 + wrkMast.setLinkMis("N"); + wrkMast.setAppeUser(1L); + 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")){ + locMast.setLocSts("R"); + locMast.setModiUser(1L); + locMast.setModiTime(now); + if (!locMastService.updateById(locMast)) { + throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�"); + } + } + } + return wrkMast; + } + + @Override + @Transactional public void locCheckOut(StockOutParam param, Long userId) { // 鐩爣绔欑偣鐘舵�佹娴� BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite()); @@ -573,6 +640,87 @@ @Override @Transactional + public void locCombOut(ReplenishmentParam param, Long userId) { + // 鍙傛暟闈炵┖鍒ゆ柇 + if (Cools.isEmpty(param.getDevpNo(), param.getList())) { + throw new CoolException(BaseRes.PARAM); + } + //鍒ゆ柇搴撲綅鍙枫�佸簱浣嶇姸鎬� + LocMast locMast; + if (Cools.isEmpty(param.getLocNo())){ + throw new CoolException("骞舵澘鍑哄簱搴撲綅鍙傛暟閿欒"); + }else { + locMast = locMastService.selectById(param.getLocNo()); + if(!Cools.isEmpty(locMast)){ + if (!locMast.getLocSts().equals("F")){ + throw new CoolException("骞舵澘搴撲綅闈炲湪搴撶姸鎬�"); + } + }else{ + throw new CoolException("搴撳瓨涓簱浣嶅彿涓嶅瓨鍦�"); + } + } + // 婧愮珯鐐圭姸鎬佹娴� +// BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getDevpNo(), true); + // 鐢熸垚宸ヤ綔鍙� + int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE); + // 鑾峰彇璺緞 + Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() + .eq("type_no", 104) + .eq("stn_no", param.getDevpNo()) + .eq("crn_no", locMast.getCrnNo()); + StaDesc staDesc = staDescService.selectOne(wrapper); + if (Cools.isEmpty(staDesc)) { + throw new CoolException("鍑哄簱璺緞涓嶅瓨鍦�"); + } + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(new Date()); + wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID + wrkMast.setIoType(104); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱 + wrkMast.setIoPri(13D); // 浼樺厛绾э細10 + wrkMast.setCrnNo(locMast.getCrnNo()); + wrkMast.setSourceStaNo(staDesc.getCrnStn()); + wrkMast.setStaNo(param.getDevpNo()); + wrkMast.setSourceLocNo(param.getLocNo()); + wrkMast.setBarcode(locMast.getBarcode()); // 鎵樼洏鐮� + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("N"); // 绌烘澘 + wrkMast.setLinkMis("N"); + wrkMast.setCtnType(locMast.getCtnType()); // 瀹瑰櫒绫诲瀷 + // 鎿嶄綔浜哄憳鏁版嵁 + wrkMast.setAppeUser(userId); + wrkMast.setAppeTime(new Date()); + wrkMast.setModiUser(userId); + wrkMast.setModiTime(new Date()); + boolean res = wrkMastService.insert(wrkMast); + if (!res) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + // 鐢熸垚宸ヤ綔妗f槑缁� + List<MatCodeCountDto> matDtos = new ArrayList<>(); + param.getList().forEach(elem -> { + matDtos.add(new MatCodeCountDto(elem.getMatnr(), elem.getBatch(), elem.getCount())); + }); + wrkDetlService.createWorkDetail2(workNo, matDtos, locMast.getBarcode(), userId); + // 鏇存柊搴撲綅鐘舵�� +// LocMast locMast = locMastService.selectById(dto.getLocNo()); + if (locMast.getLocSts().equals("F")){ + locMast.setLocSts("P"); // P.骞舵澘鍑哄簱棰勭害 + locMast.setModiUser(userId); + locMast.setModiTime(new Date()); + if (!locMastService.updateById(locMast)){ + throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�"); + } + } else { + throw new CoolException(locMast.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤"); + } + } + + @Override + @Transactional public void completeWrkMast(String workNo, Long userId) { WrkMast wrkMast = wrkMastService.selectById(workNo); if (Cools.isEmpty(wrkMast)){ @@ -615,6 +763,13 @@ Date now = new Date(); List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", param.getLocNo())); + String zpallet = ""; + for (LocDetl locDetl : locDetls) { + if (!Cools.isEmpty(locDetl.getZpallet())) { + zpallet = locDetl.getZpallet(); + } + } + List<LocDetlAdjustParam.LocDetlAdjust> list = param.getList(); // 淇敼鏁伴噺 @@ -631,7 +786,7 @@ // todo 鐩樼偣璁板綍 // 淇敼搴撳瓨 if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) { - throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佷慨鏀规暟閲忓け璐�"); + throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿淇敼鏁伴噺澶辫触"); } // 淇濆瓨璋冩暣璁板綍 AdjDetl adjDetl = new AdjDetl(); @@ -656,7 +811,7 @@ for (LocDetl locDetl : locDetls) { // todo 鐩樼偣璁板綍 if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) { - throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�"); + throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿搴撳瓨鏄庣粏澶辫触"); } // 淇濆瓨璋冩暣璁板綍 AdjDetl adjDetl = new AdjDetl(); @@ -678,6 +833,7 @@ Mat mat = matService.selectByMatnr(adjust.getMatnr()); LocDetl locDetl = new LocDetl(); locDetl.sync(mat); + locDetl.setZpallet(zpallet); locDetl.setBatch(adjust.getBatch()); locDetl.setLocNo(locMast.getLocNo()); locDetl.setAnfme(adjust.getCount()); // 鏁伴噺 @@ -686,7 +842,7 @@ locDetl.setAppeUser(userId); locDetl.setAppeTime(now); if (!locDetlService.insert(locDetl)) { - throw new CoolException("娣诲姞" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�"); + throw new CoolException("娣诲姞" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿搴撳瓨鏄庣粏澶辫触"); } // 淇濆瓨璋冩暣璁板綍 AdjDetl adjDetl = new AdjDetl(); @@ -724,6 +880,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笉瀛樺湪"); @@ -743,7 +900,7 @@ throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:"+ wrkMast.getSourceLocNo()); } locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F"); - locMast.setModiTime(new Date()); + locMast.setModiTime(now); locMast.setModiUser(userId); locMastService.updateById(locMast); } @@ -765,28 +922,101 @@ 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(""); + waitPakinService.update(waitPakin, new EntityWrapper<WaitPakin>() + .eq("order_no", waitPakin.getOrderNo()) + .eq("matnr", waitPakin.getMatnr()) + .eq("batch", waitPakin.getBatch())); } - // 鐢熸垚鏂扮殑鍑哄簱浣滀笟 -// 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("淇敼璁㈠崟鐘舵�佸け璐�"); + } + } + } + } + + }else { + // 璁㈠崟鍏宠仈 + 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); + //淇敼璁㈠崟涓昏〃鐘舵��,娌℃湁浣滀笟鏁伴噺鏃舵墠鍙互淇敼 + 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("淇敼璁㈠崟鐘舵�佸け璐�"); + } + } + } + + } + + } + + + // 鍙栨秷鎿嶄綔浜哄憳璁板綍 wrkMast.setManuType("鎵嬪姩鍙栨秷"); wrkMast.setModiUser(userId); - wrkMast.setModiTime(new Date()); + wrkMast.setModiTime(now); if (!wrkMastService.updateById(wrkMast)) { throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐�"); } @@ -812,7 +1042,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) { @@ -845,7 +1075,7 @@ } // 鑾峰彇鐩爣绔� Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() - .eq("type_no", wrkMast.getIoType() - 50) + .eq("type_no", wrkMast.getIoType()) .eq("stn_no", wrkMast.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯 .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿 StaDesc staDesc = staDescService.selectOne(wrapper); @@ -858,7 +1088,7 @@ // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57 wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 - wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯 + wrkMast.setSourceStaNo(staDesc.getStnNo()); // 婧愮珯 wrkMast.setStaNo(staNo); // 鐩爣绔� wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣� wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌� -- Gitblit v1.9.1