自动化立体仓库 - WMS系统
zwl
1 天以前 f57107a13910c3cb75ef6b783fefec063356a40a
移库wcs上报wms修改状态修复
2个文件已修改
88 ■■■■ 已修改文件
src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/test/java/com/zy/api/service/impl/WcsApiServiceImplTest.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java
@@ -689,7 +689,7 @@
        if (Objects.isNull(mast)) {
            // pakoutOrderPause 中止时,WMS 在 WCS 确认取消后会立即本地取消并归档任务。
            // 如果 WCS 后续又补发 task_cancel 回调,此时当前工作档已不存在,按幂等成功处理。
            if ("task".equalsIgnoreCase(params.getNotifyType()) && "task_cancel".equalsIgnoreCase(params.getMsgType())) {
            if (isTaskCancelCallback(params)) {
                return R.ok();
            }
            throw new CoolException("任务档不存在!!");
@@ -727,29 +727,45 @@
                    throw new CoolException("任务状态修改失败!!");
                }
            }
        } else if ("task".equalsIgnoreCase(params.getNotifyType())) {
        } else if (isTaskCompleteCallback(params)) {
            //任务
            if ("task_complete".equalsIgnoreCase(params.getMsgType())) {
                if (mast.getIoType() == 1 || mast.getIoType() == 2 || mast.getIoType() == 11 || mast.getIoType() == CHANGE_LOC_IO_TYPE) {
                    mast.setWrkSts(4L);
                } else if (isOutboundTask(mast) && canMarkOutboundTaskComplete(mast)) {
                    mast.setWrkSts(14L);
                    if(Cools.isEmpty(mast.getStaNo())){
                        mast.setOveMk("Y");
                    }
            if (isInboundOrMoveTask(mast)) {
                mast.setWrkSts(4L);
            } else if (isOutboundTask(mast) && canMarkOutboundTaskComplete(mast)) {
                mast.setWrkSts(14L);
                if(Cools.isEmpty(mast.getStaNo())){
                    mast.setOveMk("Y");
                }
                if (!wrkMastService.updateById(mast)) {
                    throw new CoolException("任务状态修改失败!!");
                }
                //wcs任务取消接口
            } else if ("task_cancel".equalsIgnoreCase(params.getMsgType())) {
                workService.cancelWrkMast(String.valueOf(mast.getWrkNo()), 9955L);
            }
            if (!wrkMastService.updateById(mast)) {
                throw new CoolException("任务状态修改失败!!");
            }
        } else if (isTaskCancelCallback(params)) {
            //wcs任务取消接口
            workService.cancelWrkMast(String.valueOf(mast.getWrkNo()), 9955L);
        }
        return R.ok();
    }
    private boolean isTaskCompleteCallback(ReceviceTaskParams params) {
        return params != null && "task_complete".equalsIgnoreCase(params.getMsgType());
    }
    private boolean isTaskCancelCallback(ReceviceTaskParams params) {
        return params != null && "task_cancel".equalsIgnoreCase(params.getMsgType());
    }
    private boolean isInboundOrMoveTask(WrkMast mast) {
        if (mast == null || mast.getIoType() == null) {
            return false;
        }
        Integer ioType = mast.getIoType();
        return Objects.equals(ioType, 1)
                || Objects.equals(ioType, 2)
                || Objects.equals(ioType, 11)
                || Objects.equals(ioType, CHANGE_LOC_IO_TYPE);
    }
    private boolean isOutboundCrnTaskRun(ReceviceTaskParams params) {
        return params != null
                && "Crn".equalsIgnoreCase(params.getNotifyType())
src/test/java/com/zy/api/service/impl/WcsApiServiceImplTest.java
@@ -101,6 +101,36 @@
    }
    @Test
    void receviceTaskFromWcs_marksMoveCompleteWhenTaskCompleteUsesCrnNotifyType() {
        WrkMast mast = moveMast(11);
        when(wrkMastService.selectOne(any())).thenReturn(mast);
        when(wrkMastService.updateById(mast)).thenReturn(true);
        service.receviceTaskFromWcs(new ReceviceTaskParams()
                .setNotifyType("Crn")
                .setMsgType("task_complete")
                .setSuperTaskNo("7597"));
        assertEquals(Long.valueOf(4L), mast.getWrkSts());
        verify(wrkMastService).updateById(mast);
    }
    @Test
    void receviceTaskFromWcs_marksChangeLocCompleteWhenTaskCompleteUsesCrnNotifyType() {
        WrkMast mast = moveMast(5);
        when(wrkMastService.selectOne(any())).thenReturn(mast);
        when(wrkMastService.updateById(mast)).thenReturn(true);
        service.receviceTaskFromWcs(new ReceviceTaskParams()
                .setNotifyType("Crn")
                .setMsgType("task_complete")
                .setSuperTaskNo("7597"));
        assertEquals(Long.valueOf(4L), mast.getWrkSts());
        verify(wrkMastService).updateById(mast);
    }
    @Test
    @SuppressWarnings("unchecked")
    void buildReassignCrnSearchOrder_currentThree_shouldSearchSmallerThenWrapDescending() {
        List<Integer> result = ReflectionTestUtils.invokeMethod(
@@ -276,6 +306,14 @@
        return mast;
    }
    private static WrkMast moveMast(Integer ioType) {
        WrkMast mast = new WrkMast();
        mast.setWrkNo(7597);
        mast.setIoType(ioType);
        mast.setWrkSts(2L);
        return mast;
    }
    private static WrkMast inboundMast(Integer crnNo, String locNo) {
        WrkMast mast = new WrkMast();
        mast.setWrkNo(7597);