自动化立体仓库 - WMS系统
#
lsh
2024-07-25 a7c9e410db03f9ffd6eb8ccda9b295844302fe32
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -14,6 +14,7 @@
import com.zy.asrs.mapper.TagMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.task.handler.BareBoardHandler;
import com.zy.asrs.utils.CodeDetectionUtil;
import com.zy.asrs.utils.MatUtils;
import com.zy.asrs.utils.PostMesDataUtils;
@@ -83,6 +84,8 @@
    private LocMastService locMastService;
    @Autowired
    private WorkService workService;
    @Autowired
    private BareBoardHandler bareBoardHandler;
    @Override
    @Transactional
@@ -1069,6 +1072,8 @@
                smallContainersJar(param);
            } else if (param.getType()==3){//直供产线
                smallContainersSta(param);
            } else if (param.getType()==99){//库内供产线  //出库  测试
                smallContainersBig99(param);
            }
        } catch (Exception e){
            throw new CoolException("失败!!!原因:"+e.getMessage());
@@ -1091,8 +1096,6 @@
            throw new CoolException("参数:物料编码 matnr为空");
        }else if (Cools.isEmpty(param.getWeight())){
            throw new CoolException("参数:物料重量 wright为空");
        }else if (Cools.isEmpty(param.getColor())){
            throw new CoolException("参数:物料颜色 color为空");
        }
        Mat mat = matService.selectByMatnr(param.getMatnr());
