自动化立体仓库 - WMS系统
LSH
2023-08-14 1a987c661d60c77b258a3be42c09a3fd2ba3ae06
src/main/java/com/zy/asrs/controller/OutController.java
@@ -1,6 +1,8 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
@@ -8,6 +10,7 @@
import com.core.common.R;
import com.zy.asrs.entity.*;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.Utils;
import com.zy.common.model.LocDto;
import com.zy.common.model.OrderDto;
import com.zy.common.model.OrderMergeVo;
@@ -113,7 +116,7 @@
        // 订单预校验  ===>> 1.订单状态; 2.订单带出数量
        List<OrderDto> orderDtos = new ArrayList<>();
        for (LocDto locDto : locDtos) {
            if (isJSON(locDto.getOrderNo())) {
            if (!isJSON(locDto.getOrderNo())) {
                if (Cools.isEmpty(locDto.getOrderNo())) { continue; }
                OrderDto orderDto = new OrderDto(locDto.getOrderNo(), locDto.getMatnr(), locDto.getAnfme());
                if (OrderDto.has(orderDtos, orderDto)) {
@@ -125,7 +128,10 @@
                }
            } else {
                // 订单合并出库
//                List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
                List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
                for (OrderDto one : orderDtoList) {
                    OrderDto orderDto = new OrderDto(one.getOrderNo(), locDto.getMatnr(), one.getAnfme());
                    if (OrderDto.has(orderDtos, orderDto)) {
@@ -172,13 +178,51 @@
                taskDtos.add(taskDto);
            }
        }
        List<String> locNos = new ArrayList<>();
        for (TaskDto taskDto : taskDtos) {
            if (!locNos.contains(taskDto.getLocNo())){
                locNos.add(taskDto.getLocNo());
            }
        }
        List<TaskDto> taskDtos1 = new ArrayList<>();
        for (TaskDto taskDto : taskDtos) {
            String locNo = taskDto.getLocNo();
            List<String> groupOuterSingleLoc = Utils.getGroupOuterSingleLoc(locNo);
            if (Utils.getBay(locNo)>=21){
                groupOuterSingleLoc = Utils.getGroupOuterSingleLocLowFrequency(locNo);
            }
            for (String locNo1 : groupOuterSingleLoc){
                if (!locNos.contains(locNo1)){
                    locNos.add(locNo1);
                    LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locNo1));
                    if (locMast.getLocSts().equals("F")){
                        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", locNo1));
                        if (Cools.isEmpty(locDetls) || locDetls.size()==0) {
                            TaskDto taskDto1 = new TaskDto(locNo1, taskDto.getStaNo());
                            taskDtos1.add(taskDto1);
                        }else {
                            List<LocDto> locDtos1 = new ArrayList<>();
                            for (LocDetl locDetl:locDetls){
                                LocDto locDto = new LocDto(locDetl,taskDto.getLocDtos().get(0),"伴生出库");
                                locDtos1.add(locDto);
                            }
                            TaskDto taskDto1 = new TaskDto(locNo1, taskDto.getStaNo(),locDtos1);
                            taskDtos1.add(taskDto1);
                        }
                    }else if (locMast.getLocSts().equals("D")){
                        TaskDto taskDto1 = new TaskDto(locNo1, taskDto.getStaNo());
                        taskDtos1.add(taskDto1);
                    }
                }
            }
        }
        taskDtos.addAll(taskDtos1);
        // -----------------------------------------------------------------------------------------------
        List<String> excludeLocNos = taskDtos.stream().map(TaskDto::getLocNo).distinct().collect(Collectors.toList());
        for (TaskDto taskDto : taskDtos) {
            BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo());
            workService.stockOut(staNo, taskDto, getUserId());
            locMastService.breakUp(taskDto.getLocNo(), excludeLocNos);
//            locMastService.breakUp(taskDto.getLocNo(), excludeLocNos);
        }
        return R.ok();
    }