自动化立体仓库 - WMS系统
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -26,10 +26,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.*;
/**
 * 移动端服务核心类
@@ -88,17 +85,45 @@
        // 判断是否有相同条码的数据
        if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>().
                eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) {
            throw new CoolException(param.getBarcode() + "数据正在进行入库");
            throw new CoolException(param.getBarcode() + "数据组托档中已存在");
        }
        int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode()));
        int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode()));
        if (countLoc > 0 || countWrk > 0) {
            throw new CoolException("工作档/库存条码数据已存在===>>" + param.getBarcode());
//        int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode())
//                                            .last(" wrk_no IN ( SELECT wrk_no FROM asr_wrk_mast WHERE wrk_sts != 15 )"));
        if (countLoc > 0 ) {
            throw new CoolException("库存条码数据已存在===>>" + param.getBarcode());
        }
        if (countWrk > 0) {
            throw new CoolException("工作档条码数据已存在===>>" + param.getBarcode());
        }
        Date now = new Date();
        //进行批号筛选,批号只能唯一
        Set<String> batchs=new  HashSet<>();
        List<String> strings=new  ArrayList<>();
        for(CombParam.CombMat mat : param.getCombMats()){
            if(Cools.isEmpty(mat.getBatch())){
                continue;
            }
            batchs.add(mat.getBatch());
            strings.add(mat.getBatch());
            WaitPakin waitPakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("batch", mat.getBatch()));
            WrkDetl batch = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("batch", mat.getBatch()));
            LocDetl batch1 = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("batch", mat.getBatch()));
            if(!Cools.isEmpty(batch)||!Cools.isEmpty(batch1)||!Cools.isEmpty(waitPakin)){
                throw new CoolException("该物料批号"+mat.getBatch()+"已在入库通知档、任务明细和库存中存在");
            }
        }
        if(batchs.size()<strings.size()){
            throw new CoolException("有重复的物料批号");
        }
        int i =1;
        // 无单组托
        if (Cools.isEmpty(param.getOrderNo())) {
@@ -118,6 +143,9 @@
            for (DetlDto detlDto : detlDtos) {
                Mat mat = matService.selectByMatnr(detlDto.getMatnr());
                if (Cools.isEmpty(detlDto.getBatch())){
                    detlDto.setBatch("");
                }
                if (Cools.isEmpty(mat)) {
                    throw new CoolException(detlDto.getMatnr() + "商品档案不存在");
                }
@@ -132,7 +160,26 @@
                waitPakin.setAppeTime(now);
                waitPakin.setModiUser(userId);
                waitPakin.setModiTime(now);
                if (!waitPakinService.insert(waitPakin)) {
                waitPakin.setBrand(param.getCk());//仓库
                if(i==1){
//                0:不需要补空托盘
//                1:小托盘
//                2:大托盘
                    waitPakin.setItemNum(param.getBarcodeSize());
                    waitPakin.setMemo(Cools.isEmpty(param.getRsta()) ? "" : param.getRsta());//源站点
                    /**
                     * agv状态
                     * 0:无需调用AGV
                     * 1:等待调用AGV
                     * 2:AGV任务下发成功
                     * 3:AGV任务完成
                     * 4:给输送线下发入库指令
                     */
                    waitPakin.setBeBatch(param.getBeBatch());
                    waitPakin.setSuppCode(param.getBarcode());
                }
                i++;
            if (!waitPakinService.insert(waitPakin)) {
                    throw new CoolException("保存入库通知档失败");
                }
            }
@@ -182,6 +229,24 @@
                waitPakin.setAppeTime(now);
                waitPakin.setModiUser(userId);
                waitPakin.setModiTime(now);
                if(i==1){
//                0:不需要补空托盘
//                1:小托盘
//                2:大托盘
                    waitPakin.setItemNum(param.getBarcodeSize());
                    waitPakin.setMemo(Cools.isEmpty(param.getRsta()) ? "" : param.getRsta());//源站点
                    /**
                     * agv状态
                     * 0:无需调用AGV
                     * 1:等待调用AGV
                     * 2:AGV任务下发成功
                     * 3:AGV任务完成
                     * 4:给输送线下发入库指令
                     */
                    waitPakin.setBeBatch(param.getBeBatch());
                    waitPakin.setSuppCode(param.getBarcode());
                }
                i++;
                if (!waitPakinService.insert(waitPakin)) {
                    throw new CoolException("保存入库通知档失败");
                }