From 9e53b59e30bba2149900aa2cc9f22ad0ab445edd Mon Sep 17 00:00:00 2001 From: pang.jiabao <pang_jiabao@163.com> Date: 星期一, 22 九月 2025 13:47:27 +0800 Subject: [PATCH] u8单据对接开发完成 --- src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 291 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 287 insertions(+), 4 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 4736f0e..e4c1241 100644 --- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java @@ -9,10 +9,13 @@ import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.CombParam; import com.zy.asrs.entity.param.MobileAdjustParam; +import com.zy.asrs.entity.param.OffSaleParam; import com.zy.asrs.entity.param.OpenOrderPakinParam; +import com.zy.asrs.mapper.ManLocDetlMapper; +import com.zy.asrs.mapper.OrderDetlMapper; import com.zy.asrs.service.*; import com.zy.asrs.utils.MatUtils; -import com.zy.common.CodeRes; +import com.zy.asrs.utils.SaasUtils; import com.zy.common.constant.MesConstant; import com.zy.common.entity.Parameter; import com.zy.common.model.DetlDto; @@ -24,6 +27,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; @@ -41,6 +46,10 @@ private MatService matService; @Autowired private WaitPakinService waitPakinService; + + @Resource + private WaitPakinLogService waitPakinLogService; + @Autowired private OrderService orderService; @Autowired @@ -69,6 +78,189 @@ private StaDescService staDescService; @Autowired private CommonService commonService; + @Autowired + private NodeService nodeService; + @Autowired + private ManLocDetlService manLocDetlService; + @Autowired + private ManLocDetlMapper manLocDetlMapper; + + @Resource + private OrderDetlMapper orderDetlMapper; + + @Override + @Transactional + public R WarehouseOut(CombParam combParam, Long userId) { + + //鏌ヨ搴撳瓨鏁版嵁 + for (CombParam.CombMat combMat : combParam.getCombMats()) { + ManLocDetl locDetl = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>() + .eq("loc_no", combParam.getLocno()) + .eq("zpallet", combMat.getZpallet()) + .eq("matnr", combMat.getMatnr()) +// .eq(LocDetl::getBatch, combMat.getBatch()) + ); + if (Cools.isEmpty(locDetl)) { + return R.error("鏈煡璇㈠埌搴撳瓨鏁版嵁"); + } + if (combMat.getAnfme() > locDetl.getAnfme()) { + return R.error("涓嬫灦鏁伴噺閿欒锛岃秴鍑哄簱瀛樻暟閲�"); + } + if (!Cools.isEmpty(combParam.getOrderNo())) { + Order order = orderService.selectByNo(combParam.getOrderNo()); + if (Cools.isEmpty(order)) { + continue; + } + if (order.getSettle() == 1) { + orderService.updateSettle(order.getId(), 2L, userId); + } + OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), combMat.getBatch()); + if (Cools.isEmpty(orderDetl)) { + continue; + } + if (orderDetl.getAnfme() < orderDetl.getWorkQty() + combMat.getAnfme()) { + combMat.setAnfme(orderDetl.getAnfme() - orderDetl.getWorkQty()); + } + // 淇敼璁㈠崟鏄庣粏浣滀笟鏁伴噺 + if (orderDetlMapper.increaseWorkQtyByOrderNo(combParam.getOrderNo(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme()) <= 0) { + throw new CoolException("淇敼鍗曟嵁鏄庣粏宸ヤ綔鏁伴噺澶辫触"); + } + // 淇敼璁㈠崟鏄庣粏瀹屾垚鏁伴噺 + if (!orderDetlService.increase(order.getId(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme())) { + throw new CoolException("淇敼鍗曟嵁鏄庣粏瀹屾垚鏁伴噺澶辫触"); + } + // 淇敼璁㈠崟鐘舵�� 浣滀笟涓� ===>> 宸插畬鎴� + orderService.checkComplete(combParam.getOrderNo()); + } + try { + double i = 0.0; + double j = locDetl.getAnfme(); + //澶勭悊搴撳瓨淇℃伅 + if (combMat.getAnfme().equals(locDetl.getAnfme())) { + //搴撳瓨鐩哥瓑鍒犻櫎鏁版嵁 + manLocDetlMapper.deleteLocNo0(combParam.getLocno(), combMat.getMatnr()); + int count = manLocDetlMapper.selectCount(new EntityWrapper<ManLocDetl>().eq("loc_no", combParam.getLocno())); + if (count == 0) { + Node node = nodeService.selectByUuid(combParam.getLocno()); + node.setUpdateTime(new Date()); + node.setUpdateBy(userId); + node.setBarcode(""); + nodeService.updateById(node); + } + } else { + BigDecimal subtract = BigDecimal.valueOf(locDetl.getAnfme()).subtract(BigDecimal.valueOf(combMat.getAnfme())); + i = subtract.byteValue(); + locDetl.setAnfme(subtract.doubleValue()); + // 鏇存柊搴撳瓨 + manLocDetlMapper.updateAnfme(subtract.doubleValue(), combParam.getLocno(), combMat.getMatnr(), combMat.getBatch()); + } + // 璁板綍鏃ュ織 + SaasUtils.insertLog(1, combParam.getLocno(), combMat.getMatnr(), combMat.getAnfme(), userId,combMat.getBatch()); + } catch (Exception e) { + throw new CoolException("鏇存柊搴撳瓨鏁版嵁鍑洪敊" + e.getMessage()); + } + } + return R.ok(); + } + + @Override + @Transactional + public R WarehouseIn(String locNo, String barcode, Long userId) { + + //鏌ヨ缁勬墭鏁版嵁 + List<WaitPakin> list = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode)); + if (Cools.isEmpty(list)) { + return R.error("鏈壘鍒扮粍鎵樹俊鎭�"); + } + Date now = new Date(); + + //鎻掑叆搴撳瓨鏁版嵁 + for (WaitPakin waitPakin : list) { + + Mat mat = matService.selectOne(new EntityWrapper<Mat>() + .eq("matnr", waitPakin.getMatnr())); + + ManLocDetl locDetl1 = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", waitPakin.getMatnr()). + eq("batch", waitPakin.getBatch())); + + Node node = nodeService.selectByUuid(locNo); + if (Cools.isEmpty(node)) { + throw new CoolException(locNo + ":搴撲綅涓嶅瓨鍦�"); + } + if (!Cools.isEmpty(locDetl1)) { + locDetl1.setAnfme(waitPakin.getAnfme() + waitPakin.getAnfme()); + locDetl1.setUpdateBy(userId); + locDetl1.setModiTime(now); + manLocDetlService.update(locDetl1, new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", waitPakin.getMatnr()). + eq("batch", waitPakin.getBatch())); + } else { + ManLocDetl manLocDetl = new ManLocDetl(); + manLocDetl.setLocNo(locNo); +// manLocDetl.setBarcode(barcode); + manLocDetl.setZpallet(barcode); + manLocDetl.setNodeId(node.getId()); + manLocDetl.setMaktx(mat.getMaktx()); + manLocDetl.setMatnr(mat.getMatnr()); + manLocDetl.setSpecs(mat.getSpecs()); + manLocDetl.setBatch(Cools.isEmpty(waitPakin.getBatch()) ? "" : waitPakin.getBatch()); + manLocDetl.setAnfme(waitPakin.getAnfme()); + manLocDetl.setCreateBy(userId); + manLocDetl.setCreateTime(now); + manLocDetl.setUpdateBy(userId); + manLocDetl.setModiTime(now); + if (!manLocDetlService.insert(manLocDetl)) { + throw new CoolException("鍟嗗搧涓婃灦澶辫触锛�"); + } + + // 鏇存柊搴撲綅鏉$爜 + node.setBarcode(barcode); + node.setUpdateBy(userId); + node.setUpdateTime(now); + nodeService.updateById(node); + } + + // 璁板綍鏃ュ織 + SaasUtils.insertLog(0, locNo, waitPakin.getMatnr(), waitPakin.getAnfme(), userId,waitPakin.getBatch()); + + //鏄惁灞炰簬璁㈠崟鏁版嵁 +// if (!Cools.isEmpty(waitPakin.getOrderNo())){ +// Order order = orderService.selectByNo(waitPakin.getOrderNo(), hostId); +// if (Cools.isEmpty(order)){ +// continue; +// } +// OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), waitPakin.getMatnr(), waitPakin.getBatch(),hostId); +// if (Cools.isEmpty(orderDetl)){ +// continue; +// } +// // 淇敼璁㈠崟鏄庣粏瀹屾垚鏁伴噺 +// if (!orderDetlService.increase(order.getId(), hostId, waitPakin.getMatnr(), waitPakin.getBatch(), waitPakin.getAnfme())) { +// throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触"); +// } +// // 淇敼璁㈠崟鐘舵�� 浣滀笟涓� ===>> 宸插畬鎴� +// orderService.checkComplete(waitPakin.getOrderNo(), hostId); +// +// } + + // 鏇存柊鍏ュ簱宸ヤ綔妗� + waitPakin.setLocNo(locNo); + waitPakin.setIoStatus("Y"); + waitPakin.setModiUser(userId); + waitPakin.setModiTime(now); + waitPakinService.update(waitPakin,new EntityWrapper<WaitPakin>().eq("zpallet", barcode).eq("matnr",waitPakin.getMatnr()) + .eq("batch",waitPakin.getBatch())); + + // 淇濆瓨鍏ュ簱閫氱煡妗e巻鍙叉。 + if (!waitPakinLogService.save(barcode)) { + throw new CoolException("淇濆瓨缁勬墭鏁版嵁澶辫触"); + } + // 鍒犻櫎鍏ュ簱閫氱煡妗� + if (!waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", barcode))) { + throw new CoolException("鍒犻櫎缁勬墭鏁版嵁澶辫触"); + } + } + + return R.ok("涓婃灦鎴愬姛"); + } @Override @Transactional @@ -76,16 +268,27 @@ if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) { throw new CoolException(BaseRes.PARAM); } + if(param.getCombMats().size()>1){ + throw new CoolException("璇锋彁鍙栦竴涓晢鍝侊紝鎴栬�呭埛鏂伴噸鏂扮粍鎵橈紒"); + } // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁 if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>(). eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) { throw new CoolException(param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱"); } + if(param.getBarcode().length()!=8){ + throw new CoolException("鏉$爜闀垮害涓嶆槸8浣�===>>" + param.getBarcode()); + } + if (param.getCombMats().size()>1){ + throw new CoolException("涓嶅厑璁告贩鏂�===>>" + param.getBarcode()); + } + int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode())); int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode())); - if (countLoc > 0 || countWrk > 0) { - throw new CoolException("宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + param.getBarcode()); + int countwait = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet",param.getBarcode())); + if (countLoc > 0 || countWrk > 0 || countwait > 0) { + throw new CoolException("缁勬墭妗�/宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + param.getBarcode()); } Date now = new Date(); @@ -130,7 +333,7 @@ // 鍏宠仈缁勬墭 } else { Order order = orderService.selectByNo(param.getOrderNo()); - if (order.getSettle() > 2) { + if (Cools.isEmpty(order) || order.getSettle() > 2) { throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�"); } // 鐢熸垚鍏ュ簱閫氱煡妗� @@ -182,6 +385,86 @@ } + // 鍟嗗搧涓婃灦 + @Override + public void onSale(CombParam param, Long userId) { + + Date now = new Date(); + // 鑾峰彇搴撲綅鍙� + String locno = param.getLocno(); + Node node = nodeService.selectByUuid(locno); + if (Cools.isEmpty(node)) { + throw new CoolException(param.getLocno() + ":搴撲綅涓嶅瓨鍦�"); + } + + String barcode = param.getBarcode(); + if (Cools.isEmpty(barcode)) { + throw new CoolException("鏉$爜涓嶈兘涓虹┖锛�"); + } + + // 鑾峰彇鍟嗗搧鍒楄〃 + for(CombParam.CombMat combMat : param.getCombMats()){ + Mat mat = matService.selectByMatnr(combMat.getMatnr()); + if (Cools.isEmpty(mat)){ + throw new CoolException(combMat.getMatnr() + ":鍟嗗搧妗f涓嶅瓨鍦紒"); + } + if (Cools.isEmpty(combMat.getAnfme()) || combMat.getAnfme()==0){ + throw new CoolException(combMat.getMatnr() + ":鍟嗗搧鏁伴噺鏈夎锛�"); + } + + ManLocDetl manLocDetl = new ManLocDetl(); + manLocDetl.setLocNo(locno); +// manLocDetl.setBarcode(barcode); + manLocDetl.setZpallet(barcode); + manLocDetl.setNodeId(node.getId()); + manLocDetl.setMaktx(mat.getMaktx()); + manLocDetl.setMatnr(mat.getMatnr()); + manLocDetl.setSpecs(mat.getSpecs()); + manLocDetl.setBatch(Cools.isEmpty(combMat.getBatch()) ? "" : combMat.getBatch()); + manLocDetl.setAnfme(combMat.getAnfme()); + manLocDetl.setCreateBy(userId); + manLocDetl.setCreateTime(now); + manLocDetl.setUpdateBy(userId); + manLocDetl.setModiTime(now); + if (!manLocDetlService.insert(manLocDetl)) { + throw new CoolException("鍟嗗搧涓婃灦澶辫触锛�"); + } + + // 鏇存柊搴撲綅鏉$爜 + node.setBarcode(barcode); + node.setUpdateBy(userId); + node.setUpdateTime(now); + nodeService.updateById(node); + SaasUtils.insertLog(0,manLocDetl.getLocNo(), manLocDetl.getMatnr(),combMat.getAnfme(),userId,manLocDetl.getBatch()); + + } + } + + // 鍟嗗搧涓嬫灦 + @Override + public void offSale(OffSaleParam offSaleParam, Long userId) { + ManLocDetl manLocDetl = manLocDetlMapper.selectLocNo0(offSaleParam.getLocNo(), offSaleParam.getMatnr()); + if (Cools.isEmpty(manLocDetl)){ + throw new CoolException("鏃犳鍟嗗搧锛�"); + } + double anfme = manLocDetl.getAnfme() - offSaleParam.getAnfme(); + if (anfme < 0) { + throw new CoolException("鍟嗗搧搴撳瓨涓嶈冻锛�"); + } else if (anfme == 0){ + SaasUtils.insertLog(1,manLocDetl.getLocNo(), manLocDetl.getMatnr(),offSaleParam.getAnfme(),userId,manLocDetl.getBatch()); + manLocDetlMapper.deleteLocNo0(offSaleParam.getLocNo(), offSaleParam.getMatnr()); + // 娓呯┖搴撲綅鏉$爜 + Node node = nodeService.selectByUuid(offSaleParam.getLocNo()); + node.setUpdateTime(new Date()); + node.setUpdateBy(userId); + node.setBarcode(""); + } + manLocDetlMapper.updateAnfme0(anfme,manLocDetl.getNodeId()); + } + + // 鏌ユ壘鍟嗗搧 + + @Override @Transactional public void adjust(MobileAdjustParam param, Long userId) { -- Gitblit v1.9.1