From 1c99199ceac9596a30cf0cd4e57d684ac7da7a94 Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期五, 25 四月 2025 12:55:15 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/controller/OrderController.java | 293 +++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 249 insertions(+), 44 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/OrderController.java b/src/main/java/com/zy/asrs/controller/OrderController.java index 6a0f070..7f24378 100644 --- a/src/main/java/com/zy/asrs/controller/OrderController.java +++ b/src/main/java/com/zy/asrs/controller/OrderController.java @@ -7,15 +7,19 @@ import com.core.annotations.ManagerAuth; import com.core.common.*; import com.core.exception.CoolException; -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.OrderDetlService; -import com.zy.asrs.service.OrderService; + +import com.zy.asrs.entity.result.WrkTraceVo; +import com.zy.asrs.service.*; +import com.zy.asrs.utils.FileSaveExampleUtil; +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.*; +import org.springframework.web.multipart.MultipartFile; import java.util.*; @@ -28,6 +32,46 @@ private OrderDetlService orderDetlService; @Autowired 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 + public R navList(@RequestParam(required = false) String orderNo){ + EntityWrapper<Order> wrapper = new EntityWrapper<>(); + if (!Cools.isEmpty(orderNo)) { + wrapper.like("order_no", orderNo); + } + wrapper.le("settle", 2).eq("status", 1); + wrapper.orderBy("create_time", false); + List<Order> orders = orderService.selectList(wrapper); + // 淇濈暀鍑哄簱鍗� + if (!Cools.isEmpty(orders)) { + Iterator<Order> iterator = orders.iterator(); + while (iterator.hasNext()) { + Order order = iterator.next(); + if (order.getDocType() != null) { + DocType docType = docTypeService.selectById(order.getDocType()); + if (docType != null) { + if (docType.getPakout() == 0) { + iterator.remove(); + } + } + } + } + } + return R.ok().add(orders); + } @RequestMapping(value = "/order/head/page/auth") @ManagerAuth @@ -40,7 +84,7 @@ excludeTrash(param); convert(param, wrapper); if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} else { - wrapper.orderBy("create_time", false); + wrapper.orderBy("settle").orderBy("create_time", false); } wrapper.eq("status", 1); return R.ok(orderService.selectPage(new Page<>(curr, limit), wrapper)); @@ -56,6 +100,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("鍗曟嵁缂栧彿宸插瓨鍦�"); @@ -100,16 +152,28 @@ if (!orderService.insert(order)) { throw new CoolException("淇濆瓨璁㈠崟涓绘。澶辫触"); } + List<DetlDto> list = new ArrayList<>(); for (OrderDetl orderDetl : param.getOrderDetlList()) { - orderDetl.setOrderId(order.getId()); - orderDetl.setCreateBy(getUserId()); - orderDetl.setCreateTime(now); - orderDetl.setUpdateBy(getUserId()); - orderDetl.setUpdateTime(now); - orderDetl.setStatus(1); - orderDetl.setQty(0.0D); - if (!orderDetlService.insert(orderDetl)) { - throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�"); + DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch()); + if (DetlDto.has(list, dto)) { + OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch()); + item.setAnfme(item.getAnfme() + orderDetl.getAnfme()); + if (!orderDetlService.updateById(item)) { + throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�"); + } + } else { + list.add(dto); + orderDetl.setOrderId(order.getId()); + orderDetl.setOrderNo(order.getOrderNo()); + orderDetl.setCreateBy(getUserId()); + orderDetl.setCreateTime(now); + orderDetl.setUpdateBy(getUserId()); + orderDetl.setUpdateTime(now); + orderDetl.setStatus(1); + orderDetl.setQty(0.0D); + if (!orderDetlService.insert(orderDetl)) { + throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�"); + } } } return R.ok("璁㈠崟娣诲姞鎴愬姛"); @@ -135,41 +199,112 @@ } } // 淇敼鏄庣粏妗� - List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId()); +// List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId()); // 1.娓呯┖鏄庣粏妗� if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()))) { throw new CoolException("娓呯┖璁㈠崟鏄庣粏澶辫触"); } // 2.閲嶇粍鏁版嵁 + List<DetlDto> list = new ArrayList<>(); for (OrderDetl orderDetl : param.getOrderDetlList()) { - OrderDetl detl = orderDetlService.findByLook(orderDetls, order.getId(), orderDetl.getMatnr(), orderDetl.getBatch()); - // 鏂板 - if (detl == null) { - detl = orderDetl; - detl.setOrderId(order.getId()); - detl.setCreateTime(now); - detl.setCreateBy(userId); - detl.setUpdateTime(now); - detl.setUpdateBy(userId); - detl.setStatus(1); - detl.setQty(0.0D); - // 淇敼 + DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch()); + if (DetlDto.has(list, dto)) { + OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch()); + item.setAnfme(item.getAnfme() + orderDetl.getAnfme()); + if (!orderDetlService.updateById(item)) { + throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�"); + } } else { - detl.setAnfme(orderDetl.getAnfme()); // 淇敼鏁伴噺 - detl.setUpdateTime(now); - detl.setUpdateBy(userId); - } - // 鎸佷箙鍖� - if (!orderDetlService.insert(detl)) { - throw new CoolException("鏂板璁㈠崟鏄庣粏澶辫触"); + list.add(dto); + orderDetl.setOrderId(order.getId()); + orderDetl.setOrderNo(order.getOrderNo()); + orderDetl.setCreateBy(getUserId()); + orderDetl.setCreateTime(now); + orderDetl.setUpdateBy(getUserId()); + orderDetl.setUpdateTime(now); + orderDetl.setStatus(1); + orderDetl.setQty(0.0D); + if (!orderDetlService.insert(orderDetl)) { + throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�"); + } } } 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) + ); + } // ------------------------------------------------------------------------------------------------ @@ -207,16 +342,58 @@ } } + @RequestMapping(value = "/order/update/auth") + @ManagerAuth + public R update(Order order){ + 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)) { + throw new CoolException("淇敼璁㈠崟澶辫触"); + } + return R.ok(); + } + @RequestMapping(value = "/order/priAdd/auth") + @ManagerAuth(memo = "鎵嬪姩澧炲姞璁㈠崟浼樺厛绾�") + @Transactional + public R priAdd(@RequestParam Long orderId){ + Order order = orderService.selectById(orderId); + wrkMastService.orderAddPri(order.getOrderNo()); + return R.ok(); + } + @RequestMapping(value = "/order/priReduce/auth") + @ManagerAuth(memo = "鎵嬪姩鍑忓皯璁㈠崟浼樺厛绾�") + @Transactional + public R priReduce(@RequestParam Long orderId){ + Order order = orderService.selectById(orderId); + wrkMastService.orderReducePri(order.getOrderNo()); + return R.ok(); + } @RequestMapping(value = "/order/delete/auth") @ManagerAuth(memo = "鎵嬪姩鍒犻櫎璁㈠崟") + @Transactional public R delete(@RequestParam Long orderId){ - Order order = orderService.selectById(orderId); - if (order != null) { - order.setStatus(0); - } - if (!orderService.updateById(order)) { - throw new CoolException("鍒犻櫎璁㈠崟澶辫触"); - } + orderService.remove(orderId); +// Order order = orderService.selectById(orderId); +// if (order != null) { +// order.setStatus(0); +// } +// if (!orderService.updateById(order)) { +// throw new CoolException("鍒犻櫎璁㈠崟澶辫触"); +// } +// orderDetlService.modifyStatus(orderId, 0); return R.ok(); } @@ -257,4 +434,32 @@ return R.ok(); } + @RequestMapping(value = "/order/insert/labelUp/file/auth") +// @ManagerAuth + public R insertLabelUpFile(@RequestParam("orderId") String orderId,@RequestParam MultipartFile file){ + String[] split = orderId.split("-"); + int id = Integer.parseInt(split[1]); + System.out.println("---寮�濮�---"); + String savePath = "D:/order/labelUp/file/"+id+"/"; // 鎸囧畾淇濆瓨鏂囦欢鐨勮矾寰� + try{ + FileSaveExampleUtil.saveFile(file, savePath); + }catch (Exception e){ + return R.error(); + } + return R.ok(); + } + + @RequestMapping(value = "/order/view/labelUp/file/auth") +// @ManagerAuth + public R viewLabelUpFile(@RequestParam("orderId") Long orderId){ +// int id = Integer.parseInt(orderId); + String savePath = "D:/order/labelUp/file/"+orderId+"/"; // 鎸囧畾淇濆瓨鏂囦欢鐨勮矾寰� + try{ + List<FileSaveExampleUtil.FileDTO> fileDTOS = FileSaveExampleUtil.viewFileList(savePath); + return R.ok(fileDTOS); + }catch (Exception e){ + return R.error(); + } + } + } -- Gitblit v1.9.1