自动化立体仓库 - WMS系统
chen.llin
2026-01-01 aa0c2969838c2a794d9a45da7d4b67c5f6cb70a5
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -9,6 +9,7 @@
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.enums.LocStsType;
import com.zy.asrs.enums.TaskIOType;
import com.zy.asrs.mapper.BasDevpMapper;
import com.zy.asrs.mapper.BasStationMapper;
import com.zy.asrs.mapper.LocMastMapper;
@@ -124,10 +125,13 @@
    @Override
    public R inLocCallAgv(CallAgvParam param,Long userId) {
        int type = param.getType();
        int sourceSite = param.getSourceSite();
        String sourceSite = param.getSourceSite();
        String barcode = param.getBarcode();
        int ioType;
        LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", sourceSite));
        if (null == locCache) {
            throw new CoolException("站点不存在:" + sourceSite);
        }
        switch (type) {
            case 1:
                // 判断有没有组托
@@ -135,7 +139,10 @@
                if (count == 0) {
                    throw new CoolException("条码未组托:" + barcode);
                }
                ioType = 1;
                ioType = 101;
                locCache.setLocSts(LocStsType.LOC_STS_TYPE_R.type);
                locCacheService.updateById(locCache);
                break;
            case 2:
                // 判断是拣选回库托盘
@@ -147,6 +154,9 @@
                    throw new CoolException("条码不需要回库:" + barcode);
                }
                ioType = wrkMast.getIoType() - 50;
                locCache.setLocSts(LocStsType.LOC_STS_TYPE_R.type);
                locCacheService.updateById(locCache);
                break;
            case 3:
                // 判断条码在wms不存在,是空托盘
@@ -205,9 +215,31 @@
        // 入库暂存+1
        basDevpMapper.incrementInQty(endSite);
        // 插入agv任务
        Task task = new Task(0, 7L, ioType, String.valueOf(sourceSite), String.valueOf(endSite), userId, barcode);
        taskService.insert(task);
        // 获取工作号
        int workNo = commonService.getWorkNo(WorkNoType.PICK.type);
        // 保存工作档
        Task task = new Task();
        Date now = new Date();
        task.setWrkNo(workNo)
                .setIoTime(now)
                .setWrkSts(7L) // 工作状态:11.生成出库ID
                .setIoType(ioType) // 入出库状态: 1.入库
                .setTaskType("agv")
                .setIoPri(10D)
                .setStaNo(String.valueOf(endSite))
                .setFullPlt(ioType != 10 ? "N" : "Y")// 满板:Y
                .setPicking("N") // 拣料
                .setExitMk("N")// 退出
                .setSourceLocNo(sourceSite)
                .setEmptyMk(ioType == 10 ? "Y" : "N")// 空板
                .setBarcode(barcode)// 托盘码
                .setLinkMis("N")
                .setAppeTime(now)
                .setModiTime(now);
        if (!taskService.insert(task)) {
            throw new CoolException("保存工作档失败");
        }
        // 更新暂存位状态为 R.出库预约
        basStationMapper.updateLocStsBatch( Collections.singletonList(String.valueOf(sourceSite)), "R");