From c31bf5a8902485b750b5814a0d1c54ecc65d2c96 Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期六, 31 八月 2024 10:12:27 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 207 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 184 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java index 9bf7fa4..3ad8124 100644 --- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java @@ -10,17 +10,17 @@ import com.core.common.R; import com.core.exception.CoolException; import com.zy.asrs.entity.*; -import com.zy.asrs.entity.param.CombParam; -import com.zy.asrs.entity.param.MobileAdjustNewParam; -import com.zy.asrs.entity.param.MobileAdjustParam; -import com.zy.asrs.entity.param.OffSaleParam; +import com.zy.asrs.entity.param.*; import com.zy.asrs.mapper.ManLocDetlMapper; import com.zy.asrs.service.*; import com.zy.asrs.utils.SaasUtils; +import com.zy.asrs.utils.Utils; import com.zy.common.model.DetlDto; import com.zy.common.service.CommonService; import com.zy.common.utils.Synchro; import com.zy.system.entity.User; +import com.zy.system.service.SaasLogService; +import lombok.Synchronized; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -100,6 +100,11 @@ private LocOwnerService locOwnerService; @Autowired private PlaService plaService; + @Autowired + private PlaQtyService plaQtyService; + @Autowired + private SaasLogService saasLogService; + @@ -660,7 +665,8 @@ } orderService.checkComplete(order.getOrderNo()); - SaasUtils.insertLog(0,jsonLocNo,jsonOrderDetl.getMatnr(), jsonOrderDetl.getAnfme(),user.getUsername()); + SaasUtils.insertLog(0,jsonLocNo,jsonOrderDetl.getMatnr(), jsonOrderDetl.getAnfme(),user.getUsername(), + null,null,null,null,null,null); } @@ -801,7 +807,8 @@ return R.error("鏇存柊骞冲簱搴撳瓨鐘舵�佸け璐�"); } } - SaasUtils.insertLog(1,jsonLocNo,jsonOrderDetl.getMatnr(), jsonOrderDetl.getAnfme(),user.getUsername()); + SaasUtils.insertLog(1,jsonLocNo,jsonOrderDetl.getMatnr(), jsonOrderDetl.getAnfme(),user.getUsername(), + null,null,null,null,null,null); } return R.ok("涓嬫灦瀹屾垚"); @@ -1202,49 +1209,203 @@ } @Override - public void plaPakin(String locNo, String batch, String packageNo) { - Pla pla = plaService.selectByBatchAndPackageNo(batch, packageNo); - if("宸插叆搴�".equals(pla.getStatus())){ - throw new CoolException("璇ョ墿鏂欏凡鍏ュ簱"); + public void plaPakin(String brand, String locNo, String batch, Integer packageNo, User user) { + Pla pla = plaService.selectByBatchAndPackageNo(batch, packageNo,brand); + if(Cools.isEmpty(pla)){ + throw new CoolException("绯荤粺鏈娴嬪埌璇ュ寘鐗╂枡淇℃伅锛岃閲嶆柊褰曞叆"); } - pla.setStatus("宸插叆搴�"); + + if(!pla.getStatus().equals(GlobleParameter.PLA_STATUS_0) && !pla.getStatus().equals(GlobleParameter.PLA_STATUS_00)){ + throw new CoolException("璇ョ墿鏂欑姸鎬佷笉涓哄緟鍏ュ簱锛屾棤娉曞叆搴�"); + } + + pla.setStatus(GlobleParameter.PLA_STATUS_1); pla.setModifyTime(new Date()); + pla.setPakinTime(new Date()); + + Node node = nodeService.selectByUuid(locNo); + if(Cools.isEmpty(node)){ + throw new CoolException("搴撲綅淇℃伅涓嶆纭�"); + } + + pla.setStash(node.getParentName()); + pla.setLocNo(node.getUuid()); + plaService.updateById(pla); + SaasUtils.insertLog(0,locNo,pla.getBrand(),pla.getWeightAnfme(),user.getUsername(), + null,pla.getBatch(),pla.getPackageNo(),pla.getOwner(),pla.getWorkshop(),null); } @Override @Transactional - public void plaPakout(String locNo, String batch, String packageNo, String orderNo, String orderDetlId, String wrkNo, Double anfme) { - Pla pla = plaService.selectByBatchAndPackageNo(batch, packageNo); - //Order order = orderService.selectByNo(orderNo); - OrderDetl orderDetl = orderDetlService.selectById(orderDetlId); + @Synchronized + public void plaPakout(String brand, String locNo, String batch, Integer packageNo, String orderNo, String plaQtyId, String wrkNo, Double anfme, boolean isReplace) { + Pla pla = plaService.selectByBatchAndPackageNo(batch, packageNo,brand); + ManPakOut manPakOut = manPakOutService.selectById(wrkNo); + + PlaQty plaQty = plaQtyService.selectById(plaQtyId); + + //鐗╂枡鏇挎崲 + if(isReplace){ + replacePla(pla,manPakOut,plaQty); + }else { + if((!Cools.eq(pla.getStatus(),GlobleParameter.PLA_STATUS_2) && !Cools.eq(pla.getStatus(),GlobleParameter.PLA_STATUS_3) && !Cools.eq(pla.getStatus(),GlobleParameter.PLA_STATUS_1)) || + !Cools.eq(pla.getBatch(),manPakOut.getBatch()) || + !Cools.eq(pla.getPackageNo()+"",manPakOut.getBarcode()) || + !Cools.eq(pla.getBrand(),manPakOut.getMaktx()) ){ + throw new CoolException("鐗╂枡涓嶄竴鑷达紝鏃犳硶鍑哄簱" + "鎵瑰彿锛�" + pla.getBatch() + "锛屽寘鍙凤細" + pla.getPackageNo() + "锛岀墝鍙凤細" + pla.getBrand()); + } + } //鏇存柊鎷h揣鍗曚俊鎭� if(manPakOut.getCount() + anfme > manPakOut.getAnfme()){ throw new CoolException("鎷h揣閲嶉噺澶т簬鎷h揣鍗曟墍闇�鎷h揣閲嶉噺锛岃閲嶆柊鍒嗛厤鎷h揣閲嶉噺"); } + if(manPakOut.getStatus() == 1){ + throw new CoolException("璇ユ嫞鏂欏崟宸插嚭搴�"); + } manPakOut.setCount(manPakOut.getCount() + anfme); if (manPakOut.getAnfme().equals(manPakOut.getCount())){ manPakOut.setStatus(1); + manPakOut.setUpdateTime(new Date()); manPakOutService.updateById(manPakOut); } - //鏇存柊鍗曟嵁鏄庣粏 - orderDetl.setQty(orderDetl.getQty() + anfme); - orderDetlService.updateById(orderDetl); - - //鏇存柊鍗曟嵁淇℃伅 - orderService.checkComplete(orderNo); + //鏇存柊plaQty淇℃伅 + plaQty.setPakoutTime(Utils.getDateStr(new Date())); + plaQtyService.updateById(plaQty); //鏇存柊pla鏄庣粏 pla.setWeightAnfme(pla.getWeightAnfme() - anfme); + pla.setQtyAnfme(pla.getQtyAnfme() - anfme); + pla.setModifyTime(new Date()); if(pla.getWeightAnfme() <= 0){ - pla.setStatus("鍏ㄩ儴鍑哄簱"); + pla.setStatus(GlobleParameter.PLA_STATUS_4); }else { - pla.setStatus("閮ㄥ垎鍑哄簱"); + pla.setStatus(GlobleParameter.PLA_STATUS_3); } plaService.updateById(pla); + SaasUtils.insertLog(1,locNo,pla.getBrand(),anfme,null,null, + pla.getBatch(),pla.getPackageNo(),pla.getOwner(),pla.getWorkshop(),null); + //鏇存柊璁㈠崟鏄庣粏 + Order order = orderService.selectByNo(orderNo); + OrderDetl orderDetl = orderDetlService.selectById(plaQty.getOrderDetlId()); + + orderDetl.setQty(orderDetl.getQty() + anfme); + orderDetlService.updateById(orderDetl); + + orderService.checkComplete(orderNo); + + } + + @Override + public void plaPackOutWithoutOrder(String brand, String batch, Integer packageNo, Double anfme) { + Pla pla = plaService.selectByBatchAndPackageNo(batch, packageNo,brand); + if(Cools.isEmpty(pla)){ + throw new CoolException("褰撳墠鐗╂枡鏄庣粏涓嶅瓨鍦�"); + } + if (!pla.getStatus().equals(GlobleParameter.PLA_STATUS_1) && !pla.getStatus().equals(GlobleParameter.PLA_STATUS_3)){ + throw new CoolException("褰撳墠鐗╂枡鐘舵�佹棤娉曞嚭搴�"); + } + if(anfme > pla.getWeightAnfme()){ + throw new CoolException("褰撳墠鐗╂枡鍓╀綑搴撳瓨涓嶈冻"); + } + + + pla.setWeightAnfme(pla.getWeightAnfme() - anfme); + if(pla.getWeightAnfme() > 0){ + pla.setStatus(GlobleParameter.PLA_STATUS_3); + }else { + pla.setStatus(GlobleParameter.PLA_STATUS_4); + } + + plaService.updateById(pla); + + SaasUtils.insertLog(1,pla.getLocNo(),pla.getBrand(),anfme,null,null,pla.getBatch(),pla.getPackageNo(),pla.getOwner(),pla.getWorkshop(),null); + + } + + @Override + public List<ManPakOut> getManPakoutByOrderNo(String orderNo) { + return manPakOutService.selectList(new EntityWrapper<ManPakOut>().eq("doc_num",orderNo).eq("status",0)); + } + + public void replacePla(Pla plaNew, ManPakOut manPakOut, PlaQty plaQty){ + //杩樺師鏃х墿鏂欑姸鎬� + Pla plaOld = plaService.selectByBatchAndPackageNo(manPakOut.getBatch(), Integer.parseInt(manPakOut.getBarcode()), manPakOut.getMaktx()); + + //鏇存柊鏂扮墿鏂欎俊鎭� + plaNew.setQtyAnfme(plaOld.getQtyAnfme()); + plaNew.setStatus(plaOld.getStatus()); + plaService.updateById(plaNew); + + plaOld.setStatus(GlobleParameter.PLA_STATUS_1); + plaOld.setQtyAnfme(plaOld.getQtyAnfme() - manPakOut.getCount()); + + plaService.updateById(plaOld); + + //鏇存柊plaQty淇℃伅 + plaQty.setBatch(plaNew.getBatch()); + plaQty.setBrand(plaNew.getBrand()); + plaQty.setPackageNo(plaNew.getPackageNo()); + + plaQtyService.updateById(plaQty); + + //鏇存柊鎷h揣鍗曚俊鎭� + manPakOut.setMaktx(plaNew.getBrand()); + manPakOut.setBatch(plaNew.getBatch()); + manPakOut.setBarcode(plaNew.getPackageNo() + ""); + manPakOut.setUpdateTime(new Date()); + + manPakOutService.updateById(manPakOut); + + } + + @Override + public List<Pla> pdaSelectInfmt(String barcode) { + EntityWrapper<Pla> plaEntityWrapper = new EntityWrapper<>(); + String[] split = barcode.split(";"); + if (split.length == 4){ + plaEntityWrapper.eq("brand",split[0]); + plaEntityWrapper.eq("batch",split[1]); + plaEntityWrapper.eq("package_no",split[2]); + plaEntityWrapper.eq("line",split[3]); + }else if (split.length == 1){ + Node node = nodeService.selectOne(new EntityWrapper<Node>().eq("name", barcode)); + if (Cools.isEmpty(node)){ + throw new CoolException("璇锋鏌ヨ緭鍏ョ殑搴撲綅鐮�"); + } + plaEntityWrapper.eq("loc_no",barcode); + plaEntityWrapper.notLike("status","鍏ㄩ儴鍑哄簱"); + }else { + throw new CoolException("鏉$爜淇℃伅鏈夎!"); + } + List<Pla> plaList = plaService.selectList(plaEntityWrapper); + if (Cools.isEmpty(plaList)){ + throw new CoolException("鏈煡璇㈠埌搴撳瓨鐗╂枡淇℃伅"); + } + return plaList; + } + + public boolean checkMaximum(String locNo, int packageNum){ + + Node node = nodeService.selectByUuid(locNo); + Node nodeParent = nodeService.selectById(node.getParentId()); + + if(Cools.isEmpty(nodeParent.getMajor())){ + return true; + } + + //褰撳墠搴撳瓨鍖呮暟 + int count = plaService.selectCount(new EntityWrapper<Pla>().eq("loc_no", locNo) + .notIn("status", "鍏ㄩ儴鍑哄簱")); + + if(nodeParent.getMajor() < count + packageNum){ + return false; + } + + return true; } } -- Gitblit v1.9.1