| src/main/java/com/zy/api/controller/params/ReceviceTaskParams.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/controller/OpenController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/task/support/OutboundBatchSeqReleaseGuard.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/test/java/com/zy/api/service/impl/WcsApiServiceImplTest.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/test/java/com/zy/asrs/task/support/OutboundBatchSeqReleaseGuardTest.java | ●●●●● 补丁 | 查看 | 原始文档 | 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)));