自动化立体仓库 - WMS系统
#
zwl
昨天 8ce4dcbd701b40165b0dbf365f667932cf2a8916
src/main/java/com/zy/common/web/WcsController.java
@@ -71,97 +71,46 @@
        }
        List<WaitPakin> waitPakins = null;
        if (param.getIoType() == 1) {
            //处理托盘码
            //3S19000677895,M22003772,3  ,KP, 0A2030  ,0A2030202306050023
            //3S箱码号      ,端子物料号 ,数量,单位,供应商编号,供应商批次号
            //数量和重量转换出来的是否差不多
            //weight 为 43.39  去皮2.35  = 41.05
            //托盘码例子  845000820308,M11000787,1000,MT,0A1263,0A126320260120
            //换算需要41.05*24.36约等于1000
            if (Cools.isEmpty(param.getBarcode())) {
                return R.error("条码不能为空");
            }
            String[] split = param.getBarcode().split(",");
            String barcode = split[0];
            String matnr = split[1];
            Double weight = Double.valueOf(split[2]);
            String unit = split[3];
            String manu = split[4];
            String batch = split[5];
            String threeCode = param.getBarcode();
            param.setBarcode(barcode);
            //实际称重数量
            Double m = param.getWeight() -2.35;
            Mat mat = matService.selectByMatnr(matnr);
            if(mat==null){
                log.info("没有找到该物料档案--"+matnr+"组托时自动新增物料,默认24.36KG/M");
                mat = new Mat();
                mat.setTagId(1L);
                mat.setLocType(1L);
                mat.setMatnr(matnr);
                mat.setUnit(unit);
                mat.setManu(manu);
                mat.setMaktx(matnr);
                mat.setVolume(24.36);
                matService.insert(mat);
            }else {
                //暂定
            }
            m=m*mat.getVolume();
            //Double val = Math.round((m - matnr.getSafeQty()) * 10000) / 10000.0;
            Config config = configService.selectConfigByCode("SimulationInbound");
            if (config != null && config.getValue().equals("Y")) {
                WaitPakin waitPakin1 = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()));
                if (Cools.isEmpty(waitPakin1)) {
                    WaitPakin waitPakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("io_status", "N"));
                    if (waitPakin != null) {
                        waitPakinService.updateForSet("zpallet = '" + param.getBarcode() + "'", new EntityWrapper<WaitPakin>().eq("zpallet", waitPakin.getZpallet()));
                    }
                }
            }
            waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()));
            if (Cools.isEmpty(waitPakins)) {
                WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode());
                if (wrkMast != null && wrkMast.getIoType() == 103) {
                    return R.parse(CodeRes.PICK_600);
                }
                WaitPakin waitPakin = new WaitPakin();
                waitPakin.sync(mat);
                waitPakin.setZpallet(param.getBarcode());
                waitPakin.setAnfme(m);
                waitPakin.setThreeCode(threeCode);
                waitPakinService.insert(waitPakin);
            }else {
                for(WaitPakin waitPakin : waitPakins){
                    waitPakin.setAnfme(m);
                    waitPakinService.update(waitPakin,new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()));
                }
            }
            //实际长度
            WaitPakin waitPakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()));
            if (Cools.isEmpty(waitPakin)) {
                return R.error(CodeRes.NO_COMB_700);
            }
            boolean flag = false;
            if(Cools.isEmpty(waitPakin.getBeBatch())||waitPakin.getBeBatch()!=1){
                flag = true;
            }
            if (flag && (weight - m < -2.0 || weight - m > 2.0)) {
                return R.error("二维码="+threeCode+"的物料实际称重转换成的米数和物料标签提供的米数相差较大需要退回或者标记后才能入库!");
            }
            int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode()));
            int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode()));
            if (countLoc > 0 || countWrk > 0) {
                return R.error(CodeRes.EXIST_500);
            }
            if (Cools.isEmpty(waitPakins)) {
                WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode());
                if (wrkMast != null && wrkMast.getIoType() == 103) {
                    return R.parse(CodeRes.PICK_600);
                }
                Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "SimulationWarehousing").eq("value", "Y"));
                if (!Cools.isEmpty(config)) {
                    waitPakins = waitPakinService.selectList(
                            new EntityWrapper<WaitPakin>()
                                    .eq("io_status", "N"));
                    if (Cools.isEmpty(waitPakins)) {
                        return R.parse(CodeRes.NO_COMB_700);
                    }
                    String barcode = "";
                    for (WaitPakin waitPakin : waitPakins) {
                        barcode = waitPakin.getZpallet();
                        break;
                    }
                    if (!Cools.isEmpty(barcode)){
                        waitPakinService.updateForSet("zpallet='"+param.getBarcode()+"'",new EntityWrapper<WaitPakin>().eq("zpallet",barcode));
                    }
                }else{
                    return R.parse(CodeRes.NO_COMB_700);
                }
            }
        }
        if (Cools.isEmpty(param.getLocType1())){
            return R.error("高低检测信号不能为空");
        }
        // 源站点状态检测
        BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true);
        sourceStaNo.setLocType1(param.getLocType1());