|
|
|
@ -8,6 +8,7 @@ import com.galaxis.rcs.common.enums.BizTaskStatus; |
|
|
|
import com.galaxis.rcs.common.enums.BizTaskType; |
|
|
|
import com.galaxis.rcs.common.enums.LCCDirection; |
|
|
|
import com.galaxis.rcs.plan.PlanTaskSequence; |
|
|
|
import com.galaxis.rcs.plan.RcsTaskOption; |
|
|
|
import com.galaxis.rcs.plan.task.*; |
|
|
|
import com.google.common.base.Strings; |
|
|
|
import com.google.common.collect.Maps; |
|
|
|
@ -18,6 +19,8 @@ import com.yvan.logisticsModel.LogisticsRuntimeService; |
|
|
|
import com.yvan.logisticsModel.StaticItem; |
|
|
|
import org.clever.core.Conv; |
|
|
|
import org.clever.core.id.SnowFlake; |
|
|
|
import org.clever.core.json.JsonWrapper; |
|
|
|
import org.clever.core.mapper.JacksonMapper; |
|
|
|
import org.clever.core.model.response.R; |
|
|
|
import org.clever.web.mvc.annotation.RequestBody; |
|
|
|
|
|
|
|
@ -198,7 +201,9 @@ public class RcsController { |
|
|
|
} |
|
|
|
|
|
|
|
// ==================== 找到托盘号 ====================
|
|
|
|
String lpn = ps.runtime.queryDSL |
|
|
|
String lpn = "N/A"; |
|
|
|
if (!ps.option.noInv) { |
|
|
|
lpn = ps.runtime.queryDSL |
|
|
|
.select(lccInvLpn.lpn) |
|
|
|
.from(lccInvLpn) |
|
|
|
.where(lccInvLpn.envId.eq(ps.envId)) |
|
|
|
@ -207,6 +212,7 @@ public class RcsController { |
|
|
|
if (Strings.isNullOrEmpty(lpn)) { |
|
|
|
return R.fail("LPN not found at fromStoreLoc: " + fromStoreLoc); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// ==================== 布置任务 ====================
|
|
|
|
ps.bizTask.setLpn(lpn); |
|
|
|
@ -224,7 +230,6 @@ public class RcsController { |
|
|
|
ps.planSequence.unloadBasLocationVo = new BasLocationVo(unloadBasLocation); |
|
|
|
ps.planSequence.carryLpn = lpn; |
|
|
|
ps.planSequence.carryQty = 1; |
|
|
|
ps.planSequence.option = ps.option; |
|
|
|
|
|
|
|
ps.runtime.pathPlannerMap.get(ps.agv.getT()) |
|
|
|
.planCarryTask(ps.planSequence, ps.fromItem.getId(), ps.fromDirection, carryTask); |
|
|
|
@ -265,7 +270,9 @@ public class RcsController { |
|
|
|
|
|
|
|
// ==================== 找到托盘号 ====================
|
|
|
|
BasLocationVo executorVo = new BasLocationVo(ps.agv); |
|
|
|
String lpn = ps.runtime.queryDSL |
|
|
|
String lpn = "N/A"; |
|
|
|
if (!ps.option.noInv) { |
|
|
|
lpn = ps.runtime.queryDSL |
|
|
|
.select(lccInvLpn.lpn) |
|
|
|
.from(lccInvLpn) |
|
|
|
.where(lccInvLpn.envId.eq(ps.envId)) |
|
|
|
@ -274,6 +281,7 @@ public class RcsController { |
|
|
|
if (Strings.isNullOrEmpty(lpn)) { |
|
|
|
return R.fail("LPN not found at StoreLoc: " + executorVo.getLocCode()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// ==================== 布置任务 ====================
|
|
|
|
ps.bizTask.setLpn(lpn); |
|
|
|
@ -290,7 +298,6 @@ public class RcsController { |
|
|
|
ps.planSequence.unloadBasLocationVo = new BasLocationVo(unloadBasLocation); |
|
|
|
ps.planSequence.carryLpn = lpn; |
|
|
|
ps.planSequence.carryQty = 1; |
|
|
|
ps.planSequence.option = ps.option; |
|
|
|
|
|
|
|
ps.runtime.pathPlannerMap.get(ps.agv.getT()) |
|
|
|
.planUnloadTask(ps.planSequence, ps.fromItem.getId(), ps.fromDirection, unloadTask); |
|
|
|
@ -330,7 +337,9 @@ public class RcsController { |
|
|
|
StoreLocation targetLocation = new StoreLocation(loadBasLocation.getRack(), loadBasLocation.getBay(), loadBasLocation.getLevel(), loadBasLocation.getCell()); |
|
|
|
|
|
|
|
// ==================== 找到托盘号 ====================
|
|
|
|
String lpn = ps.runtime.queryDSL |
|
|
|
String lpn = "N/A"; |
|
|
|
if (!ps.option.noInv) { |
|
|
|
lpn = ps.runtime.queryDSL |
|
|
|
.select(lccInvLpn.lpn) |
|
|
|
.from(lccInvLpn) |
|
|
|
.where(lccInvLpn.envId.eq(ps.envId)) |
|
|
|
@ -339,6 +348,7 @@ public class RcsController { |
|
|
|
if (Strings.isNullOrEmpty(lpn)) { |
|
|
|
return R.fail("LPN not found at targetStoreLoc: " + loadBasLocation.getLocCode()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// ==================== 布置任务 ====================
|
|
|
|
ps.bizTask.setLpn(lpn); |
|
|
|
@ -355,7 +365,6 @@ public class RcsController { |
|
|
|
ps.planSequence.unloadBasLocationVo = null; |
|
|
|
ps.planSequence.carryLpn = lpn; |
|
|
|
ps.planSequence.carryQty = 1; |
|
|
|
ps.planSequence.option = ps.option; |
|
|
|
|
|
|
|
ps.runtime.pathPlannerMap.get(ps.agv.getT()) |
|
|
|
.planLoadTask(ps.planSequence, ps.fromItem.getId(), ps.fromDirection, loadTask); |
|
|
|
@ -412,7 +421,7 @@ public class RcsController { |
|
|
|
String projectUUID = Conv.asString(params.get("projectUUID")); |
|
|
|
Long envId = Conv.asLong(params.get("envId")); |
|
|
|
String agvId = Conv.asString(params.get("agvId")); |
|
|
|
Map<String, Object> option = (Map<String, Object>) params.get("option"); |
|
|
|
RcsTaskOption option = new JsonWrapper((Map) params.get("option")).asObject(RcsTaskOption.class); |
|
|
|
|
|
|
|
if (Strings.isNullOrEmpty(projectUUID)) { |
|
|
|
return R.fail("projectUUID Must not be empty"); |
|
|
|
@ -423,9 +432,6 @@ public class RcsController { |
|
|
|
if (Strings.isNullOrEmpty(agvId)) { |
|
|
|
return R.fail("agvId Must not be empty"); |
|
|
|
} |
|
|
|
if (option == null) { |
|
|
|
option = Maps.newHashMap(); |
|
|
|
} |
|
|
|
|
|
|
|
LogisticsRuntime runtime = LogisticsRuntimeService.INSTANCE.getByProjectEnv(projectUUID, envId); |
|
|
|
if (runtime == null) { |
|
|
|
@ -444,8 +450,8 @@ public class RcsController { |
|
|
|
// forceStartWayPointId: '6_2', forceStartDirectior: 'right'
|
|
|
|
StaticItem fromItem = null; |
|
|
|
LCCDirection fromDirection = null; |
|
|
|
if (option.get("forceStartWayPointId") != null) { |
|
|
|
fromItem = runtime.getStaticItemById(Conv.asString(option.get("forceStartWayPointId"))); |
|
|
|
if (option.forceStartWayPointId != null) { |
|
|
|
fromItem = runtime.getStaticItemById(option.forceStartWayPointId); |
|
|
|
} else { |
|
|
|
fromItem = runtime.getStaticItemByLogicXY(agv.logicX, agv.logicY); |
|
|
|
if (agv.logicX == 0 && agv.logicY == 0) { |
|
|
|
@ -453,8 +459,8 @@ public class RcsController { |
|
|
|
return R.fail("AGV position init failed"); |
|
|
|
} |
|
|
|
} |
|
|
|
if (option.get("forceStartDirection") != null) { |
|
|
|
fromDirection = LCCDirection.fromString(Conv.asString(option.get("forceStartDirection"))); |
|
|
|
if (option.forceStartDirection != null) { |
|
|
|
fromDirection = LCCDirection.fromString(option.forceStartDirection); |
|
|
|
} else { |
|
|
|
fromDirection = agv.getLCCDirection(); |
|
|
|
} |
|
|
|
@ -471,7 +477,7 @@ public class RcsController { |
|
|
|
bizTask.setEnvId(envId); |
|
|
|
bizTask.setBizType(BizTaskType.MOVE.toString()); |
|
|
|
bizTask.setLpn("N/A"); |
|
|
|
bizTask.setPriority(Conv.asInteger(option.get("priority"), 1)); |
|
|
|
bizTask.setPriority(option.priority); |
|
|
|
bizTask.setTaskFrom(fromItem.getId()); |
|
|
|
bizTask.setAllocatedExecutorId(agvId); |
|
|
|
bizTask.setBizTaskPayload("N/A"); |
|
|
|
@ -488,7 +494,7 @@ public class RcsController { |
|
|
|
String projectUUID, |
|
|
|
Long envId, |
|
|
|
String agvId, |
|
|
|
Map<String, Object> option, |
|
|
|
RcsTaskOption option, |
|
|
|
RcsTaskBiz bizTask, |
|
|
|
LogisticsRuntime runtime, |
|
|
|
AmrAgvItem agv, |
|
|
|
|