自动化立体仓库 - WMS系统
#
whycq
2024-05-22 81672518fc9a2e86c5c34dba341aaa535c2f069d
#
8个文件已修改
155 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/AgvLocMastController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/AutoMoveScheduler.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/AgvLocMastController.java
@@ -105,6 +105,9 @@
                if (!agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", locMast.getLocNo()))) {
                    throw new CoolException("服务器错误,请联系管理员");
                }
                if (locMast.getLocSts().equals("O")) {
                    locMast.setBarcode("");
                }
            }
        }
        locMast.setModiUser(getUserId());
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -591,7 +591,7 @@
        }
        //入库取消
        if(wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10){
        if(wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10 || wrkMast.getIoType() == 58){
            //源站点
            String devNo = wrkMast.getSourceLocNo();
            //目标库位
src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
@@ -205,7 +205,7 @@
            agvWrkMast.setWrkNo(-agvWrkMast.getWrkNo());
        }
        agvTaskCreateParam.setTaskCode(agvWrkMast.getWrkNo().toString());
        if (agvWrkMast.getIoType() == 108 || agvWrkMast.getIoType() == 109 || agvWrkMast.getIoType() == 12) {
        if (agvWrkMast.getIoType() == 108 || (agvWrkMast.getIoType() == 109 && agvWrkMast.getWrkSts() == 201) || agvWrkMast.getIoType() == 12) {
            agvTaskCreateParam.setTaskTyp("F06");
        } else  {
            agvTaskCreateParam.setTaskTyp("F01");
src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java
@@ -166,6 +166,7 @@
                        .or().eq("io_type", 11)
                        .or().eq("io_type", 110)
                        .or().eq("io_type", 107)
                        .or().eq("io_type", 109)
                        .or().eq("io_type", 108)).getRecords();
        if(!Cools.isEmpty(agvWrkMastList)){
src/main/java/com/zy/asrs/task/AutoMoveScheduler.java
@@ -76,7 +76,7 @@
    }
    // 空板自动回库
    // 空板自动回库  库位-接驳点
    @Scheduled(cron = "0/2 * * * * ? ")
    private void autoEmptyBack(){
        // 查询 不为1楼的空货架
@@ -91,6 +91,39 @@
        for (AgvLocMast agvLocMast : agvLocMasts) {
            ReturnT<String> returnT = autoMoveHandler.autoEmptyBack(agvLocMast);
        }
    }
    // 空板自动回库  接驳点 - 1楼库位
    @Scheduled(cron = "0/2 * * * * ? ")
    private void autoEmptyBack3(){
        // 工作档为201 且 入出库类型为109
        List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>()
                .eq("wrk_sts", 201)
                .eq("loc_no","")
                .or().eq("io_type",109)
                .or().eq("io_type",112));
        if (agvWrkMastList.isEmpty()) {
            return;
        }
        for (AgvWrkMast agvWrkMast : agvWrkMastList) {
            ReturnT<String> returnT = autoMoveHandler.autoEmptyBack3(agvWrkMast);
        }
    }
    // 空板自动回库
    //@Scheduled(cron = "0/2 * * * * ? ")
    private void autoEmptyBack2(){
        // 查询 不为1楼的空货架
        List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(
                new EntityWrapper<AgvLocMast>()
                        .ne("floor", 1)
                        .eq("loc_sts","D")
                        .eq("loc_type1",3));
        if (agvLocMasts.isEmpty()) {
            return;
        }
        for (AgvLocMast agvLocMast : agvLocMasts) {
            ReturnT<String> returnT = autoMoveHandler.autoEmptyBack2(agvLocMast);
        }
    }
}
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -17,6 +17,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -70,7 +71,11 @@
        // 空板入库 设置库位状态为D.空桶/空栈板
        String locSts = agvWrkMast.getIoType() == 10 ? "D" : "F";
        if (agvWrkMast.getIoType() == 10 || agvWrkMast.getIoType() == 109) {
            agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
            if (agvWrkMast.getIoType() == 109 && agvWrkMast.getLocNo().substring(0,2).equals("DB")) {
                agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"R",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
            } else {
                agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
            }
        } else {
            agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
        }
@@ -106,10 +111,17 @@
            agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
        }
        if(agvWrkMast.getIoType() == 109 || agvWrkMast.getIoType() == 58){
        if(agvWrkMast.getIoType() == 109){
            //修改源库位状态为O
            agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
            // 新建工作档
            Date now = new Date();
            createWrkMast(109, 201L, agvWrkMast.getLocNo(), "", agvWrkMast.getBarcode(), now, 9527L, agvWrkMast.getWhsType(), 0);
        }
        if (agvWrkMast.getIoType() == 58) {
            agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue());
        }
        //删除AGV工作档
