自动化立体仓库 - WMS系统
1
zhang
7 天以前 5dff87c18f48e0a14440d1225924d35f8de7b00e
src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java
@@ -1,6 +1,5 @@
package com.zy.asrs.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
@@ -8,12 +7,16 @@
import com.core.common.Cools;
import com.core.common.SnowflakeIdWorker;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.constant.AsrsConstants;
import com.zy.asrs.entity.AgvLocDetl;
import com.zy.asrs.entity.AgvLocMast;
import com.zy.asrs.entity.AgvWrkDetl;
import com.zy.asrs.mapper.AgvLocDetlMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.Utils;
import com.zy.common.model.LocDto;
import com.zy.common.model.TaskDto;
import com.zy.system.service.ConfigService;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.DataFormatter;
@@ -49,20 +52,26 @@
    private SnowflakeIdWorker snowflakeIdWorker;
    @Autowired
    private FlowLogService flowLogService;
    @Autowired
    private ConfigService configService;
    public void addLocDetlInfo(String locNo, int taskCode) {
        Date now = new Date();
        List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", taskCode));
        long flowId = snowflakeIdWorker.nextId();
        agvWrkDetls.stream().map(agvWrkDetl -> {
            AgvLocDetl agvLocDetl = new AgvLocDetl();
            //log.info("agvWrkDetl: " + agvLocDetl.getBarcode());
            BeanUtils.copyProperties(agvWrkDetl, agvLocDetl);
            agvLocDetl.setLocNo(locNo);
            //log.info("zc添加库存日志:{}", JSON.toJSON(agvLocDetl));
            this.insert(agvLocDetl);
            // 流水 -- 新增订单明细
            OrderDetl orderDetl = orderDetlService.selectItem(agvWrkDetl.getOrderNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getBatch(), agvWrkDetl.getThreeCode());
            AgvLocDetl agvLocDetl = this.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo).eq("matnr", agvWrkDetl.getMatnr()).eq("three_code", agvWrkDetl.getThreeCode()));
            if (agvLocDetl != null) {
                this.updateAnfme(agvLocDetl.getAnfme() + agvWrkDetl.getAnfme(), agvLocDetl.getLocNo(), agvLocDetl.getMatnr(), agvLocDetl.getBatch(), agvLocDetl.getThreeCode(), agvLocDetl.getDeadTime());
            } else {
                agvLocDetl = new AgvLocDetl();
                //log.info("agvWrkDetl: " + agvLocDetl.getBarcode());
                BeanUtils.copyProperties(agvWrkDetl, agvLocDetl);
                agvLocDetl.setLocNo(locNo);
                //log.info("zc添加库存日志:{}", JSON.toJSON(agvLocDetl));
                this.insert(agvLocDetl);
                // 流水 -- 新增订单明细
                //OrderDetl orderDetl = orderDetlService.selectItem(agvWrkDetl.getOrderNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getBatch(), agvWrkDetl.getThreeCode());
//            FlowLog flowLog = new FlowLog();
//            flowLog.setFid(String.valueOf(flowId));
//            flowLog.setSpare2(String.valueOf(taskCode));
@@ -88,6 +97,7 @@
//            if (!flowLogService.insert(flowLog)) {
//                throw new CoolException("同步半成品调拨单流水记录失败");
//            }
            }
            return agvLocDetl;
        }).collect(Collectors.toList());
