自动化立体仓库 - WMS系统
skyouc
19 小时以前 075d19c410180b7cee4068ecc75ddcc09c8a49d8
no message
7个文件已修改
150 ■■■■ 已修改文件
src/main/java/com/zy/asrs/service/WorkService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 119 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/model/LocDto.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/model/TaskDto.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/WorkService.java
@@ -91,6 +91,15 @@
    void pickWrkMast(String workNo, Long userId);
    /**
     * 空板回库/余料回库
     * @author Ryan
     * @date 2026/1/13 19:45
     * @param workNo
     * @param userId
     */
    void backLocOperation(String workNo, Long userId);
    /**
     * 通知档手动生成任务
     */
    StartupDto createWaitPainWrkMastStart(List<WaitPakin> list, Long userId);
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -1244,6 +1244,7 @@
            Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>()
                    .eq("zpallet", pakin.getZpallet());
            WaitPakin setParam = new WaitPakin();
            setParam.setBrand(pakin.getBrand());
            setParam.setLocNo(dto.getLocNo());
            setParam.setIoStatus("Y");
            setParam.setModiTime(now);
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -24,6 +24,7 @@
import com.zy.common.properties.SlaveProperties;
import com.zy.common.service.CommonService;
import com.zy.common.web.WcsController;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.StringUtils;
import org.springframework.beans.BeanUtils;
@@ -485,9 +486,6 @@
            }
        }
        List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locMasts.getLocNo(), 1);
        //TODO 1. 获取入库站点, 目标库位  3. 将出库明细添加至入库明细
        Integer staNo = staNos.stream().findFirst().get();
@@ -537,6 +535,10 @@
            wrkDetl.setZpallet(wrkMast.getBarcode());
            wrkDetl.setIoTime(now);
            wrkDetl.setWrkNo(workNo);
            wrkDetl.setBrand(orderDetl.getBrand());
            wrkDetl.setModel(orderDetl.getModel());
            wrkDetl.setUnit(orderDetl.getUnit());
            wrkDetl.setStandby1(locDto.getStandby1());
            wrkDetl.setBatch(locDto.getBatch());
            wrkDetl.setOrderNo(locDto.getOrderNo());
            wrkDetl.setAnfme(locDto.getAnfme()); // 数量
@@ -1321,25 +1323,37 @@
        if (Cools.isEmpty(wrkMast)) {
            throw new CoolException(workNo + "工作档不存在");
        }
        Integer ioType = wrkMast.getIoType() - 50;
        int wokNo = wrkMast.getWrkNo();
        // 入出库类型判断
        if (wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107) {
            throw new CoolException("当前入出库类型无法进行操作");
        }
        // 工作状态判断
        if (wrkMast.getWrkSts() < 11 || wrkMast.getWrkSts() == 15) {
            throw new CoolException("当前工作状态无法进行操作");
        if (Objects.isNull(wrkMast.getWrkCode())) {
            if (wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107) {
                throw new CoolException("当前入出库类型无法进行操作");
            }
            // 工作状态判断
            if (wrkMast.getWrkSts() < 11 || wrkMast.getWrkSts() == 15) {
                throw new CoolException("当前工作状态无法进行操作");
            }
        } else {
            if (wrkMast.getIoType() == 103) {
                ioType = 1;
            } else if (wrkMast.getIoType() == 101) {
                ioType = 10;
            }
            wokNo = commonService.getWorkNo(0);
        }
        // 保存工作明细档历史档
//        if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
//            throw new CoolException("保存工作明细档历史档失败");
////        }
//        // 保存工作主档历史档
//        if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
//            throw new CoolException("保存工作主档历史档失败");
//        }
        // 保存工作主档历史档
        if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
            throw new CoolException("保存工作主档历史档失败");
        }
        // 获取目标站
        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                .eq("type_no", wrkMast.getIoType() - 50)
                .eq("type_no", ioType)
                .eq("stn_no", wrkMast.getStaNo()) // 作业站点 = 拣料出库的目标站
                .eq("crn_no", wrkMast.getCrnNo()); // 堆垛机号
        StaDesc staDesc = staDescService.selectOne(wrapper);
@@ -1350,7 +1364,7 @@
        // 堆垛机站点(目标站)
        Integer staNo = staDesc.getCrnStn();
        // 更新工作档数据状态
        wrkMast.setIoType(wrkMast.getIoType() - 50); // 入出库类型: 103->53,104->54,107->57
        wrkMast.setIoType(ioType); // 入出库类型: 103->53,104->54,107->57
        wrkMast.setWrkSts(2L); // 工作状态: 2.设备上走
        wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 源站
        wrkMast.setStaNo(staNo + ""); // 目标站
