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 executorVo;
public int carryQty;
public Map<String, Object> option;
public RcsTaskOption option;
public PlanTaskSequence(String executorId, LogisticsRuntime logisticsRuntime, RcsTaskBiz bizTask, String createBy) {
this.executorId = executorId;
@ -212,17 +212,15 @@ public class PlanTaskSequence {
}
public double getLoadHeight() {
if (this.option == null || this.option.get("loadHeight") == null) {
return 0d;
}
return Conv.asDouble(this.option.get("loadHeight"));
return this.option.loadHeight;
}
public double getUnloadHeight() {
if (this.option == null || this.option.get("unloadHeight") == null) {
return 0d;
return this.option.unloadHeight;
}
return Conv.asDouble(this.option.get("unloadHeight"));
public boolean noInv() {
return this.option.noInv;
}
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->货架
*/
private void changeInvOfUnload(PlanTaskSequence taskSequence, RcsTaskPlan taskPlan) {
if (taskSequence.option.noInv) {
return;
}
String lpn = taskSequence.carryLpn;
queryDSL.beginTX(status -> {
InvManager.invSave(this.envId, taskSequence.bizTask.getBizTaskId(), lpn, taskSequence.executorVo.getLocCode(), -taskSequence.carryQty);
@ -242,6 +245,9 @@ public class LogisticsRuntime {
* 库存转移 货架->AGV
*/
private void changeInvOfLoad(PlanTaskSequence taskSequence, RcsTaskPlan taskPlan) {
if (taskSequence.option.noInv) {
return;
}
String lpn = taskSequence.carryLpn;
queryDSL.beginTX(status -> {
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.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,

Loading…
Cancel
Save