@@ -97,11 +107,27 @@
        //根据物料号和批次找到对应的库存,并且按照修改时间排序
        Wrapper<AgvLocDetl> wrapper = new EntityWrapper<AgvLocDetl>().eq("matnr", matnr).orderBy("modi_time");
        if (type != null) {
            wrapper.notLike("loc_no", "F1");
            if (type.equals(AsrsConstants.ERCHANG)) {
                wrapper.notLike("loc_no", "F3");
            } else {
                boolean flag = false;
                for (String s : configService.getMatCode()) {
                    if (matnr.startsWith(s)) {
                        flag = true;
                    }
                }
                if (flag) {
                    //wrapper.notLike("loc_no", "F3");
                    wrapper.notLike("loc_no", "F1");
                } else {
                    wrapper.notLike("loc_no", "F1");
                }
            }
        }
        wapperSetCondition(wrapper, "batch", batch);
        //一直有PE带批次字段导致,无法出库,就注释掉
        //wapperSetCondition(wrapper, "batch", batch);
        wapperSetCondition(wrapper, "three_code", csocode);
        wapperSetCondition(wrapper, "dead_time", isoseq);
        //wapperSetCondition(wrapper, "dead_time", isoseq);
        if ("JG".equals(orderNo.substring(0, 2))) {
            wapperSetCondition(wrapper, "process_sts", "1");
@@ -134,7 +160,39 @@
                //当前库位所处楼层
                int floor = Integer.parseInt(agvLocDetl.getLocNo().split("F")[1]);
                //locDto.setAgvStaNos(queryAgvStaNosByFloor(floor));
                locDto.setAgvStaNos(agvBasDevpService.selectCacheShelvesStationCodeByLocType(agvLocMast.getLocType1(), floor));
                //四期
                //locDto.setAgvStaNos(agvBasDevpService.selectCacheShelvesStationCodeByLocType(agvLocMast.getLocType1(), floor));
                List<String> strings = agvBasDevpService.selectCacheShelvesStationCodeByLocType(agvLocMast.getLocType1());
                List<String> agvStaNos = new ArrayList<>();
                if (agvLocDetl.getLocNo().contains("01F1")) {
                    for (String string : strings) {
                        if (string.contains("F1") || string.contains("F4")) {
                            agvStaNos.add(string);
                        }
                    }
                } else if (agvLocDetl.getLocNo().contains("02F1")) {
                    for (String string : strings) {
                        if (string.contains("F1") || string.contains("F4")) {
                            agvStaNos.add(string);
                        }
                    }
                } else if (agvLocDetl.getLocNo().contains("F2")) {
                    for (String string : strings) {
                        if (string.contains("F2") || string.contains("F4")) {
                            agvStaNos.add(string);
                        }
                    }
                } else if (agvLocDetl.getLocNo().contains("F3")) {
                    for (String string : strings) {
                        if (string.contains("F3")) {
                            agvStaNos.add(string);
                        }
                    }
                } else {
                    agvStaNos = strings;
                }
                locDto.setAgvStaNos(agvStaNos);
                locDtoList.add(locDto);
                issued -= anfme;
@@ -145,11 +203,16 @@
    }
    /*
    更新库存明细
     */
    public void updateStock(String sourceLoc, String targetLoc) {
        this.baseMapper.updateStock(sourceLoc, targetLoc);
    public void updateStock(String sourceLoc, String targetLoc, Long userId) {
        if (Cools.isEmpty(userId)) {
            this.baseMapper.updateStock(sourceLoc, targetLoc);
        } else {
            this.baseMapper.updateStock2(sourceLoc, targetLoc, userId);
        }
    }
    public Page<AgvLocDetl> getStockStatis(Page<AgvLocDetl> page) {
@@ -164,8 +227,19 @@
    }
    @Override
    public Double getSumAnfme2(String matnr, String threeCode) {
        return this.baseMapper.selectSumAnfmeByMatnr2(matnr, threeCode);
    }
    @Override
    public AgvLocDetl selectItem(String locNo, String matnr, String batch, String csocode, String isoCode) {
        return this.baseMapper.selectItemByOrderNo(locNo, matnr, batch, csocode, isoCode);
    }
    @Override
    public List<AgvLocDetl> selectItem2(String locNo, String matnr, String batch, String csocode, String isoCode) {
        return this.baseMapper.selectItemByOrderNo2(locNo, matnr, batch, csocode, isoCode);
    }
    @Override
@@ -179,8 +253,18 @@
    }
    @Override
    public Double getSumAnfmeProcessed2(String matnr, String threeCode) {
        return this.baseMapper.selectSumAnfmeByMatnrProcessed2(matnr, threeCode);
    }
    @Override
    public Double getSumAnfmeDb(String matnr, String threeCode, Integer floor) {
        return this.baseMapper.selectSumAnfmeByMatnr2(matnr, threeCode, floor);
        return this.baseMapper.selectSumAnfmeByMatnr22(matnr, threeCode, floor);
    }
    @Override
    public Double getSumAnfmeDb2(String matnr, String threeCode, Integer floor) {
        return this.baseMapper.selectSumAnfmeByMatnr3(matnr, threeCode, floor);
    }
    @Override