@@ -1374,6 +1388,81 @@
        }
    }
    @Override
    @Transactional
    public void backLocOperation(String workNo, Long userId) {
        WrkMast wrkMast = wrkMastService.selectById(workNo);
        if (Cools.isEmpty(wrkMast)) {
            throw new CoolException(workNo + "工作档不存在");
        }
        Integer ioType = wrkMast.getIoType() - 50;
        Integer wokNo;
        // 入出库类型判断
        if (wrkMast.getIoType() == 103) {
            ioType = 1;
        } else if (wrkMast.getIoType() == 101) {
            ioType = 10;
        }
        wokNo = commonService.getWorkNo(0);
        // 获取目标站
        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                .eq("type_no", ioType)
                .eq("stn_no", wrkMast.getStaNo()) // 作业站点 = 拣料出库的目标站
                .eq("crn_no", wrkMast.getCrnNo()); // 堆垛机号
        StaDesc staDesc = staDescService.selectOne(wrapper);
        if (Cools.isEmpty(staDesc)) {
            throw new CoolException("入库路径不存在");
        }
        Date now = new Date();
        // 堆垛机站点(目标站)
        Integer staNo = staDesc.getCrnStn();
        WrkMast mast = new WrkMast();
        BeanUtils.copyProperties(wrkMast, mast);
        mast.setWrkNo(wokNo);
        // 更新工作档数据状态
        mast.setIoType(ioType); // 入出库类型: 103->53,104->54,107->57
        mast.setWrkSts(2L); // 工作状态: 2.设备上走
        mast.setSourceStaNo(wrkMast.getStaNo()); // 源站
        mast.setStaNo(staNo + ""); // 目标站
        //判断是否为领料出库
        if (Objects.isNull(mast.getWrkCode())) {
            mast.setLocNo(mast.getSourceLocNo()); // 目标库位 = 出库时的源库位
        }
//        mast.setSourceLocNo(""); // 源库位清空
        mast.setModiTime(now);
        mast.setModiUser(userId);
        if (!wrkMastService.insert(mast)) {
            throw new CoolException("更新工作档数据状态失败");
        }
        List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
        if (Cools.isEmpty(wrkDetls)) {
            throw new CoolException("数据错误,任务档明细不存在 !!");
        }
        wrkDetls.forEach(wrkDetl -> {
            WrkDetl wrkDetl1 = new WrkDetl();
            BeanUtils.copyProperties(wrkDetl, wrkDetl1);
            wrkDetl1.setWrkNo(wokNo);
            if (!wrkDetlService.insert(wrkDetl1)) {
                throw new CoolException("任务档明细保存失败!!");
            }
        });
        // 修改库位状态 Q.拣料/盘点/并板再入库
        LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
        locMast.setLocSts("Q");
        locMast.setModiTime(now);
        locMast.setModiUser(userId);
        if (!locMastService.updateById(locMast)) {
            throw new CoolException("修改库位状态失败");
        }
    }
    @Override
    public StartupDto createWaitPainWrkMastStart(List<WaitPakin> list, Long userId) {
        if (Cools.isEmpty(list)) {
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -17,6 +17,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
/**
 * Created by vincent on 2020/7/6
@@ -93,6 +94,9 @@
            // 出库 --------------------------------------------------------------------------------
            } else if (wrkMast.getWrkSts() == 15) {
                if (!Objects.isNull(wrkMast.getWrkCode())) {
                    return FAIL;
                }
//                if (!Cools.isEmpty(wrkDetls)) {
//                    if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) {
//                        exceptionHandle("生成手动出库单据[workNo={0}]失败", wrkMast.getWrkNo());
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -559,11 +559,11 @@
                    break;
            }
            // 修改工作主档状态
            if (!Objects.isNull(wrkMast.getWrkCode())) {
                //领料出库任务,不修改
            } else {
                wrkMast.setWrkSts(15L);
            }
            wrkMast.setWrkSts(15L);
//            if (!Objects.isNull(wrkMast.getWrkCode())) {
//                //领料出库任务,不修改
//            } else {
//            }
            wrkMast.setModiTime(now);
            if (!wrkMastService.updateById(wrkMast)) {
//                exceptionHandle("更新出库完成状态失败;[workNo={0}]", wrkMast.getWrkNo());
src/main/java/com/zy/common/model/LocDto.java
@@ -18,6 +18,12 @@
    private String maktx;
    private String model;
    private String specs;
    private String unit;
    private String batch;
    private String brand = "";
    private String standby1 = "";
src/main/java/com/zy/common/model/TaskDto.java
@@ -40,6 +40,7 @@
        this.deviceNo = deviceNo;
    }
    public TaskDto(String locNo, Integer staNo, LocDto locDto) {
        this.locNo = locNo;
        this.staNo = staNo;