From 57936e11434f6614f818a0a0a495918dc1af6dd6 Mon Sep 17 00:00:00 2001 From: pang.jiabao <pang_jiabao@163.com> Date: 星期一, 02 十二月 2024 08:07:01 +0800 Subject: [PATCH] 单据出库完成 --- src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 187 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 185 insertions(+), 2 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 3b652a7..e4c1241 100644 --- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java @@ -12,6 +12,7 @@ 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.asrs.utils.SaasUtils; @@ -26,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; @@ -43,6 +46,10 @@ private MatService matService; @Autowired private WaitPakinService waitPakinService; + + @Resource + private WaitPakinLogService waitPakinLogService; + @Autowired private OrderService orderService; @Autowired @@ -78,6 +85,182 @@ @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 @@ -252,7 +435,7 @@ node.setUpdateBy(userId); node.setUpdateTime(now); nodeService.updateById(node); - SaasUtils.insertLog(0,manLocDetl.getLocNo(), manLocDetl.getMatnr(),combMat.getAnfme(),userId); + SaasUtils.insertLog(0,manLocDetl.getLocNo(), manLocDetl.getMatnr(),combMat.getAnfme(),userId,manLocDetl.getBatch()); } } @@ -268,7 +451,7 @@ if (anfme < 0) { throw new CoolException("鍟嗗搧搴撳瓨涓嶈冻锛�"); } else if (anfme == 0){ - SaasUtils.insertLog(1,manLocDetl.getLocNo(), manLocDetl.getMatnr(),offSaleParam.getAnfme(),userId); + SaasUtils.insertLog(1,manLocDetl.getLocNo(), manLocDetl.getMatnr(),offSaleParam.getAnfme(),userId,manLocDetl.getBatch()); manLocDetlMapper.deleteLocNo0(offSaleParam.getLocNo(), offSaleParam.getMatnr()); // 娓呯┖搴撲綅鏉$爜 Node node = nodeService.selectByUuid(offSaleParam.getLocNo()); -- Gitblit v1.9.1