@@ -1126,7 +1129,7 @@
        if (Cools.isEmpty(basDevp.getBarcode())){
            throw new CoolException("码垛位编号 palletizingNo="+param.getStaNo()+" 所处站点料箱码异常状态;料箱码==》为空"+basDevp.getBarcode());
        }
        if (CodeDetectionUtil.barcodeDetection(basDevp.getBarcode(),8)){
        if (!CodeDetectionUtil.barcodeDetection(basDevp.getBarcode(),8)){
            throw new CoolException("码垛位编号 palletizingNo="+param.getStaNo()+" 所处站点料箱码异常状态;料箱码:"+basDevp.getBarcode());
        }
@@ -1142,15 +1145,15 @@
        WaitPakin waitPakin = new WaitPakin();
        waitPakin.sync(mat);
//        waitPakin.setBatch(matList.getBatch());       //木箱编码  //批次  唯一值  箱号
//        waitPakin.setModel(matList.getModel());       //卷号  唯一值
        waitPakin.setBatch(param.getBatch());       //木箱编码  //批次  唯一值  箱号
        waitPakin.setModel(param.getTaskNo());       //卷号  唯一值
//        waitPakin.setBrand(param.getBoxType());     //木箱类型
        waitPakin.setZpallet(basDevp.getBarcode());   //托盘码
//        waitPakin.setOrigin(matList.getPosition()); //木箱在托盘上的位置
        waitPakin.setWeight(param.getWeight());  //净重
//        waitPakin.setVolume(matList.getRoughWeight());  //毛重
//        waitPakin.setPrice(matList.getRollExtent());   //长度
//        waitPakin.setSpecs(String.valueOf(matList.getJoint()));   //接头
        waitPakin.setSpecs(param.getOrderNo());   //单号  借用
//        waitPakin.setIoStatus("N");     // 入出状态
//        waitPakin.setAnfme(matList.getAnfme());  // 数量
        waitPakin.setColor(param.getColor());  // 颜色
@@ -1180,22 +1183,105 @@
            throw new CoolException("参数:品号 matnr为空");
        }else if (Cools.isEmpty(param.getWeight())){
            throw new CoolException("参数:物料重量 wright为空");
        }else if (Cools.isEmpty(param.getColor())){
            throw new CoolException("参数:物料颜色 color为空");
        }else if (Cools.isEmpty(param.getBatchNum())){
            throw new CoolException("参数:出库数量 batchNum为空");
        }
        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("matnr", param.getMatnr()).eq("weight", param.getWeight()).eq("color", param.getColor()));
        Mat mat = matService.selectByMatnr(param.getMatnr());
        if (Cools.isEmpty(mat)){
            throw new CoolException("品号 matnr,请先下发基础档案!!!");
        }
        if (Cools.isEmpty(mat.getUnits())){
            throw new CoolException("品号 matnr,重量范围偏移值为空!!!,请先下发基础档案!!!");
        }
        ArrayList<LocDetl> locDetlArrayList = new ArrayList<>();
        Wrapper<LocDetl> wrapper = new EntityWrapper<LocDetl>().eq("matnr", param.getMatnr()).eq("weight", param.getWeight());
        if (param.getDevNo() == 536) {
            wrapper.eq("model", param.getModel())
                    .eq("specs", param.getOrderNo());
        }
        List<LocDetl> locDetls = locDetlService.selectList(wrapper);
        if (locDetls.isEmpty()){
            locDetls = new ArrayList<LocDetl>();
        }
        if (locDetls.isEmpty()){
            throw new CoolException("未找到符合条件的物料明细:品号==》matnr:"+param.getMatnr()+";重量==》wright:"+param.getWeight()+";颜色==》color:"+param.getColor());
        for (LocDetl locDetl:locDetls){
            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetl.getLocNo()));
            if (locMast.getLocSts().equals("F")){
                if (locDetlArrayList.size()<param.getBatchNum()) {//下
                    locDetlArrayList.add(locDetl);
                }
            }
        }
        for (LocDetl locDetl : locDetls){
        if (locDetlArrayList.isEmpty()){
            throw new CoolException("未找到符合条件的物料明细:品号==》matnr:"+param.getMatnr()+";重量==》wright:"+param.getWeight());
        }
        Integer batchNum = param.getBatchNum();
        if (locDetlArrayList.size()<batchNum){//上
            Wrapper<LocDetl> locDetlWrapper = new EntityWrapper<LocDetl>().eq("matnr", param.getMatnr())
                    .lt("weight", param.getWeight() + mat.getUnits())
                    .and()
                    .gt("weight", param.getWeight())
                    .orderBy("weight", true);
            if (param.getDevNo() == 536){
                locDetlWrapper.eq("model", param.getModel())
                        .eq("specs", param.getOrderNo());
            }
            locDetls = locDetlService.selectList(locDetlWrapper);
            if (locDetls.isEmpty()){
                locDetls = new ArrayList<LocDetl>();
            }
            for (LocDetl locDetl:locDetls){
                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetl.getLocNo()));
                if (locMast.getLocSts().equals("F")){
                    if (locDetlArrayList.size()<batchNum) {//下
                        locDetlArrayList.add(locDetl);
                    }
                }
            }
        }
        if (locDetlArrayList.size()<batchNum){//下
            Wrapper<LocDetl> locDetlWrapper = new EntityWrapper<LocDetl>().eq("matnr", param.getMatnr())
                    .gt("weight", param.getWeight() - mat.getUnits())
                    .and()
                    .lt("weight", param.getWeight())
                    .orderBy("weight", false);
            if (param.getDevNo() == 536){
                locDetlWrapper.eq("model", param.getModel())
                        .eq("specs", param.getOrderNo());
            }
            locDetls = locDetlService.selectList(locDetlWrapper);
            if (locDetls.isEmpty()){
                locDetls = new ArrayList<LocDetl>();
            }
            for (LocDetl locDetl:locDetls){
                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetl.getLocNo()));
                if (locMast.getLocSts().equals("F")){
                    if (locDetlArrayList.size()<batchNum) {//下
                        locDetlArrayList.add(locDetl);
                    }
                }
            }
        }
        if (locDetlArrayList.size()<batchNum){
            throw new CoolException("库存数量:"+locDetlArrayList.size()+";小于需求数量:"+param.getBatchNum());
        }
        for (LocDetl locDetl : locDetlArrayList){
            if (batchNum <= 0){
                return;
            }
            StockOutParam stockOutParam = new StockOutParam(param,locDetl);
            workService.startupFullTakeStore(stockOutParam, userId);
            batchNum --;
        }
    }
    public void smallContainersJar(SmallCompleteParam param) {
        Long userId = 7777L;//mes
        //判断param参数
@@ -1209,10 +1295,7 @@
            throw new CoolException("参数:物料编码 matnr为空");
        }else if (Cools.isEmpty(param.getWeight())){
            throw new CoolException("参数:物料重量 wright为空");
        }else if (Cools.isEmpty(param.getColor())){
            throw new CoolException("参数:物料颜色 color为空");
        }
        Mat mat = matService.selectByMatnr(param.getMatnr());
        if (Cools.isEmpty(mat)) {
//            mat = new Mat();
@@ -1244,7 +1327,7 @@
        if (Cools.isEmpty(basDevp.getBarcode())){
            throw new CoolException("码垛位编号 palletizingNo="+param.getStaNo()+" 所处站点料箱码异常状态;料箱码==》为空"+basDevp.getBarcode());
        }
        if (CodeDetectionUtil.barcodeDetection(basDevp.getBarcode(),8)){
        if (!CodeDetectionUtil.barcodeDetection(basDevp.getBarcode(),8)){
            throw new CoolException("码垛位编号 palletizingNo="+param.getStaNo()+" 所处站点料箱码异常状态;料箱码:"+basDevp.getBarcode());
        }
@@ -1260,15 +1343,15 @@
        WaitPakin waitPakin = new WaitPakin();
        waitPakin.sync(mat);
//        waitPakin.setBatch(matList.getBatch());       //木箱编码  //批次  唯一值  箱号
//        waitPakin.setModel(matList.getModel());       //卷号  唯一值
        waitPakin.setBatch(param.getBatch());       //木箱编码  //批次  唯一值  箱号
        waitPakin.setModel(param.getTaskNo());       //卷号  唯一值
//        waitPakin.setBrand(param.getBoxType());     //木箱类型
        waitPakin.setZpallet(basDevp.getBarcode());   //托盘码
//        waitPakin.setOrigin(matList.getPosition()); //木箱在托盘上的位置
        waitPakin.setWeight(param.getWeight());  //净重
//        waitPakin.setVolume(matList.getRoughWeight());  //毛重
//        waitPakin.setPrice(matList.getRollExtent());   //长度
//        waitPakin.setSpecs(String.valueOf(matList.getJoint()));   //接头
        waitPakin.setSpecs(param.getOrderNo());   //单号  借用
//        waitPakin.setIoStatus("N");     // 入出状态
//        waitPakin.setAnfme(matList.getAnfme());  // 数量
        waitPakin.setColor(param.getColor());  // 颜色
@@ -1297,8 +1380,6 @@
            throw new CoolException("参数:物料编码 matnr为空");
        }else if (Cools.isEmpty(param.getWeight())){
            throw new CoolException("参数:物料重量 wright为空");
        }else if (Cools.isEmpty(param.getColor())){
            throw new CoolException("参数:物料颜色 color为空");
        }
        Mat mat = matService.selectByMatnr(param.getMatnr());
@@ -1321,7 +1402,7 @@
        if (Cools.isEmpty(basDevp.getBarcode())){
            throw new CoolException("码垛位编号 palletizingNo="+param.getStaNo()+" 所处站点料箱码异常状态;料箱码==》为空"+basDevp.getBarcode());
        }
        if (CodeDetectionUtil.barcodeDetection(basDevp.getBarcode(),8)){
        if (!CodeDetectionUtil.barcodeDetection(basDevp.getBarcode(),8)){
            throw new CoolException("码垛位编号 palletizingNo="+param.getStaNo()+" 所处站点料箱码异常状态;料箱码:"+basDevp.getBarcode());
        }
@@ -1357,6 +1438,9 @@
        wrkDetl.setWrkNo(wrkMast.getWrkNo());
        wrkDetl.setIoTime(wrkMast.getIoTime());
        wrkDetl.setMatnr(param.getMatnr());
        wrkDetl.setModel(param.getTaskNo());
        wrkDetl.setBatch(param.getBatch());
        wrkDetl.setSpecs(param.getOrderNo());
        wrkDetl.setAnfme(1D);
        wrkDetl.setWeight(param.getWeight());
        wrkDetl.setBarcode(basDevp.getBarcode());
@@ -1366,7 +1450,48 @@
        if (!wrkDetlService.insert(wrkDetl)) {
            throw new CoolException("保存工作明细失败==》小料箱直供产线任务明细生成");
        }
    }
    public Integer getStaEnd(Integer staNo){
        switch (staNo){
            case 118:
            case 119:
                return 131;
            case 120:
            case 121:
                return 135;
            default:
                return staNo;
        }
    }
    /*
     * 出库
     * 直供产线
     * */
    public void smallContainersBig99(SmallCompleteParam param) {//直供产线//出库
        Long userId = 7777L;//mes
        //判断param参数
        if (Cools.isEmpty(param.getType())){
            throw new CoolException("参数:类型 type为空");
//        }else if (Cools.isEmpty(param.getStaNo())){
//            throw new CoolException("参数:投料点位 staNo为空");
        }else if (Cools.isEmpty(param.getDevNo())){
            throw new CoolException("参数:产线点位 devNo为空");
        }else if (Cools.isEmpty(param.getMatnr())){
            throw new CoolException("参数:品号 matnr为空");
        }else if (Cools.isEmpty(param.getWeight())){
            throw new CoolException("参数:物料重量 wright为空");
        }else if (Cools.isEmpty(param.getBatchNum())){
            throw new CoolException("参数:出库数量 batchNum为空");
        }
        Integer devNo = param.getDevNo();
        Integer batchNum = param.getBatchNum();
        for (int i =0;i<batchNum;i++){
            bareBoardHandler.startYx(devNo,99);
        }
    }
    /*...........................亳州煜星..............以上.............亳州煜星...........................*/