skyouc
2 天以前 d36f413965c4ef2ea35a7e0ecefd32001a1e66f8
rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
@@ -16,7 +16,6 @@
import org.apache.commons.lang3.StringUtils;
import javax.swing.*;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@@ -129,7 +128,12 @@
        LambdaQueryWrapper<LocItem> locItemQueryWrapper = new LambdaQueryWrapper<>();
        locItemQueryWrapper.eq(LocItem::getMatnrCode, matnrCode);
        locItemQueryWrapper.eq(StringUtils.isNotEmpty(splrBatch), LocItem::getBatch, splrBatch);
        locItemQueryWrapper.orderByAsc(LocItem::getCreateTime);
        //如果批次不为空,按批次先后出库
        if (StringUtils.isNotBlank(splrBatch)) {
            locItemQueryWrapper.orderByAsc(LocItem::getBatch);
        } else {
            locItemQueryWrapper.orderByAsc(LocItem::getCreateTime);
        }
        String applySql = String.format(
                "EXISTS (SELECT 1 FROM man_loc ml " +
                        "WHERE ml.use_status = '%s'" +
@@ -209,12 +213,18 @@
                                orderOutItemDto.setStaNos(maps);
                                //获取满足条件站点
                                Set<String> stationSet = deviceSites.stream().map(DeviceSite::getSite).collect(Collectors.toSet());
                                String sType = "H";
                                //获取高低站点类型
                                if (startsWithTwoChars(loc.getBarcode(), "31")) {
                                    sType = "L";
                                }
                                //已使用站点
                                Set<String> stas = stations.stream().map(BasStation::getStationName).collect(Collectors.toSet());
                                BasStationService basStationService = SpringUtils.getBean(BasStationService.class);
                                BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                                        .eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
                                        .in(BasStation::getStationName, stationSet)
//                                        .eq(BasStation::getSType, sType)
                                        .notIn(!stas.isEmpty(), BasStation::getStationName, stas)
                                        .last("LIMIT 1"));
                                stations.add(basStation);
@@ -225,7 +235,6 @@
                                orderOutItemDto.setSitesNo(basStation.getStationName());
                            }
                        }
                        list.add(orderOutItemDto);
@@ -252,4 +261,19 @@
        return list;
    }
    /**
     * 检查字符串前两个字符是否包含指定内容
     *
     * @param str    要检查的字符串
     * @param target 目标字符串(长度应为2)
     * @return 是否包含
     */
    public static boolean startsWithTwoChars(String str, String target) {
        if (str == null || target == null || target.length() != 2) {
            return false;
        }
        return str.length() >= 2 && str.substring(0, 2).equals(target);
    }
}