From d3234825d804a6a205dba1c6092acc8e29981b81 Mon Sep 17 00:00:00 2001 From: lfd <1> Date: 星期四, 06 三月 2025 10:11:23 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/controller/OrderController.java | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 106 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/OrderController.java b/src/main/java/com/zy/asrs/controller/OrderController.java index d79943c..fd50042 100644 --- a/src/main/java/com/zy/asrs/controller/OrderController.java +++ b/src/main/java/com/zy/asrs/controller/OrderController.java @@ -7,15 +7,14 @@ import com.core.annotations.ManagerAuth; import com.core.common.*; import com.core.exception.CoolException; -import com.zy.asrs.entity.DocType; -import com.zy.asrs.entity.Order; -import com.zy.asrs.entity.OrderDetl; +import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.OrderDomainParam; -import com.zy.asrs.service.DocTypeService; -import com.zy.asrs.service.OrderDetlService; -import com.zy.asrs.service.OrderService; + +import com.zy.asrs.entity.result.WrkTraceVo; +import com.zy.asrs.service.*; import com.zy.common.model.DetlDto; import com.zy.common.web.BaseController; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; @@ -33,6 +32,16 @@ private SnowflakeIdWorker snowflakeIdWorker; @Autowired private DocTypeService docTypeService; + @Autowired + private WrkDetlService wrkDetlService; + @Autowired + private WaitPakinService waitPakinService; + @Autowired + private LocDetlService locDetlService; + @Autowired + private WrkMastService wrkMastService; + @Autowired + private WrkMastLogService wrkMastLogService; @RequestMapping(value = "/order/nav/list/auth") @ManagerAuth @@ -89,6 +98,14 @@ @ManagerAuth(memo = "鎵嬪姩娣诲姞璁㈠崟") @Transactional public R formAdd(@RequestBody OrderDomainParam param){ + if(Cools.isEmpty(param.getOrderNo())){ + String prefix = ""; + DocType docType = docTypeService.selectById(param.getDocType()); + if(!Cools.isEmpty(docType)){ + prefix = docType.getPakin() == 1 ? "RK" : "CK"; + } + param.setOrderNo(prefix + snowflakeIdWorker.nextId()); + } Order order = orderService.selectByNo(param.getOrderNo()); if (order != null) { return R.error("鍗曟嵁缂栧彿宸插瓨鍦�"); @@ -213,9 +230,79 @@ return R.ok("璁㈠崟淇敼鎴愬姛"); } - - - + @PostMapping(value = "/order/wrk/trace/auth") + @ManagerAuth + public R orderWrkTrace(@RequestParam("orderId") Long orderId) { + Order order = orderService.selectById(orderId); + if (null == order) { + return R.error("鍗曟嵁涓嶅瓨鍦�"); + } + // 鏁伴噺缁熻 + List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(orderId); + double totalQty = 0; + double wrkQty = 0; + double lackQty = 0; + double endQty = 0; + for (OrderDetl orderDetl : orderDetls) { + totalQty = totalQty + orderDetl.getAnfme(); + wrkQty = wrkQty + orderDetl.getWorkQty(); + endQty = endQty + orderDetl.getQty(); + double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getWorkQty()).orElse(0.0D); + if (issued > 0.0) { + List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getOrigin(), null); + for (LocDetl locDetl : locDetls) { + if (issued > 0) { + issued = issued - locDetl.getAnfme(); + } else { + break; + } + } + } + if (issued > 0.0) { + lackQty = lackQty + issued; + } + } + // 浠诲姟杩芥函 + List<WrkTraceVo> wrkTraceVos = new ArrayList<>(); + List<WrkDetl> wrkDetls = wrkDetlService.selectAndLogByOrderNoGroupByMatnrOfSum(order.getOrderNo()); + for (WrkDetl wrkDetl : wrkDetls) { + WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", wrkDetl.getWrkNo()).eq("io_time", wrkDetl.getIoTime())); + if (wrkMast == null) { + WrkMastLog wrkMastLog = wrkMastLogService.selectOne(new EntityWrapper<WrkMastLog>().eq("wrk_no", wrkDetl.getWrkNo()).eq("io_time", wrkDetl.getIoTime())); + if (wrkMastLog.getIoType()==103){ + wrkMastLog = wrkMastLogService.selectOne(new EntityWrapper<WrkMastLog>().eq("wrk_no", wrkDetl.getWrkNo()).eq("io_time", wrkDetl.getIoTime()).eq("io_type",53)); + } + if (wrkMastLog != null) { + wrkMast = new WrkMast(); + BeanUtils.copyProperties(wrkMastLog, wrkMast); + } else { + continue; + } + } + boolean exist = false; + for (WrkTraceVo vo : wrkTraceVos) { + if (vo.getWrkNo().equals(wrkMast.getWrkNo()) && vo.getIoTimeStr().equals(DateUtils.convert(wrkMast.getIoTime()))) { + vo.getWrkDetls().add(wrkDetl); + exist = true; + } + } + if (!exist) { + WrkTraceVo vo = new WrkTraceVo(wrkMast.getWrkNo(), DateUtils.convert(wrkMast.getIoTime()), wrkMast, wrkDetl); + wrkTraceVos.add(vo); + } + } + if (!Cools.isEmpty(wrkTraceVos) && wrkTraceVos.size() > 1) { + wrkTraceVos.sort((o1, o2) -> (int) (o2.getWrkMast().getIoTime().getTime() - o1.getWrkMast().getIoTime().getTime())); + } + return R.ok().add(Cools + .add("list", wrkTraceVos) + .add("orderNo", order.getOrderNo()) + .add("totalQty", totalQty) + .add("wrkQty", wrkQty) + .add("lackQty", lackQty) + .add("endQty",endQty) + ); + } // ------------------------------------------------------------------------------------------------ @@ -259,6 +346,16 @@ if (Cools.isEmpty(order) || null == order.getId()){ return R.error(); } + + //璁㈠崟瀹岀粨鍓嶏紝鍒ゆ柇鏄惁瀛樺湪浣滀笟涓暟鎹紝瀛樺湪鍒欎笉鑳藉畬缁� + if(order.getSettle() == 4){ + int wrkCount = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("order_no",order.getOrderNo())); + int pakinCount = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("order_no",order.getOrderNo())); + if (wrkCount > 0 || pakinCount > 0) { + throw new CoolException("瀛樺湪浣滀笟涓暟鎹紝涓嶈兘瀹岀粨銆傝妫�鏌ュ叆搴撻�氱煡妗e拰宸ヤ綔妗�"); + } + } + order.setUpdateBy(getUserId()); order.setUpdateTime(new Date()); if (!orderService.updateById(order)) { -- Gitblit v1.9.1