src/main/java/com/zy/asrs/controller/OutController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/common/model/OrderDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/OutController.java
@@ -4,11 +4,10 @@ import com.core.common.BaseRes; import com.core.common.Cools; import com.core.common.R; import com.zy.asrs.entity.BasDevp; import com.zy.asrs.entity.LocDetl; import com.zy.asrs.entity.OrderDetl; import com.zy.asrs.entity.*; import com.zy.asrs.service.*; import com.zy.common.model.LocDto; import com.zy.common.model.OrderDto; import com.zy.common.model.TaskDto; import com.zy.common.web.BaseController; import org.springframework.beans.factory.annotation.Autowired; @@ -104,12 +103,42 @@ return R.error("库存不足"); } Thread.sleep(1000L); Thread.sleep(500L); // 订单预校验 ===>> 1.订单状态; 2.订单带出数量 List<OrderDto> orderDtos = new ArrayList<>(); for (LocDto locDto : locDtos) { if (Cools.isEmpty(locDto.getOrderNo())) { continue; } OrderDto orderDto = new OrderDto(locDto.getOrderNo(), locDto.getMatnr(), locDto.getAnfme()); if (OrderDto.has(orderDtos, orderDto)) { OrderDto dto = OrderDto.find(orderDtos, orderDto); assert dto != null; dto.setAnfme(dto.getAnfme() + orderDto.getAnfme()); } else { orderDtos.add(orderDto); } } for (OrderDto orderDto : orderDtos) { Order order = orderService.selectByNo(orderDto.getOrderNo()); if (order.getSettle() > 2) { return R.error(orderDto.getOrderNo() + "订单已失效,请及时刷新页面"); } OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), orderDto.getMatnr(), null); if (orderDetl.getAnfme() - orderDetl.getQty() < orderDto.getAnfme()) { return R.ok(orderDto.getOrderNo() + "订单已作业,请及时刷新页面"); } } List<TaskDto> taskDtos = new ArrayList<>(); // 根据 (库位 & 出库站) 分组; 理想状态:一组为一次出库任务 for (LocDto locDto : locDtos) { if (locDto.isLack()) { continue; } // 防止前端页面提取库位信息后,在其他地方对该库位生成了出库任务(库位状态非F状态) LocMast locMast = locMastService.selectById(locDto.getLocNo()); if(!Cools.isEmpty(locMast) && !locMast.getLocSts().equals("F")){ return R.error("库位号非在库状态,请重新选择出库库位===>>" + locDto.getLocNo()); } TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getStaNo(), locDto); if (TaskDto.has(taskDtos, taskDto)) { TaskDto dto = TaskDto.find(taskDtos, taskDto); src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -326,6 +326,10 @@ if (orderDetl == null) { orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null); } LocDetl locDetl = locDetlService.selectItem(locDto.getLocNo(), locDto.getMatnr(), locDto.getBatch()); if (locDetl == null || locDetl.getAnfme() < locDto.getAnfme()) { throw new CoolException(locDto.getLocNo() + "库位中" + locDto.getMatnr() + "商品库存不足!"); } WrkDetl wrkDetl = new WrkDetl(); wrkDetl.sync(orderDetl); wrkDetl.setZpallet(wrkMast.getBarcode()); src/main/java/com/zy/common/model/OrderDto.java
New file @@ -0,0 +1,50 @@ package com.zy.common.model; import com.core.common.Cools; import lombok.Data; import java.util.List; /** * Created by vincent on 2022/8/18 */ @Data public class OrderDto { private String orderNo; private String matnr; private Double anfme; public OrderDto(String orderNo, String matnr, Double anfme) { this.orderNo = orderNo; this.matnr = matnr; this.anfme = anfme; } public static boolean has(List<OrderDto> list, OrderDto dto) { if (Cools.isEmpty(list)) { return false; } for (OrderDto orderDto : list) { if (dto.getOrderNo().equals(orderDto.getOrderNo()) && dto.getMatnr().equals(orderDto.getMatnr())) { return true; } } return false; } public static OrderDto find(List<OrderDto> list, OrderDto dto) { if (Cools.isEmpty(list)) { return null; } for (OrderDto orderDto : list) { if (dto.getOrderNo().equals(orderDto.getOrderNo()) && dto.getMatnr().equals(orderDto.getMatnr())) { return orderDto; } } return null; } }