自动化立体仓库 - WMS系统
zwl
1 天以前 cac27c083bacfcb1fe602d722729676f87ee7023
完善电视机出库托数延时高的问题
1个文件已添加
5个文件已修改
124 ■■■■■ 已修改文件
src/main/java/com/zy/api/controller/params/ReceviceTaskParams.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/support/OutboundBatchSeqReleaseGuard.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/test/java/com/zy/api/service/impl/WcsApiServiceImplTest.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/test/java/com/zy/asrs/task/support/OutboundBatchSeqReleaseGuardTest.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/api/controller/params/ReceviceTaskParams.java
@@ -19,7 +19,7 @@
    @ApiModelProperty("流水号")
    private Long id;
    @ApiModelProperty("通知类型:task")
    @ApiModelProperty("通知类型:task、Crn、Devp")
    private String notifyType;
    @ApiModelProperty("堆垛机号")
@@ -28,7 +28,7 @@
    @ApiModelProperty("WMS任务号")
    private String superTaskNo;
    @ApiModelProperty("消息类型:task_complete、task_cancel")
    @ApiModelProperty("消息类型:task_complete、task_cancel、crn_out_task_run、crn_out_task_complete、station_out_task_run_complete")
    private String msgType;
    @ApiModelProperty("消息描述")
src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java
@@ -51,6 +51,7 @@
    private static final long OUT_LOCK_REPORT_SUCCESS_WRK_STS = 21L;
    private static final long OUT_LOCK_REPORT_FAIL_WRK_STS = 22L;
    private static final long OUTBOUND_CRN_COMPLETE_WRK_STS = 25L;
    private static final long OUTBOUND_STATION_COMPLETE_WRK_STS = 26L;
    private static final String OUT_LOCK_REPORT_PENDING_FLAG = "P";
    /** 同一 WCS 路径、同一单号下一组下发的任务条数上限 */
@@ -701,9 +702,18 @@
                    throw new CoolException("任务状态修改失败!!");
                }
            }
        } else if (params.getNotifyType().equals("task")) {
        } else if (isOutboundStationTaskRunComplete(params)) {
            // WCS输送站点出库任务运行完成:托盘已到目的地,工作状态 -> 26。
            if (isOutboundTask(mast) && canMarkOutboundStationComplete(mast)) {
                mast.setWrkSts(OUTBOUND_STATION_COMPLETE_WRK_STS);
                mast.setModiTime(new Date());
                if (!wrkMastService.updateById(mast)) {
                    throw new CoolException("任务状态修改失败!!");
                }
            }
        } else if ("task".equalsIgnoreCase(params.getNotifyType())) {
            //任务
            if (params.getMsgType().equals("task_complete")) {
            if ("task_complete".equalsIgnoreCase(params.getMsgType())) {
                if (mast.getIoType() == 1 || mast.getIoType() == 2 ||mast.getIoType() == 10) {
                    mast.setWrkSts(4L);
@@ -717,7 +727,7 @@
                    throw new CoolException("任务状态修改失败!!");
                }
                //wcs任务取消接口
            } else if (params.getMsgType().equals("task_cancel")) {
            } else if ("task_cancel".equalsIgnoreCase(params.getMsgType())) {
                workService.cancelWrkMast(String.valueOf(mast.getWrkNo()), 9955L);
            }
        }
@@ -736,6 +746,12 @@
                && "crn_out_task_complete".equalsIgnoreCase(params.getMsgType());
    }
    private boolean isOutboundStationTaskRunComplete(ReceviceTaskParams params) {
        return params != null
                && "Devp".equalsIgnoreCase(params.getNotifyType())
                && "station_out_task_run_complete".equalsIgnoreCase(params.getMsgType());
    }
    private boolean isOutboundTask(WrkMast mast) {
        return mast != null && mast.getIoType() != null && (mast.getIoType() == 101 || mast.getIoType() == 110);
    }
@@ -756,6 +772,17 @@
        return mast.getWrkSts() < 14
                || mast.getWrkSts().equals(OUT_LOCK_REPORT_SUCCESS_WRK_STS)
                || mast.getWrkSts().equals(OUT_LOCK_REPORT_FAIL_WRK_STS)
                || mast.getWrkSts().equals(OUTBOUND_CRN_COMPLETE_WRK_STS)
                || mast.getWrkSts().equals(OUTBOUND_STATION_COMPLETE_WRK_STS);
    }
    private boolean canMarkOutboundStationComplete(WrkMast mast) {
        if (mast == null || mast.getWrkSts() == null) {
            return false;
        }
        return mast.getWrkSts() < 14
                || mast.getWrkSts().equals(OUT_LOCK_REPORT_SUCCESS_WRK_STS)
                || mast.getWrkSts().equals(OUT_LOCK_REPORT_FAIL_WRK_STS)
                || mast.getWrkSts().equals(OUTBOUND_CRN_COMPLETE_WRK_STS);
    }
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -995,7 +995,7 @@
                sum = Integer.valueOf(wrkDetls.get(0).getSupp());
            }
            List<WrkMast> userNo = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("user_no", wrkMast.getUserNo()).in("wrk_sts",11,12,21,22,25));
            suppCount = sum - userNo.size()+1;
            suppCount = sum - userNo.size();
            map.put("supp", suppCount + "/" + sum);
        }
