feat: 新增空木箱桁架入库接口
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
package cn.code.nl.module.wms.api.emptybox.dto;
|
||||
|
||||
import jakarta.validation.constraints.Max;
|
||||
import jakarta.validation.constraints.Min;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 空木箱桁架入库任务创建请求。
|
||||
*/
|
||||
@Data
|
||||
public class EmptyBoxTrussInboundCreateReq {
|
||||
|
||||
@NotBlank(message = "取货点位编码不能为空")
|
||||
private String pointCode;
|
||||
|
||||
@NotBlank(message = "木箱规格编码不能为空")
|
||||
private String materialCode;
|
||||
|
||||
@NotNull(message = "堆叠层数不能为空")
|
||||
@Min(value = 1, message = "堆叠层数不能小于1层")
|
||||
@Max(value = 3, message = "堆叠层数不能超过3层")
|
||||
private Integer layerCount;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package cn.code.nl.module.wms.api.emptybox.dto;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 空木箱桁架入库任务创建结果。
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class EmptyBoxTrussInboundCreateResp {
|
||||
|
||||
private Long taskId;
|
||||
private String sourcePoint;
|
||||
private String targetPoint;
|
||||
private Integer layerCount;
|
||||
}
|
||||
@@ -5,6 +5,8 @@ import cn.code.nl.module.wms.api.emptybox.dto.EmptyBoxInboundCreateReq;
|
||||
import cn.code.nl.module.wms.api.emptybox.dto.EmptyBoxInboundCreateResp;
|
||||
import cn.code.nl.module.wms.api.emptybox.dto.EmptyBoxOutboundCreateReq;
|
||||
import cn.code.nl.module.wms.api.emptybox.dto.EmptyBoxOutboundCreateResp;
|
||||
import cn.code.nl.module.wms.api.emptybox.dto.EmptyBoxTrussInboundCreateReq;
|
||||
import cn.code.nl.module.wms.api.emptybox.dto.EmptyBoxTrussInboundCreateResp;
|
||||
import cn.code.nl.module.wms.service.emptybox.EmptyBoxService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@@ -36,6 +38,14 @@ public class EmptyBoxController {
|
||||
return success(emptyBoxService.createInbound(req));
|
||||
}
|
||||
|
||||
/** 创建空木箱桁架入库任务。 */
|
||||
@PostMapping("/createTrussInbound")
|
||||
@Operation(summary = "创建空木箱桁架入库任务")
|
||||
public CommonResult<EmptyBoxTrussInboundCreateResp> createTrussInbound(
|
||||
@Valid @RequestBody EmptyBoxTrussInboundCreateReq req) {
|
||||
return success(emptyBoxService.createTrussInbound(req));
|
||||
}
|
||||
|
||||
/** 创建空木箱出库任务。 */
|
||||
@PostMapping("/createOutbound")
|
||||
@Operation(summary = "创建空木箱出库任务")
|
||||
|
||||
@@ -4,6 +4,8 @@ import cn.code.nl.module.wms.api.emptybox.dto.EmptyBoxInboundCreateReq;
|
||||
import cn.code.nl.module.wms.api.emptybox.dto.EmptyBoxInboundCreateResp;
|
||||
import cn.code.nl.module.wms.api.emptybox.dto.EmptyBoxOutboundCreateReq;
|
||||
import cn.code.nl.module.wms.api.emptybox.dto.EmptyBoxOutboundCreateResp;
|
||||
import cn.code.nl.module.wms.api.emptybox.dto.EmptyBoxTrussInboundCreateReq;
|
||||
import cn.code.nl.module.wms.api.emptybox.dto.EmptyBoxTrussInboundCreateResp;
|
||||
|
||||
/**
|
||||
* 空木箱出入库服务。
|
||||
@@ -13,6 +15,9 @@ public interface EmptyBoxService {
|
||||
/** 创建空木箱入库任务。 */
|
||||
EmptyBoxInboundCreateResp createInbound(EmptyBoxInboundCreateReq req);
|
||||
|
||||
/** 创建空木箱桁架入库任务。 */
|
||||
EmptyBoxTrussInboundCreateResp createTrussInbound(EmptyBoxTrussInboundCreateReq req);
|
||||
|
||||
/** 创建空木箱出库任务。 */
|
||||
EmptyBoxOutboundCreateResp createOutbound(EmptyBoxOutboundCreateReq req);
|
||||
|
||||
|
||||
@@ -9,6 +9,8 @@ import cn.code.nl.module.wms.api.emptybox.dto.EmptyBoxInboundCreateReq;
|
||||
import cn.code.nl.module.wms.api.emptybox.dto.EmptyBoxInboundCreateResp;
|
||||
import cn.code.nl.module.wms.api.emptybox.dto.EmptyBoxOutboundCreateReq;
|
||||
import cn.code.nl.module.wms.api.emptybox.dto.EmptyBoxOutboundCreateResp;
|
||||
import cn.code.nl.module.wms.api.emptybox.dto.EmptyBoxTrussInboundCreateReq;
|
||||
import cn.code.nl.module.wms.api.emptybox.dto.EmptyBoxTrussInboundCreateResp;
|
||||
import cn.code.nl.module.wms.dal.dataobject.boxinfo.BoxInfoDO;
|
||||
import cn.code.nl.module.wms.dal.dataobject.boxtype.BoxTypeDO;
|
||||
import cn.code.nl.module.wms.dal.dataobject.structAttr.EmptyBoxRowCandidate;
|
||||
@@ -34,6 +36,8 @@ public class EmptyBoxServiceImpl implements EmptyBoxService {
|
||||
|
||||
private static final String OWNER_SERVICE = "WMS";
|
||||
private static final String HANDLE_CODE = "EMPTYBOXTASK";
|
||||
private static final String TRUSS_HANDLE_CODE = "EMPTYBOXTRUSSTASK";
|
||||
private static final String TRUSS_INBOUND_POINT = "FHD01";
|
||||
private static final String INBOUND_LOCK = "8";
|
||||
private static final String OUTBOUND_LOCK = "9";
|
||||
private static final String OUTBOUND_POINT_1 = "ZXQ_01";
|
||||
@@ -75,6 +79,42 @@ public class EmptyBoxServiceImpl implements EmptyBoxService {
|
||||
return new EmptyBoxInboundCreateResp(taskId, boxNo, struct.getStructCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建并下发空木箱桁架入库任务。
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public EmptyBoxTrussInboundCreateResp createTrussInbound(EmptyBoxTrussInboundCreateReq req) {
|
||||
TransportTaskCreateReqDTO task = buildTrussInboundTask(req);
|
||||
Long taskId = transportTaskApi.createTransportTask(task).getCheckedData();
|
||||
transportTaskApi.issueTransportTaskRollBack(taskId).getCheckedData();
|
||||
return new EmptyBoxTrussInboundCreateResp(
|
||||
taskId, req.getPointCode(), TRUSS_INBOUND_POINT, req.getLayerCount());
|
||||
}
|
||||
|
||||
/**
|
||||
* 组装空木箱桁架入库搬运任务。
|
||||
*/
|
||||
TransportTaskCreateReqDTO buildTrussInboundTask(EmptyBoxTrussInboundCreateReq req) {
|
||||
TransportTaskCreateReqDTO task = new TransportTaskCreateReqDTO();
|
||||
task.setTaskName("空木箱桁架入库任务");
|
||||
task.setOwnerService(OWNER_SERVICE);
|
||||
task.setBizType("EMPTY_BOX_TRUSS_IN");
|
||||
task.setHandleCode(TRUSS_HANDLE_CODE);
|
||||
task.setTaskType("010501");
|
||||
task.setAcsTaskType("7");
|
||||
task.setAgvSystemType("1");
|
||||
task.setPointCode1(req.getPointCode());
|
||||
task.setPointCode2(TRUSS_INBOUND_POINT);
|
||||
task.setMaterialCode(req.getMaterialCode());
|
||||
task.setVehicleQty(1L);
|
||||
task.setIsAutoIssue("0");
|
||||
task.setProductArea("LK");
|
||||
task.setIsCreateFinish(true);
|
||||
task.setRequestParam("{\"layerCount\":" + req.getLayerCount() + "}");
|
||||
return task;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建空木箱出库任务。
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package cn.code.nl.module.wms.task;
|
||||
|
||||
import cn.code.nl.framework.execute.core.AbstractTask;
|
||||
import cn.code.nl.framework.execute.core.dto.TaskExecuteDTO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* 空木箱桁架前置搬运任务状态处理器。
|
||||
*/
|
||||
@Slf4j
|
||||
@Component("EMPTYBOXTRUSSTASK")
|
||||
public class EmptyBoxTrussTask extends AbstractTask {
|
||||
|
||||
/** 记录桁架前置搬运完成事件,不变更立库库存。 */
|
||||
@Override
|
||||
public void doHandleFinish(TaskExecuteDTO dto) {
|
||||
log.info("空木箱桁架前置搬运任务已完成,taskId={}", dto.getTaskId());
|
||||
}
|
||||
|
||||
/** 记录桁架前置搬运取消事件,不变更立库库存。 */
|
||||
@Override
|
||||
public void doHandleCancel(TaskExecuteDTO dto) {
|
||||
log.info("空木箱桁架前置搬运任务已取消,taskId={}", dto.getTaskId());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package cn.code.nl.module.wms.service.emptybox;
|
||||
|
||||
import cn.code.nl.module.task.dto.TransportTaskCreateReqDTO;
|
||||
import cn.code.nl.module.wms.api.emptybox.dto.EmptyBoxTrussInboundCreateReq;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
class EmptyBoxServiceImplTest {
|
||||
|
||||
@Test
|
||||
void shouldBuildEmptyBoxTrussInboundTask() {
|
||||
EmptyBoxTrussInboundCreateReq req = new EmptyBoxTrussInboundCreateReq();
|
||||
req.setPointCode("HJ-A03-07");
|
||||
req.setMaterialCode("EMPTY_BOX_A");
|
||||
req.setLayerCount(3);
|
||||
EmptyBoxServiceImpl emptyBoxService = new EmptyBoxServiceImpl();
|
||||
|
||||
TransportTaskCreateReqDTO task = emptyBoxService.buildTrussInboundTask(req);
|
||||
|
||||
assertEquals("HJ-A03-07", task.getPointCode1());
|
||||
assertEquals("FHD01", task.getPointCode2());
|
||||
assertEquals("EMPTY_BOX_A", task.getMaterialCode());
|
||||
assertEquals(1L, task.getVehicleQty());
|
||||
assertEquals("{\"layerCount\":3}", task.getRequestParam());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user