From 463e7888b0f0240a2d5e278c6b6f17a748e828b2 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@63.com> Date: 星期三, 14 十二月 2022 11:06:32 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java | 250 +++++++++++++++++++++++++++---------------------- 1 files changed, 139 insertions(+), 111 deletions(-) diff --git a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java index 8fa6859..1b26996 100644 --- a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java @@ -3,20 +3,15 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; -import com.core.common.SnowflakeIdWorker; -import com.zy.asrs.entity.RequestLog; -import com.zy.asrs.entity.WaitPakin; -import com.zy.asrs.entity.WrkDetl; -import com.zy.asrs.entity.WrkMast; +import com.core.exception.CoolException; +import com.zy.asrs.entity.*; import com.zy.asrs.service.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; -import com.zy.common.model.BillDto; -import com.zy.common.model.MatnrDto; -import com.zy.common.service.ErpService; -import com.zy.common.service.wms.ReplenishDto; -import com.zy.common.service.wms.Result; -import com.zy.common.service.wms.WmsService; +import com.zy.common.model.OrderDto; +import com.zy.common.service.erp.ErpService; +import com.zy.common.service.erp.entity.Goods; +import com.zy.common.web.BaseController; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -24,9 +19,8 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport; import java.util.ArrayList; -import java.util.Date; +import java.util.Iterator; import java.util.List; -import java.util.Optional; /** * Created by vincent on 2020/7/6 @@ -44,117 +38,138 @@ @Autowired private WrkDetlLogService wrkDetlLogService; @Autowired - private WaitPakinService waitPakinService; + private OrderService orderService; @Autowired - private WaitPakinLogService waitPakinLogService; + private OrderDetlService orderDetlService; @Autowired private ErpService erpService; @Autowired - private SnowflakeIdWorker snowflakeIdWorker; - @Autowired - private WmsService wmsService; + private DocTypeService docTypeService; + // update asr_wrk_mast set inv_wh = 'Y', ove_mk = 'Y' where wrk_no = @Transactional public ReturnT<String> start(WrkMast wrkMast) { try { - - // 鍏ュ簱 - if (wrkMast.getWrkSts() == 5) { - - // 鍏ㄦ澘鍏ュ簱 - if (wrkMast.getIoType() == 1) { - String docNum = "PU-" + String.valueOf(snowflakeIdWorker.nextId()).substring(0, 15); - // 涓婃姤缁檈rp - List<MatnrDto> matnrDtos = new ArrayList<>(); - List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); - for (WrkDetl wrkDetl : wrkDetls) { - MatnrDto dto = new MatnrDto(); - dto.setMatnr(wrkDetl.getMatnr()); - dto.setCount(wrkDetl.getAnfme()); - matnrDtos.add(dto); - } - List<BillDto> dtos = new ArrayList<>(); - for (MatnrDto dto : matnrDtos) { - BillDto billDto = new BillDto(); - billDto.setMatnr(dto.getMatnr()); - billDto.setQty(dto.getCount()); - dtos.add(billDto); - } - if (!erpService.uploadBill(dtos, 34, docNum)) { - exceptionHandle("鏃犳硶涓婃姤鑷砮rp[workNo={0}]澶辫触", wrkMast.getWrkNo()); - } - // 鍏ュ簱閫氱煡鍗� - if (!Cools.isEmpty(wrkMast.getBarcode())) { - // 淇濆瓨鍏ュ簱閫氱煡妗e巻鍙叉。 - if (!waitPakinLogService.save(wrkMast.getBarcode())) { - exceptionHandle("淇濆瓨鍏ュ簱閫氱煡妗e巻鍙叉。[workNo={0}]澶辫触", wrkMast.getWrkNo()); - } - // 鍒犻櫎鍏ュ簱閫氱煡妗� - if (!waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()))) { - exceptionHandle("鍒犻櫎鍏ュ簱閫氱煡妗workNo={0}]澶辫触", wrkMast.getWrkNo()); - } - } - // 鎷f枡鍐嶅叆搴� - } else if (wrkMast.getIoType() == 53) { - // 闈為攢鍞鍗曞嚭搴擄紝闇�瑕佽ˉ璐у埌骞充粨 - if (!wrkMast.getPdcType().equals("Y")) { - List<ReplenishDto> replenishDtos = new ArrayList<>(); - List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); - for (WrkDetl wrkDetl : wrkDetls) { - ReplenishDto param = new ReplenishDto(); - param.setMatnr(wrkDetl.getMatnr()); - param.setCount(wrkDetl.getAnfme()); - param.setWorkNo(wrkMast.getWrkNo()); - replenishDtos.add(param); - } - Result result = wmsService.replenish(replenishDtos); - if (result.getCode() != 200) { - exceptionHandle("琛ヨ揣鍒板钩浠揫workNo={0}]澶辫触", wrkMast.getWrkNo()); - } - } - - } - - // 鍑哄簱 - } else if (wrkMast.getWrkSts() == 15) { - // 闈為攢鍞鍗曞嚭搴擄紝闇�瑕佽ˉ璐у埌骞充粨 - if (Cools.isEmpty(wrkMast.getPdcType()) || !wrkMast.getPdcType().equals("Y")) { - List<ReplenishDto> replenishDtos = new ArrayList<>(); - List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); - for (WrkDetl wrkDetl : wrkDetls) { - ReplenishDto param = new ReplenishDto(); - param.setMatnr(wrkDetl.getMatnr()); - param.setCount(wrkDetl.getAnfme()); - param.setWorkNo(wrkMast.getWrkNo()); - replenishDtos.add(param); - } - Result result = wmsService.replenish(replenishDtos); - if (result.getCode() != 200) { - exceptionHandle("琛ヨ揣鍒板钩浠揫workNo={0}]澶辫触", wrkMast.getWrkNo()); - } - // 閿�鍞鍗� - } else { - if (wrkMast.getIoType() == 101) { - Double more = Optional.ofNullable(wrkMast.getRefWrkno()).orElse(0.0D); - List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); - if (more > 0 && !Cools.isEmpty(wrkDetls)) { - WrkDetl wrkDetl = wrkDetls.get(0); - ReplenishDto param = new ReplenishDto(); - param.setMatnr(wrkDetl.getMatnr()); - param.setCount(more); - param.setWorkNo(wrkMast.getWrkNo()); - List<ReplenishDto> replenishDtos = new ArrayList<>(); - replenishDtos.add(param); - Result result = wmsService.replenish(replenishDtos); - if (result.getCode() != 200) { - exceptionHandle("琛ヨ揣鍒板钩浠揫workNo={0}]澶辫触", wrkMast.getWrkNo()); - } - } + List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); + // 鍖哄垎璁㈠崟浠诲姟 + List<WrkDetl> wrkDetlsKeyOrder = new ArrayList<>(); + if (!Cools.isEmpty(wrkDetls)) { + Iterator<WrkDetl> iterator = wrkDetls.iterator(); + while (iterator.hasNext()) { + WrkDetl wrkDetl = iterator.next(); + if (!Cools.isEmpty(wrkDetl.getOrderNo())) { + wrkDetlsKeyOrder.add(wrkDetl); + iterator.remove(); } } } + // 鍏ュ簱 -------------------------------------------------------------------------------- + if (wrkMast.getWrkSts() == 10) { + // 鍏ㄦ澘鍏ュ簱 + if (wrkMast.getIoType() == 1) { + + // 銆� 涓婃姤涓夋柟骞冲彴 銆� + if (!Cools.isEmpty(wrkDetls)) { + for (WrkDetl wrkDetl : wrkDetls) { + // Goods 琛� + Goods goods = erpService.selectGoodsOne(wrkDetl.getBatch()); + if (!Cools.isEmpty(goods)) { + if (!erpService.updateStateAndLocForGoods(goods.getBarCode(), 3, wrkMast.getLocNo())) { + log.error("{}鏉$爜鍦╡rp鏁版嵁搴撲腑鏇存柊澶辫触锛�", goods.getBarCode()); + } + } else { + log.error("{}鏉$爜涓嶅湪erp鏁版嵁搴撲腑锛�", wrkDetl.getBatch()); + } + // OrderDetl 琛� + OrderDetl orderDetl = orderDetlService.selectContainBatch(wrkDetl.getBatch()); + if (!Cools.isEmpty(orderDetl)) { + Order order = orderService.selectById(orderDetl.getOrderId()); + DocType docType = docTypeService.selectById(order.getDocType()); + if (docType.getPakin() == 1) { + if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), wrkDetl.getAnfme())) { + log.error("{}缂栧彿璁㈠崟锛屾洿鏂皗}鏉$爜鏁伴噺澶辫触", orderDetl.getOrderNo(), orderDetl.getMatnr()); + } + } + // Order 琛� + if (order.getSettle() < 3L) { + List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId()); + boolean complete = true; + for (OrderDetl detl : orderDetls) { + if (detl.getAnfme() > detl.getQty()) { + complete = false; + break; + } + } + if (complete) { + if (!orderService.updateSettle(order.getId(), 4L, null)) { + throw new CoolException("淇敼璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戠姸鎬佷负宸插畬鎴愬け璐�"); + } + } + } + } + } + } + // 鎷f枡鍐嶅叆搴� + } else if (wrkMast.getIoType() == 53) { + if (!Cools.isEmpty(wrkDetls)) { + if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) { + exceptionHandle("鐢熸垚鎵嬪姩鍑哄簱鍗曟嵁[workNo={0}]澶辫触", wrkMast.getWrkNo()); + } + } + // 淇敼 erp Goods 琛� + for (WrkDetl wrkDetl : wrkDetls) { + Goods goods = erpService.selectGoodsOne(wrkDetl.getBatch()); + if (!Cools.isEmpty(goods)) { + if (!erpService.updateStateForGoods(goods.getBarCode(), 4)) { + log.error("{}鏉$爜鍦╡rp鏁版嵁搴撲腑鏇存柊澶辫触锛�", goods.getBarCode()); + } + } else { + log.error("{}鏉$爜涓嶅湪erp鏁版嵁搴撲腑锛�", wrkDetl.getMatnr()); + } + } + for (WrkDetl wrkDetl : wrkDetlsKeyOrder) { + Goods goods = erpService.selectGoodsOne(wrkDetl.getBatch()); + if (!Cools.isEmpty(goods)) { + if (!erpService.updateStateForGoods(goods.getBarCode(), 4)) { + log.error("{}鏉$爜鍦╡rp鏁版嵁搴撲腑鏇存柊澶辫触锛�", goods.getBarCode()); + } + } else { + log.error("{}鏉$爜涓嶅湪erp鏁版嵁搴撲腑锛�", wrkDetl.getMatnr()); + } + } + } + + // 鍑哄簱 -------------------------------------------------------------------------------- + } else if (wrkMast.getWrkSts() == 18) { + if (!Cools.isEmpty(wrkDetls)) { + if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) { + exceptionHandle("鐢熸垚鎵嬪姩鍑哄簱鍗曟嵁[workNo={0}]澶辫触", wrkMast.getWrkNo()); + } + } + // 淇敼 erp Goods 琛� + for (WrkDetl wrkDetl : wrkDetls) { + Goods goods = erpService.selectGoodsOne(wrkDetl.getBatch()); + if (!Cools.isEmpty(goods)) { + if (!erpService.updateStateForGoods(goods.getBarCode(), 4)) { + log.error("{}鏉$爜鍦╡rp鏁版嵁搴撲腑鏇存柊澶辫触锛�", goods.getBarCode()); + } + } else { + log.error("{}鏉$爜涓嶅湪erp鏁版嵁搴撲腑锛�", wrkDetl.getMatnr()); + } + } + for (WrkDetl wrkDetl : wrkDetlsKeyOrder) { + Goods goods = erpService.selectGoodsOne(wrkDetl.getBatch()); + if (!Cools.isEmpty(goods)) { + if (!erpService.updateStateForGoods(goods.getBarCode(), 4)) { + log.error("{}鏉$爜鍦╡rp鏁版嵁搴撲腑鏇存柊澶辫触锛�", goods.getBarCode()); + } + } else { + log.error("{}鏉$爜涓嶅湪erp鏁版嵁搴撲腑锛�", wrkDetl.getMatnr()); + } + } + } // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� if (!wrkMastLogService.save(wrkMast.getWrkNo())) { @@ -172,7 +187,20 @@ if (!wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()))) { // exceptionHandle("鍒犻櫎宸ヤ綔鏄庣粏妗workNo={0}]澶辫触", wrkMast.getWrkNo()); } + // 淇敼璁㈠崟鐘舵�� 浣滀笟涓� ===>> 宸插畬鎴� + for (WrkDetl wrkDetl : wrkDetlsKeyOrder) { + if (!BaseController.isJSON(wrkDetl.getOrderNo())) { + orderService.checkComplete(wrkDetl.getOrderNo()); + } else { + // 璁㈠崟鍚堝苟鍑哄簱 + List<OrderDto> orderDtoList = JSON.parseArray(wrkDetl.getOrderNo(), OrderDto.class); + for (OrderDto one : orderDtoList) { + orderService.checkComplete(one.getOrderNo()); + } + } + } } catch (Exception e) { + log.error("fail", e); e.printStackTrace(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg(e.getMessage()); -- Gitblit v1.9.1