自动化立体仓库 - WMS系统
Junjie
2023-05-31 e1ab30550f05d173d71c24998bc538d064fa9725
搜索库位,优先找偏外侧
2个文件已修改
67 ■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
@@ -4,19 +4,23 @@
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.core.common.Cools;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.result.StockVo;
import com.zy.asrs.mapper.LocDetlMapper;
import com.zy.asrs.service.LocDetlService;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.utils.Utils;
import com.zy.common.model.QueryStockPreDo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
@Service("locDetlService")
public class LocDetlServiceImpl extends ServiceImpl<LocDetlMapper, LocDetl> implements LocDetlService {
    @Autowired
    private LocMastService locMastService;
    @Override
    public Page<LocDetl> getStockOut(Page<LocDetl> page) {
@@ -186,7 +190,46 @@
    @Override
    public List<LocDetl> findSingleAreaByMatnr(String matnr) {
        return this.baseMapper.findAreaByMatnr(matnr, 1);
        ArrayList<LocDetl> list = new ArrayList<>();
        List<LocDetl> locDetls = this.baseMapper.findAreaByMatnr(matnr, 1);
        //将查出来的数据进行排序。1-3,8-11,15-18row需要颠倒顺序
        for (LocDetl locDetl : locDetls) {
            if (list.contains(locDetl)) {
                continue;
            }
            String locNo = locDetl.getLocNo();
            List<String> outerSingleLoc = Utils.getGroupLoc(locNo);
            List<LocMast> locMasts = locMastService.selectByLocNos(outerSingleLoc);
            int locRow = Utils.getRow(locNo);
            if (locRow >= 1 && locRow <= 3
                    || locRow >= 8 && locRow <= 11
                    || locRow >= 15 && locRow <= 18) {
                Collections.reverse(locMasts);
            }
            for (LocMast locMast : locMasts) {
                if (!locMast.getLocSts().equals("F")) {
                    continue;
                }
                if (locMast.getLocType2() != 1) {
                    continue;
                }
                for (LocDetl detl : this.baseMapper.selectByLocNo(locMast.getLocNo())) {
                    if (detl.getMatnr().equals(locDetl.getMatnr())) {
                        if (!list.contains(detl)) {
                            list.add(detl);
                        }
                    }
                }
            }
        }
        return list;
    }
    @Override
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -245,7 +245,14 @@
                    if (locDetls1.size() == 0) {//内侧库位没有相同的物料,跳过
                        continue;
                    }
                    int locRow = Utils.getRow(locDetl0.getLocNo());
                    switch (locRow) {
                        case 3:
                        case 11:
                        case 18:
                            Collections.reverse(locDetls1);
                            break;
                    }
                    for (LocDetl detl : locDetls1) {
                        double lastCount = locDetl.getCount() - useCount;//剩余所需数量
                        double realCount = 0;//实际提供数量
@@ -302,7 +309,7 @@
                double realCount = 0;//实际提供数量
                if (locDetl0.getAnfme() >= lastCount) {//实际数量大于所需数量,按所需数量提供
                    realCount = lastCount;
                }else {
                } else {
                    //实际小于所需数量,按实际数量提供
                    realCount = locDetl0.getAnfme();
                }
@@ -314,6 +321,9 @@
                    return locDetlList;
                }
            }
            //库存数量不满足
            throw new CoolException("单品区域只有" + useCount + "个货物");
        }
        return null;