@@ -336,4 +348,41 @@
            return num <= maxWrokNum;
        }).collect(Collectors.toList());
    }
    /*
  生成工作档
   */
    private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, int containerType, int floor){
        AgvWrkMast wrkMast = new AgvWrkMast();
        //工作状态
        wrkMast.setWrkSts(wrkSts);
        //入出库类型
        wrkMast.setIoType(ioType);
        wrkMast.setIoTime(now);
        //优先级
        wrkMast.setIoPri(300.0);
        //源站点
        wrkMast.setSourceLocNo(sourceLocNo);
        //目标站点
        wrkMast.setLocNo(locNo);
        //容器编码
        wrkMast.setBarcode(barcode);
        //容器类型
        wrkMast.setWhsType(containerType);
        // 目标楼层
        wrkMast.setCrnNo(floor);
        wrkMast.setAppeUser(userId);
        wrkMast.setAppeTime(now);
        wrkMast.setModiUser(userId);
        wrkMast.setModiTime(now);
        if (!agvWrkMastService.insertByIncrease(wrkMast)) {
            throw new CoolException("保存工作档失败");
        }
        wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no",sourceLocNo).eq("barcode",barcode).orderBy("modi_time",false));
        return wrkMast;
    }
}
src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java
@@ -237,6 +237,61 @@
        if(!Cools.isEmpty(agvWrkMast)){
            throw new CoolException("当前"+agvLocMast.getBarcode()+"货架码已在工作档中");
        }
        //检索空闲接驳位,选择合适的接驳位
        AgvBasDevp devpNo = agvCommonService.getDevpNo(3, agvLocMast.getFloor());
        //生成工作档
        AgvWrkMast mast = new AgvWrkMast();
        //工作状态
        mast.setWrkSts(21L);
        //入出库类型
        mast.setIoType(109);
        mast.setIoTime(now);
        //优先级
        mast.setIoPri(300.0);
        //源站点
        mast.setSourceLocNo(agvLocMast.getLocNo());
        //目标站点
        mast.setLocNo(devpNo.getDevNo());
        //容器编码
        mast.setBarcode(agvLocMast.getBarcode());
        //容器类型
        mast.setWhsType(30);
        mast.setAppeUser(9527L);
        mast.setAppeTime(now);
        mast.setModiUser(9527L);
        mast.setModiTime(now);
        if (!agvWrkMastService.insertByIncrease(mast)) {
            throw new CoolException("保存工作档失败");
        }
        //更新目标库位状态
        updateAgvLocMast(agvLocMast,"R");
        updateAgvBasDevp(devpNo,"S",agvLocMast.getLocType2(),agvLocMast.getBarcode());
        return SUCCESS;
    }
    public ReturnT<String> autoEmptyBack3(AgvWrkMast agvWrkMast) {
        Date now = new Date();
        //检索空闲接驳位,选择合适的接驳位
        AgvLocMast locMast = agvCommonService.getLocNo(3, 1);
        //目标站点
        agvWrkMast.setLocNo(locMast.getLocNo());
        agvWrkMast.setModiUser(9527L);
        agvWrkMast.setModiTime(now);
        if (!agvWrkMastService.updateById(agvWrkMast)) {
            throw new CoolException("保存工作档失败");
        }
        //更新目标库位状态
        updateAgvLocMast(locMast,"S");
        return SUCCESS;
    }
    public ReturnT<String> autoEmptyBack2(AgvLocMast agvLocMast) {
        Date now = new Date();
        //查询工作档
        AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(agvLocMast.getBarcode());
        if(!Cools.isEmpty(agvWrkMast)){
            throw new CoolException("当前"+agvLocMast.getBarcode()+"货架码已在工作档中");
        }
        //检索库位,选择合适的库位
        AgvLocMast LocMast = agvCommonService.getLocNo(3,1);
        //生成工作档
src/main/resources/application.yml
@@ -10,8 +10,8 @@
    enabled: false
  datasource:
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    url: jdbc:sqlserver://localhost:1433;databasename=phyzasrs
#    url: jdbc:sqlserver://192.168.4.15:1433;databasename=tzskasrs
#    url: jdbc:sqlserver://127.0.0.1:1433;databasename=phyzasrs
    url: jdbc:sqlserver://192.168.4.176:1433;databasename=phyzasrs
    #url: jdbc:sqlserver://10.10.10.40:1433;databasename=tzskasrs
    username: sa
    password: sa@123