src/main/java/com/zy/asrs/task/support/OutboundBatchSeqReleaseGuard.java
@@ -16,6 +16,7 @@
public class OutboundBatchSeqReleaseGuard {
    public static final long OUTBOUND_CRN_COMPLETE_WRK_STS = 25L;
    public static final long OUTBOUND_STATION_COMPLETE_WRK_STS = 26L;
    public static final long OUTBOUND_TASK_COMPLETE_WRK_STS = 14L;
    public static final long OUTBOUND_ERP_REPORT_PENDING_WRK_STS = 17L;
    public static final long OUTBOUND_FINISHED_WRK_STS = 15L;
@@ -75,6 +76,7 @@
    public boolean isReleaseStatus(Long wrkSts) {
        return Objects.equals(wrkSts, OUTBOUND_CRN_COMPLETE_WRK_STS)
                || Objects.equals(wrkSts, OUTBOUND_STATION_COMPLETE_WRK_STS)
                || Objects.equals(wrkSts, OUTBOUND_TASK_COMPLETE_WRK_STS)
                || Objects.equals(wrkSts, OUTBOUND_ERP_REPORT_PENDING_WRK_STS)
                || Objects.equals(wrkSts, OUTBOUND_FINISHED_WRK_STS);
src/test/java/com/zy/api/service/impl/WcsApiServiceImplTest.java
New file
@@ -0,0 +1,74 @@
package com.zy.api.service.impl;
import com.zy.api.controller.params.ReceviceTaskParams;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.service.WorkService;
import com.zy.asrs.service.WrkMastService;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.test.util.ReflectionTestUtils;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
class WcsApiServiceImplTest {
    @Mock
    private WrkMastService wrkMastService;
    @Mock
    private WorkService workService;
    private WcsApiServiceImpl service;
    @BeforeEach
    void setUp() {
        service = new WcsApiServiceImpl();
        ReflectionTestUtils.setField(service, "wrkMastService", wrkMastService);
        ReflectionTestUtils.setField(service, "workService", workService);
    }
    @Test
    void receviceTaskFromWcs_marksOutboundStationCompleteWhenDevpCallbackArrives() {
        WrkMast mast = outboundMast(25L);
        when(wrkMastService.selectOne(any())).thenReturn(mast);
        when(wrkMastService.updateById(mast)).thenReturn(true);
        service.receviceTaskFromWcs(new ReceviceTaskParams()
                .setNotifyType("Devp")
                .setMsgType("station_out_task_run_complete")
                .setSuperTaskNo("7597"));
        assertEquals(Long.valueOf(26L), mast.getWrkSts());
        verify(wrkMastService).updateById(mast);
    }
    @Test
    void receviceTaskFromWcs_allowsTaskCompleteAfterStationOutComplete() {
        WrkMast mast = outboundMast(26L);
        when(wrkMastService.selectOne(any())).thenReturn(mast);
        when(wrkMastService.updateById(mast)).thenReturn(true);
        service.receviceTaskFromWcs(new ReceviceTaskParams()
                .setNotifyType("task")
                .setMsgType("task_complete")
                .setSuperTaskNo("7597"));
        assertEquals(Long.valueOf(14L), mast.getWrkSts());
        verify(wrkMastService).updateById(mast);
    }
    private static WrkMast outboundMast(Long wrkSts) {
        WrkMast mast = new WrkMast();
        mast.setWrkNo(7597);
        mast.setIoType(101);
        mast.setWrkSts(wrkSts);
        return mast;
    }
}
src/test/java/com/zy/asrs/task/support/OutboundBatchSeqReleaseGuardTest.java
@@ -92,6 +92,15 @@
    }
    @Test
    void treatsStationOutCompleteStatusAsReleased() {
        when(wrkMastService.selectList(any())).thenReturn(Arrays.asList(
                wrkMast("1", 26L),
                wrkMast("2", 11L)));
        assertNull(guard.validateReady("ORD1", "2"));
    }
    @Test
    void firstBatchSeqIsNotBlockedByThreshold() throws Exception {
        setThreshold("1");
        when(wrkMastService.selectList(any())).thenReturn(Collections.singletonList(wrkMast("1", 25L)));