zjj
7 天以前 9f05f812058b63e81b4567e730ee1ec2f9e551e4
#移库找库位优化
2个文件已修改
36 ■■■■ 已修改文件
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/TaskInParam.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/params/TaskInParam.java
@@ -29,6 +29,8 @@
//    private String locType;
    private Long user;
    private String orgLoc;
//    private Integer locType2; //库位类型
//    private Integer locType3; //库位类型
}
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
@@ -361,7 +361,7 @@
        //根据立库类型获取获取库位
        if (warehouseArea.getType().equals(WarehType.WAREHOUSE_TYPE_CRN.val)) {
            //堆垛机
            dto = getLocNoCrn(deviceBind, warehouseArea.getId(), param.getSourceStaNo(), matnr, batch, locTypeDto, 0, param.getIoType());
            dto = getLocNoCrn(param.getOrgLoc(),deviceBind, warehouseArea.getId(), param.getSourceStaNo(), matnr, batch, locTypeDto, 0, param.getIoType());
        } else if (warehouseArea.getType().equals(WarehType.WAREHOUSE_TYPE_FOUR_DIRECTIONS.val)) {
            //四向库
@@ -372,7 +372,7 @@
        return dto;
    }
    private InTaskMsgDto getLocNoCrn(DeviceBind deviceBind, Long area, Integer sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) {
    private InTaskMsgDto getLocNoCrn(String orgLoc,DeviceBind deviceBind, Long area, Integer sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) {
        if (Cools.isEmpty(matnr)) {  //物料号
            matnr = "";
        }
@@ -409,7 +409,7 @@
            throw new CoolException("无可用堆垛机");
        }
        //入库靠近摆放
        if (ioType == 1 && deviceBind.getBeSimilar().equals("1") && !Cools.isEmpty(matnr)) {
        if (ioType == 1 && deviceBind.getBeSimilar().equals("1") && !Cools.isEmpty(matnr) && Cools.isEmpty(orgLoc)) {
            if (nearRow != curRow) {
                List<LocItem> locItems = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getMatnrCode, matnr));
                for (LocItem locItem : locItems) {
@@ -484,6 +484,10 @@
                    .orderByAsc(Loc::getLev)
                    .orderByAsc(Loc::getCol)
            );
            Loc orgMoveLoc = null;
            if (!Cools.isEmpty(orgLoc)) {
                orgMoveLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, orgLoc));
            }
            for (Loc locMast1 : locMasts) {
                if (!LocUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
                    continue;
@@ -496,6 +500,11 @@
                            .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
                            .eq(Loc::getAreaId, area)
                    );
                    if (null != orgMoveLoc){
                        if (!locMast2.getChannel().equals(orgMoveLoc.getChannel())) {
                            break;
                        }
                    }
                    if (!Cools.isEmpty(locMast2)) {
                        loc = locMast2;
                        break;
@@ -516,6 +525,11 @@
                                .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
                                .eq(Loc::getAreaId, area)
                        );
                        if (null != orgMoveLoc){
                            if (!locMast2.getChannel().equals(orgMoveLoc.getChannel())) {
                                break;
                            }
                        }
                        if (!Cools.isEmpty(locMast2)) {
                            loc = locMast2;
                            break;
@@ -535,6 +549,11 @@
                                .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
                                .eq(Loc::getAreaId, area)
                        );
                        if (null != orgMoveLoc){
                            if (!locMast2.getChannel().equals(orgMoveLoc.getChannel())) {
                                break;
                            }
                        }
                        if (!Cools.isEmpty(locMast2)) {
                            loc = locMast2;
                            break;
@@ -544,6 +563,11 @@
                                    .in(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_D.type, LocStsType.LOC_STS_TYPE_D.type)
                                    .eq(Loc::getAreaId, area)
                            );
                            if (null != orgMoveLoc){
                                if (!locMast2.getChannel().equals(orgMoveLoc.getChannel())) {
                                    break;
                                }
                            }
                            if (!Cools.isEmpty(locMast2)) {
                                loc = locMast1;
                                break;
@@ -573,14 +597,14 @@
            // 当前巷道无空库位时,递归调整至下一巷道,检索全部巷道无果后,跳出递归
            if (times < rowCount * 2) {
                times = times + 1;
                return getLocNoCrn(deviceBind, area, sourceStaNo, matnr, batch, locTypeDto, times, ioType);
                return getLocNoCrn(orgLoc,deviceBind, area, sourceStaNo, matnr, batch, locTypeDto, times, ioType);
            }
            // 2.库位当前所属尺寸无空库位时,调整尺寸参数,向上兼容检索库位
            if (locTypeDto.getLocType1() < 3) {
                int i = locTypeDto.getLocType1() + 1;
                locTypeDto.setLocType1(i);
                return getLocNoCrn(deviceBind, area, sourceStaNo, matnr, batch, locTypeDto, 0, ioType);
                return getLocNoCrn(orgLoc,deviceBind, area, sourceStaNo, matnr, batch, locTypeDto, 0, ioType);
            }
            throw new CoolException("没有空库位");
        }