自动化立体仓库 - WMS系统
skyouc
6 小时以前 8896a0841940bac10c17b9a02f8d1cd76dd52084
出库查询及任务档流程优化
5个文件已修改
159 ■■■■■ 已修改文件
src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/MatExcelListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/OrderDetlPakoutMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java
@@ -49,10 +49,11 @@
    /**
     * 通知WCS锁定库位,及禁止当前库位的一切操作
     * @author Ryan
     * @date 2026/1/10 11:18
     *
     * @param params
     * @return com.core.common.R
     * @author Ryan
     * @date 2026/1/10 11:18
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -76,10 +77,11 @@
    /**
     * 余料回库 (搬运余料回库)
     * @author Ryan
     * @date 2026/1/10 13:19
     *
     * @param params
     * @return com.core.common.R
     * @author Ryan
     * @date 2026/1/10 13:19
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -92,9 +94,9 @@
//           throw new CoolException("配对任务编码错误,请检查后重新上传!!");
//       }
        WrkMast mast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", params.getWrkNo()));
       if (Objects.isNull(mast)) {
           throw new CoolException("任务不存在!!");
       }
        if (Objects.isNull(mast)) {
            throw new CoolException("任务不存在!!");
        }
//       if (!mast.getWrkSts().equals(103L)) {
//           throw new CoolException("当前任务并非余料出库任务!!");
//       }
@@ -107,15 +109,16 @@
//       }
        workService.backLocOperation(mast.getWrkNo() + "", mast.getAppeUser());
       return R.ok("接收成功,执行回库中...");
        return R.ok("接收成功,执行回库中...");
    }
    /**
     * 下发任务至WCS
     * @author Ryan
     * @date 2026/1/10 13:58
     *
     * @param params
     * @return com.core.common.R
     * @author Ryan
     * @date 2026/1/10 13:58
     */
    @Override
    public R pubWrkToWcs(WorkTaskParams params) {
@@ -134,7 +137,7 @@
        }
        String response;
        try {
            response =  new HttpHandler.Builder()
            response = new HttpHandler.Builder()
                    .setUri(MesConstant.URL)
                    .setPath(url)
                    .setJson(JSON.toJSONString(params))
@@ -154,9 +157,10 @@
    /**
     * 上报锁定/释放库位信息
     *
     * @param locs
     * @author Ryan
     * @date 2026/1/10 12:50
     * @param locs
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -169,17 +173,17 @@
        }
        String response;
        try {
          response =  new HttpHandler.Builder()
            .setUri(MesConstant.URL)
            .setPath(url)
            .setJson(JSON.toJSONString(locs))
            .build()
            .doPost();
          R result = JSON.parseObject(response, R.class);
            response = new HttpHandler.Builder()
                    .setUri(MesConstant.URL)
                    .setPath(url)
                    .setJson(JSON.toJSONString(locs))
                    .build()
                    .doPost();
            R result = JSON.parseObject(response, R.class);
          if (result.get("code").equals("200")) {
            if (result.get("code").equals("200")) {
                //TODO 上报是否成功
          }
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
@@ -188,10 +192,11 @@
    /**
     * 堆垛机执行状态上报
     * @author Ryan
     * @date 2026/1/10 16:30
     *
     * @param params
     * @return com.core.common.R
     * @author Ryan
     * @date 2026/1/10 16:30
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -206,14 +211,14 @@
        if (Objects.isNull(mast)) {
            throw new CoolException("任务档不存在!!");
        }
        if ( params.getNotifyType().equals("task")) {
        if (params.getNotifyType().equals("task")) {
            //任务
            if (params.getMsgType().equals("task_complete")) {
                mast.setWrkSts(4L);
                if (!wrkMastService.updateById(mast)) {
                    throw new CoolException("任务状态修改失败!!");
                }
            } else if (params.getMsgType().equals("task_cancel")){
            } else if (params.getMsgType().equals("task_cancel")) {
            }
        } else if (params.getNotifyType().equals("weight")) {
@@ -257,19 +262,40 @@
                        throw new CoolException("物料基础信息不存在!!");
                    }
                    Double val = Math.round((params.getWeight() - matnr.getSafeQty()) * 10000) / 10000.0;
                    if (val.compareTo(0.0) > 0) {
                        //余料长度
                        wrkDetl.setRealQty(val * matnr.getVolume());
                    } else {
                        //空板
                        wrkDetl.setRealQty(0.0);
                    }
                    Double realQty = val * matnr.getVolume();
//                    if (val.compareTo(0.0) > 0) {
//                        //余料长度
//                        wrkDetl.setRealQty(realQty);
//                    } else {
//                        //空板
//                        wrkDetl.setRealQty(0.0);
//                    }
                    wrkDetl.setAnfme(realQty);
                    wrkDetl.setWeight(params.getWeight());
                    if (!wrkDetlService.update(wrkDetl, new EntityWrapper<WrkDetl>().eq("wrk_no", mast.getWrkNo()).eq("matnr", wrkDetl.getMatnr()).eq("barcode", wrkDetl.getBarcode()))) {
                        throw new CoolException("任务档明细修改失败!!");
                    }
                    // 更新原出库单
                    int indexOf = mast.getWrkCode().indexOf("-1");
                    if (indexOf != -1) {
                        String wrkNo = mast.getWrkCode().substring(0, indexOf);
                        WrkMast orgWrk = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", wrkNo));
                        if (Objects.isNull(orgWrk)) {
                            throw new CoolException("数据错误,主任务档不存在或已删除!!");
                        }
                        WrkDetl detl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo));
                        if (Objects.isNull(detl)) {
                            throw new CoolException("子任务档明细不存在!!");
                        }
                        Double v = Math.round((wrkDetl.getStockQty() - realQty) * 10000) / 10000.0;
                        detl.setRealQty(v);
                        detl.setWeight(params.getWeight());
                        if (!wrkDetlService.update(detl, new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo).eq("matnr", detl.getMatnr()).eq("barcode", detl.getBarcode()))) {
                            throw new CoolException("原任务档明细修改失败!!");
                        }
                    } else {
                        throw new CoolException("任务号截取失败,请检查主任务档任档wrkCode字段");
                    }
                }
            } else {
                throw new CoolException("数据错误,当前任务状态有误 !");
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -564,7 +564,10 @@
            wrkDetl.setUnit(locDel.getUnit());
            wrkDetl.setSpecs(locDel.getSpecs());
            wrkDetl.setBatch(locDel.getBatch());
            wrkDetl.setAnfme(locDel.getAnfme());
            //库存数量
            wrkDetl.setStockQty(locDel.getAnfme());
            //单据数量
            wrkDetl.setAnfme(locDto.getAnfme());
            wrkDetl.setAppeTime(now);
            wrkDetl.setAppeUser(userId);
            wrkDetl.setModiTime(now);
@@ -1536,11 +1539,11 @@
            throw new CoolException("修改库位状态失败");
        }
        wrkMast.setWrkCode(null);
        if (!wrkMastService.updateById(wrkMast)) {
            throw new CoolException("任务档更新失败!!");
        }
//        wrkMast.setWrkCode(null);
//
//        if (!wrkMastService.updateById(wrkMast)) {
//            throw new CoolException("任务档更新失败!!");
//        }
    }
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -127,11 +127,7 @@
                            locDetl = new LocDetl();
                            locDetl.sync(wrkDetl);
                            locDetl.setLocNo(wrkMast.getLocNo()); // 库位号
                            if (!Objects.isNull(wrkMast.getWrkCode())) {
                                locDetl.setAnfme(wrkDetl.getRealQty());
                            } else {
                                locDetl.setAnfme(wrkDetl.getAnfme()); // 数量
                            }
                            locDetl.setAnfme(wrkDetl.getAnfme()); // 数量
                            locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码
                            locDetl.setModiTime(now);
                            locDetl.setAppeTime(now);
@@ -144,8 +140,33 @@
                        //判断匹配编码不为空,且任务编码包含-2,确认为有上组任务
                        if (!Objects.isNull(wrkMast.getWrkCode())) {
                            //不需要更新单据信息(子任务无单据
                            //TODO 获取101出库 主任务档总数量 - 子任务档的实际数量 = 当前作业完成数量
                            WrkDetl selectOne = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
                            Double v = Math.round((selectOne.getStockQty() - selectOne.getAnfme()) * 10000) / 10000.0;
                            OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), null, null, null, null,
                                    null, null, null);
                            if (!Objects.isNull(orderDetlPakout)) {
                                orderDetlPakout.setQty(v);
                                if (!orderDetlPakoutService.updateById(orderDetlPakout)) {
                                    throw new CoolException("单据完成数量修改失败!!");
                                }
                            }
                            int indexOf = wrkMast.getWrkCode().indexOf("-1");
                            if (indexOf != -1) {
                                String wrkNo = wrkMast.getWrkCode().substring(0, indexOf);
                                WrkMast mast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", wrkNo));
                                if (Objects.isNull(mast)) {
                                    throw new CoolException("数据错误,主任务档不存在或已删除!!");
                                }
                                mast.setWrkCode(null);
                                if (!wrkMastService.updateById(mast)) {
                                    throw new CoolException("原任务档删除失败!!");
                                }
                            }
                        } else {
                            //正常单据才存存入库单,作入库单据信息更新
                            // 更新订单完成数量
src/main/java/com/zy/asrs/utils/MatExcelListener.java
@@ -133,7 +133,7 @@
                throw new CoolException("每公斤长度不能为空!!");
            }
            if (Objects.isNull(mat.getSafeQty())) {
                throw new CoolException("归零阀值不能为空!!");
                throw new CoolException("归零阈值不能为空!!");
            }
            if (!matService.insert(mat)) {
                throw new CoolException("保存商品信息失败,商品编码:" + excel.getMatnr());
src/main/resources/mapper/OrderDetlPakoutMapper.xml
@@ -60,12 +60,15 @@
        <if test="brand != null and brand != ''">
            and brand = #{brand}
        </if>
        and standby1 = #{standby1}
        and standby2 = #{standby2}
        and standby3 = #{standby3}
        and box_type1 = #{boxType1}
        and box_type2 = #{boxType2}
        and box_type3 = #{boxType3}
<!--        <if test="standby1 != null and standby1 != ''">-->
<!--            and standby1 = #{standby1}-->
<!--        </if>-->
        <if test="standby2 != null and standby2 != ''">
            and standby2 = #{standby2}
        </if>
        <if test="standby3 != null and standby3 != ''">
            and standby3 = #{standby3}
        </if>
    </sql>
    <sql id="standbyAllMemo">
        --         and line_number = #{lineNumber}