自动化立体仓库 - WMS系统
skyouc
1 天以前 ddaf128bd75d0d46f1c70986bc6690a42c8e6d65
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -605,9 +605,6 @@
        if (Objects.isNull(container)) {
            throw new CoolException("数据错误:容器码不存在!!");
        }
        // if (param.getBarcode().length() != 8) {
        // throw new CoolException("条码长度不是8位===>>" + param.getBarcode());
        // }
        if (Objects.isNull(param.getType())) {
            param.setType("0");
@@ -689,7 +686,10 @@
                OrderDetlPakin detls = orderDetlPakinService.selectOne(new EntityWrapper<OrderDetlPakin>()
                        .eq("order_id", order.getId())
                        .eq("matnr", elem.getMatnr()));
                if (Objects.isNull(elem.getBoxType1())) {
                    throw new CoolException("格层编码不能为空!!");
                }
                detls.setBoxType1(elem.getBoxType1());
                if (Objects.isNull(detls)) {
                    throw new CoolException("数据错误:单据明细不存在!!");
                }
@@ -699,14 +699,14 @@
                }
                OrderInAndOutUtil.increaseWorkQty(Boolean.TRUE, order.getId(), elem.getMatnr(), elem.getBatch(),
                        elem.getBrand(), elem.getStandby1(), elem.getStandby2(), elem.getStandby3(),
                        elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme());
                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(),
                        "1", elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme());
                DetlDto detlDto = new DetlDto(order.getOrderNo(), elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(),
                        elem.getStandby2(), elem.getStandby3(),
                        elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme(),
                        elem.getThreeCode());
                detlDto.setOrderId(order.getId());
                detlDto.setOrderNo(order.getOrderNo());
                if (DetlDto.has(detlDtos, detlDto)) {
                if (DetlDto.hasOrder(detlDtos, detlDto)) {
                    DetlDto one = DetlDto.findDto(detlDtos, detlDto);
                    assert one != null;
                    one.setAnfme(one.getAnfme() + detlDto.getAnfme());
@@ -762,6 +762,7 @@
                waitPakin.setThreeCode(detlDto.getThreeCode());
                waitPakin.setSuppCode(detlDto.getStandby1());
                waitPakin.setStandby1(detlDto.getStandby1());
                waitPakin.setBoxType1(detlDto.getBoxType1());
                waitPakin.setIoStatus("N"); // 入出状态
                waitPakin.setAnfme(detlDto.getAnfme()); // 数量
                waitPakin.setStatus("Y"); // 状态
@@ -991,7 +992,7 @@
                try {
                    response = new HttpHandler.Builder()
                            .setUri(MesConstant.URL)
                            .setPath(MesConstant.PACK_DOWN_URL)
                            .setPath(MesConstant.IN_DISPATCH_RESULT)
                            .setJson(JSON.toJSONString(mesCombParam))
                            .build()
                            .doPost();
@@ -999,11 +1000,11 @@
                    if (jsonObject.getInteger("code").equals(200)) {
                        success = true;
                    } else if (jsonObject.getInteger("code").equals(500)) {
                        log.error("请求接口失败!!!url:{};request:{};response:{}", MesConstant.URL + MesConstant.PACK_DOWN_URL,
                        log.error("请求接口失败!!!url:{};request:{};response:{}", MesConstant.URL + MesConstant.IN_DISPATCH_RESULT,
                                JSON.toJSONString(mesCombParam), response);
                        throw new CoolException(jsonObject.getString("msg"));
                    } else {
                        log.error("请求接口失败!!!url:{};request:{};response:{}", MesConstant.URL + MesConstant.PACK_DOWN_URL,
                        log.error("请求接口失败!!!url:{};request:{};response:{}", MesConstant.URL + MesConstant.IN_DISPATCH_RESULT,
                                JSON.toJSONString(mesCombParam), response);
                        throw new CoolException("上报mes系统失败");
                    }
@@ -1015,7 +1016,7 @@
                        // 保存接口日志
                        apiLogService.save(
                                "打包下线帮托上报",
                                MesConstant.URL + MesConstant.PACK_DOWN_URL,
                                MesConstant.URL + MesConstant.IN_DISPATCH_RESULT,
                                null,
                                "127.0.0.1",
                                JSON.toJSONString(mesCombParam),
@@ -1066,7 +1067,7 @@
                // }
                OrderInAndOutUtil.increaseWorkQty(Boolean.TRUE, order.getId(), detlDto.getMatnr(), detlDto.getBatch(),
                        detlDto.getBrand(), detlDto.getStandby1(), detlDto.getStandby2(), detlDto.getStandby3(),
                        detlDto.getBoxType1(), detlDto.getBoxType2(), detlDto.getBoxType3(), detlDto.getAnfme());
                        "1", detlDto.getBoxType2(), detlDto.getBoxType3(), detlDto.getAnfme());
                // 保存入库通知档
                Mat mat = matService.selectByMatnr(detlDto.getMatnr());
                if (Cools.isEmpty(mat)) {
@@ -1179,7 +1180,7 @@
    @Override
    @Transactional
    public void stockOut(OrderDetl orderDetl, BasDevp staNo, LocDetl locDetl,
            Double curOutQty, Integer ioType, Long userId, Date now) {
                         Double curOutQty, Integer ioType, Long userId, Date now) {
        // 获取库位
        LocMast locMast = locMastService.selectById(locDetl.getLocNo());
        // 获取路径
@@ -1810,10 +1811,11 @@
    /**
     * SO/EO 区组托
     * @author Ryan
     * @date 2025/12/18 15:19
     *
     * @param params
     * @return com.core.common.R
     * @author Ryan
     * @date 2025/12/18 15:19
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -1866,7 +1868,6 @@
                if (!basStationDetlService.insert(basStationDetl)) {
                    throw new CoolException("插入明细失败");
                }
            } else {
                BigDecimal anfme = new BigDecimal(basStationDetl.getAnfme().toString()).add(combMat.getWorkQty());
                basStationDetl.setAnfme(anfme.doubleValue());
@@ -1924,6 +1925,10 @@
                && wrkMast.getIoType().equals(TaskIOType.PICK_OUT.type)) {
            throw new CoolException("人物类型错误");
        }
        wrkDetlService.selectList(new EntityWrapper<WrkDetl>()
                .eq(!Objects.isNull(params.getMatnr()), "matnr", params.getMatnr())
                .eq("wrk_no", wrkMast.getWrkNo()));
        List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
        if (Cools.isEmpty(wrkDetls)) {
@@ -2053,7 +2058,6 @@
                throw new CoolException("保存工作明细失败");
            }
        });
//        // 更新入库通知档 ioStatus ===>> Y
@@ -2195,8 +2199,14 @@
                    .eq("loc_sts", LocStsType.LOC_STS_TYPE_D.type)
                    .orderAsc(Arrays.asList("row1", "bay1", "lev1"))
                    .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
            if (Objects.isNull(locMast)) {
                throw new CoolException("未查询到可用的空板信息!!");
            }
            CrnTaskDetlDTO crnTaskDetlDTO = new CrnTaskDetlDTO().setLocNo(locMast.getLocNo()).setLocDetlList(locDetls);
            locMasts.add(crnTaskDetlDTO);
            // 空板出库
            generateTask(locMasts, TaskIOType.MERGE_OUT.type, basDevp, userId, station);
        }
@@ -2222,7 +2232,7 @@
            WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_loc_no", locMast.getLocNo()));
            // 生成工作号
            int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
            if (Cools.isEmpty(wrkMast1)){
            if (Cools.isEmpty(wrkMast1)) {
                Integer outSta = devp.getDevNo();
                // 获取路径
                StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta);
@@ -2254,14 +2264,13 @@
                if (!wrkMastService.insert(wrkMast)) {
                    throw new CoolException("保存工作档失败,出库库位号:" + locMast.getLocNo());
                }
            }else {
            } else {
                workNo = wrkMast1.getWrkNo();
            }
            // 生成工作档明细
            for (LocDetl detlDto : crnTaskDetlDTO.getLocDetlList()) {
                WrkDetl wrkDetl = new WrkDetl();
                BeanUtils.copyProperties(detlDto, wrkDetl);
                wrkDetl.setOrderNo(""); // 手动出库不需要带出库存中的单据编号
                wrkDetl.setWrkNo(workNo);
                wrkDetl.setIoTime(now);
                wrkDetl.setZpallet(null);
@@ -2534,10 +2543,11 @@
    /**
     * 呼叫AGV空台车返回
     * @author Ryan
     * @date 2025/9/24
     *
     * @param callAgvBackParam
     * @return com.core.common.R
     * @author Ryan
     * @date 2025/9/24
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -2548,7 +2558,7 @@
        // 按当前查找库位顺序,查到一个后,不再往下查询
        LocCache locCache = findPriorityLocCache();
        if (Objects.isNull(locCache)) {
            return R.error("未查询到可用库位");
        }