Browse Source

noInv 取消记账

jx-test
修宁 5 months ago
parent
commit
6226a626fd
  1. 2
      .lingma/rules/project_rule.md
  2. 14
      servo/src/main/java/com/galaxis/rcs/plan/PlanTaskSequence.java
  3. 33
      servo/src/main/java/com/galaxis/rcs/plan/RcsTaskOption.java
  4. 6
      servo/src/main/java/com/yvan/logisticsModel/LogisticsRuntime.java
  5. 38
      servo/src/main/java/com/yvan/workbench/controller/RcsController.java

2
.lingma/rules/project_rule.md

@ -0,0 +1,2 @@
**添加规则文件可帮助模型精准理解你的编码偏好,如框架、代码风格等**
**规则文件只对当前工程生效,单文件限制10000字符。如果无需将该文件提交到远程 Git 仓库,请将其添加到 .gitignore**

14
servo/src/main/java/com/galaxis/rcs/plan/PlanTaskSequence.java

@ -40,7 +40,7 @@ public class PlanTaskSequence {
public BasLocationVo unloadBasLocationVo; public BasLocationVo unloadBasLocationVo;
public BasLocationVo executorVo; public BasLocationVo executorVo;
public int carryQty; public int carryQty;
public Map<String, Object> option; public RcsTaskOption option;
public PlanTaskSequence(String executorId, LogisticsRuntime logisticsRuntime, RcsTaskBiz bizTask, String createBy) { public PlanTaskSequence(String executorId, LogisticsRuntime logisticsRuntime, RcsTaskBiz bizTask, String createBy) {
this.executorId = executorId; this.executorId = executorId;
@ -212,17 +212,15 @@ public class PlanTaskSequence {
} }
public double getLoadHeight() { public double getLoadHeight() {
if (this.option == null || this.option.get("loadHeight") == null) { return this.option.loadHeight;
return 0d;
}
return Conv.asDouble(this.option.get("loadHeight"));
} }
public double getUnloadHeight() { public double getUnloadHeight() {
if (this.option == null || this.option.get("unloadHeight") == null) { return this.option.unloadHeight;
return 0d;
} }
return Conv.asDouble(this.option.get("unloadHeight"));
public boolean noInv() {
return this.option.noInv;
} }
public int completedCount() { public int completedCount() {

33
servo/src/main/java/com/galaxis/rcs/plan/RcsTaskOption.java

@ -0,0 +1,33 @@
package com.galaxis.rcs.plan;
public class RcsTaskOption {
/**
* 任务优先级
*/
public int priority = 1;
/**
* 强制开始路径点
*/
public String forceStartWayPointId;
/**
* 强制开始方向必须使用 LCCDirection.fromString 可以转换
*/
public String forceStartDirection;
/**
* 搬运高度
*/
public double loadHeight = 0d;
/**
* 卸货高度
*/
public double unloadHeight = 0d;
/**
* 禁止记录库存
*/
public boolean noInv = false;
}

6
servo/src/main/java/com/yvan/logisticsModel/LogisticsRuntime.java

@ -230,6 +230,9 @@ public class LogisticsRuntime {
* 库存转移 AGV->货架 * 库存转移 AGV->货架
*/ */
private void changeInvOfUnload(PlanTaskSequence taskSequence, RcsTaskPlan taskPlan) { private void changeInvOfUnload(PlanTaskSequence taskSequence, RcsTaskPlan taskPlan) {
if (taskSequence.option.noInv) {
return;
}
String lpn = taskSequence.carryLpn; String lpn = taskSequence.carryLpn;
queryDSL.beginTX(status -> { queryDSL.beginTX(status -> {
InvManager.invSave(this.envId, taskSequence.bizTask.getBizTaskId(), lpn, taskSequence.executorVo.getLocCode(), -taskSequence.carryQty); InvManager.invSave(this.envId, taskSequence.bizTask.getBizTaskId(), lpn, taskSequence.executorVo.getLocCode(), -taskSequence.carryQty);
@ -242,6 +245,9 @@ public class LogisticsRuntime {
* 库存转移 货架->AGV * 库存转移 货架->AGV
*/ */
private void changeInvOfLoad(PlanTaskSequence taskSequence, RcsTaskPlan taskPlan) { private void changeInvOfLoad(PlanTaskSequence taskSequence, RcsTaskPlan taskPlan) {
if (taskSequence.option.noInv) {
return;
}
String lpn = taskSequence.carryLpn; String lpn = taskSequence.carryLpn;
queryDSL.beginTX(status -> { queryDSL.beginTX(status -> {
InvManager.invSave(this.envId, taskSequence.bizTask.getBizTaskId(), lpn, taskSequence.loadBasLocationVo.getLocCode(), -taskSequence.carryQty); InvManager.invSave(this.envId, taskSequence.bizTask.getBizTaskId(), lpn, taskSequence.loadBasLocationVo.getLocCode(), -taskSequence.carryQty);

38
servo/src/main/java/com/yvan/workbench/controller/RcsController.java

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

Loading…
Cancel
Save