fix: 解决堆垛机出库,移库路由问题
This commit is contained in:
@@ -389,8 +389,8 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme
|
||||
}
|
||||
|
||||
|
||||
if (mode != 3) {
|
||||
message = "未联机";
|
||||
if (mode != 3 || requireSucess) {
|
||||
message = "未联机或已修改";
|
||||
|
||||
} else if (error != 0) {
|
||||
message = "有报警";
|
||||
@@ -417,8 +417,10 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme
|
||||
HashMap map = new HashMap();
|
||||
switch (command) {
|
||||
case 0:
|
||||
applyTask();
|
||||
requireSucess = true;
|
||||
boolean b = applyTask();
|
||||
if (b) {
|
||||
requireSucess = true;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
message = "取货中";
|
||||
@@ -429,13 +431,13 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme
|
||||
String next_device_code = instruction.getNext_device_code();
|
||||
Device nextDevice = deviceAppService.findDeviceByCode(next_device_code);
|
||||
if (StrUtil.equals(nextDevice.getDevice_type(), DeviceType.conveyor.name())) {
|
||||
if (ObjectUtil.isNotEmpty(nextDevice.getExtraValue().get("z")) && "z".equals(nextDevice.getExtraValue().get("z"))) {
|
||||
if (ObjectUtil.isNotEmpty(nextDevice.getExtraValue().get("z"))) {
|
||||
map.put("to_x", nextDevice.getExtraValue().get("z"));
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(nextDevice.getExtraValue().get("x")) && "x".equals(nextDevice.getExtraValue().get("x"))) {
|
||||
if (ObjectUtil.isNotEmpty(nextDevice.getExtraValue().get("x"))) {
|
||||
map.put("to_z", nextDevice.getExtraValue().get("x"));
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(nextDevice.getExtraValue().get("y")) && "y".equals(nextDevice.getExtraValue().get("y"))) {
|
||||
if (ObjectUtil.isNotEmpty(nextDevice.getExtraValue().get("y"))) {
|
||||
map.put("to_y", nextDevice.getExtraValue().get("y"));
|
||||
}
|
||||
}
|
||||
@@ -620,13 +622,13 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme
|
||||
map.put("to_task", inst.getInstruction_code());
|
||||
|
||||
if (StrUtil.equals(startDevice.getDevice_type(), DeviceType.conveyor.name())) {
|
||||
if (ObjectUtil.isNotEmpty(startDevice.getExtraValue().get("x")) && "x".equals(startDevice.getExtraValue().get("x"))) {
|
||||
if (ObjectUtil.isNotEmpty(startDevice.getExtraValue().get("x"))) {
|
||||
map.put("to_x", startDevice.getExtraValue().get("x"));
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(startDevice.getExtraValue().get("z")) && "z".equals(startDevice.getExtraValue().get("z"))) {
|
||||
if (ObjectUtil.isNotEmpty(startDevice.getExtraValue().get("z"))) {
|
||||
map.put("to_z", startDevice.getExtraValue().get("z"));
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(startDevice.getExtraValue().get("y")) && "y".equals(startDevice.getExtraValue().get("y"))) {
|
||||
if (ObjectUtil.isNotEmpty(startDevice.getExtraValue().get("y"))) {
|
||||
map.put("to_y", startDevice.getExtraValue().get("y"));
|
||||
}
|
||||
}
|
||||
@@ -644,7 +646,7 @@ public class StandardStackerDeviceDriver extends AbstractOpcDeviceDriver impleme
|
||||
this.writing(map);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -780,7 +780,7 @@ public class TaskServiceImpl extends CommonServiceImpl<TaskMapper, Task> impleme
|
||||
throw new BadRequestException(LangProcess.msg("task_checkExist",device_code));
|
||||
}
|
||||
if (StrUtil.equals(material_type, "") || StrUtil.equals(quantity, "")) {
|
||||
throw new RuntimeException("请填写物料信息!");
|
||||
throw new RuntimeException(LangProcess.msg("material_information"));
|
||||
}
|
||||
dto.setStart_device_code(device_code);
|
||||
dto.setStart_point_code(device_code);
|
||||
@@ -805,7 +805,7 @@ public class TaskServiceImpl extends CommonServiceImpl<TaskMapper, Task> impleme
|
||||
JSONArray array2 = json.getJSONArray("data2");
|
||||
JSONArray array3 = json.getJSONArray("data3");
|
||||
if (array.size() != 0 && array3.size() != 0) {
|
||||
throw new RuntimeException("只能选择一个终点");
|
||||
throw new RuntimeException(LangProcess.msg("an_endpoint"));
|
||||
}
|
||||
|
||||
for (int i = 0; i < array2.size(); i++) {
|
||||
@@ -1515,10 +1515,10 @@ public class TaskServiceImpl extends CommonServiceImpl<TaskMapper, Task> impleme
|
||||
// 如果point_device为货架,则不包含列层信息,需要重新拼接
|
||||
if (StrUtil.equals("storage", start_device)) {
|
||||
if (StrUtil.isEmpty(task.getFrom_x())) {
|
||||
throw new BadRequestException("货位信息起点需要包含列信息");
|
||||
throw new BadRequestException(LangProcess.msg("start_point_column"));
|
||||
}
|
||||
if (StrUtil.isEmpty(task.getFrom_y())) {
|
||||
throw new BadRequestException("货位信息起点需要包含层信息");
|
||||
throw new BadRequestException(LangProcess.msg("start_point_layer"));
|
||||
}
|
||||
if (Integer.parseInt(task.getFrom_y()) < 10 && task.getFrom_y().length() == 1) {
|
||||
from_y = "0" + task.getFrom_y();
|
||||
@@ -1578,10 +1578,10 @@ public class TaskServiceImpl extends CommonServiceImpl<TaskMapper, Task> impleme
|
||||
.name();
|
||||
if (StrUtil.equals("storage", next_device)) {
|
||||
if (StrUtil.isEmpty(task.getTo_x())) {
|
||||
throw new BadRequestException("货位信息终点需要包含列信息");
|
||||
throw new BadRequestException(LangProcess.msg("endpoint_column"));
|
||||
}
|
||||
if (StrUtil.isEmpty(task.getTo_y())) {
|
||||
throw new BadRequestException("货位信息终点需要包含层信息");
|
||||
throw new BadRequestException(LangProcess.msg("endpoint_layer"));
|
||||
}
|
||||
if (Integer.parseInt(task.getTo_y()) < 10 && task.getTo_y().length() == 1) {
|
||||
to_y = "0" + task.getTo_y();
|
||||
|
||||
@@ -73,7 +73,8 @@ public class CreateDDJInst {
|
||||
RouteLineDto routeLineDto = (RouteLineDto) list.get(0);
|
||||
String[] path = routeLineDto.getPath().split("->");
|
||||
List<String> pathlist = Arrays.asList(path);
|
||||
if (pathlist.size() < 3 || pathlist.get(1).equals(DeviceType.stacker.name())) {
|
||||
String deviceType = appService.findDeviceByCode(pathlist.get(1)).getDevice_type();
|
||||
if (pathlist.size() < 3 || (!deviceType.equals(DeviceType.stacker.name()))) {
|
||||
return;
|
||||
}
|
||||
Device deviceByCode = appService.findDeviceByCode(pathlist.get(1));
|
||||
@@ -128,6 +129,46 @@ public class CreateDDJInst {
|
||||
|
||||
String start_height = taskDto.getStart_height();
|
||||
String next_height = taskDto.getNext_height();
|
||||
/**
|
||||
* 开始平均分配
|
||||
*/
|
||||
String this_coevice_code = taskserver.queryAssignedByDevice(start_device_code, next_device_code);
|
||||
if (StrUtil.isEmpty(this_coevice_code)) {
|
||||
List<RouteLineDto> shortPathsList = routeLineService.getShortPathLines(start_device_code, next_device_code, route_plan_code);
|
||||
RouteLineDto routeLineDto1 = shortPathsList.get(0);
|
||||
|
||||
String path1 = routeLineDto1.getPath();
|
||||
String type1 = routeLineDto1.getType();
|
||||
String[] str = path1.split("->");
|
||||
|
||||
List<String> pathlist1 = Arrays.asList(str);
|
||||
int index = 0;
|
||||
for (int m = 0; m < pathlist1.size(); m++) {
|
||||
String deviceType1 = appService.findDeviceByCode(pathlist1.get(m)).getDevice_type();
|
||||
if(deviceType1.equals(DeviceType.stacker.name())){
|
||||
index = m + 1;
|
||||
break;
|
||||
}
|
||||
/*if (pathlist1.get(m).equals(start_device_code)) {
|
||||
|
||||
}*/
|
||||
}
|
||||
next_device_code = pathlist1.get(index);
|
||||
} else {
|
||||
next_device_code = this_coevice_code;
|
||||
}
|
||||
//校验路由关系
|
||||
List<RouteLineDto> shortPathsList = routeLineService.getShortPathLines(start_device_code, next_device_code, route_plan_code);
|
||||
if (ObjectUtils.isEmpty(shortPathsList) || shortPathsList.size()<1) {
|
||||
throw new RuntimeException("路由不通!");
|
||||
}
|
||||
// Device startdevice = appService.findDeviceByCode(start_device_code);
|
||||
// Device nextdevice = appService.findDeviceByCode(next_device_code);
|
||||
if (StrUtil.equals(appService.findDeviceTypeByCode(next_device_code), "storage")) {
|
||||
next_point_code = next_device_code + "-" + taskDto.getTo_y() + "-" + taskDto.getTo_z();
|
||||
} else {
|
||||
next_point_code = next_device_code;
|
||||
}
|
||||
//单台堆垛机最多只能创建固定数量指令
|
||||
Instruction instruction = new Instruction();
|
||||
instruction.setInstruction_status("1");
|
||||
@@ -234,7 +275,7 @@ public class CreateDDJInst {
|
||||
String[] path1 = routeLineDto1.getPath().split("->");
|
||||
List<String> pathlist1 = Arrays.asList(path1);
|
||||
if (pathlist1.size() < 3 || pathlist1.get(1).equals(DeviceType.stacker.name())) {
|
||||
return;
|
||||
//return;
|
||||
}
|
||||
if (pathlist1.get(1).equals(pathlist.get(1))) {
|
||||
max++;
|
||||
|
||||
@@ -3,3 +3,12 @@ task_insHas=指令已存在
|
||||
task_insRun=有指令未完成
|
||||
task_isNull={0}查询信息不存在
|
||||
starting_point_isNull=请选择起点
|
||||
endpoint_layer=货位信息终点需要包含层信息
|
||||
endpoint_column=货位信息终点需要包含列信息
|
||||
start_point_layer=货位信息起点需要包含层信息
|
||||
start_point_column=货位信息起点需要包含列信息
|
||||
an_endpoint=只能选择一个终点
|
||||
material_information=请填写物料信息
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -3,3 +3,9 @@ task_insHas=Instruction already exists
|
||||
task_insRun=There are instructions that are not completed
|
||||
task_isNull={0}query is null
|
||||
starting_point_isNull = Please select starting point
|
||||
endpoint_layer=The destination of the storage location information needs to include the floor information
|
||||
endpoint_column=The location information endpoint needs to contain column information
|
||||
start_point_layer=The starting point of the storage location information needs to include the floor information
|
||||
start_point_column=The starting point of the storage location information needs to contain column information
|
||||
an_endpoint=Only one endpoint can be selected
|
||||
material_information=Please fill in the material information!
|
||||
|
||||
@@ -3,3 +3,9 @@ task_insHas=Instruksi sudah ada
|
||||
task_insRun=Ada instruksi yang belum selesai
|
||||
task_isNull={0}Pertanyaan Tidak ada
|
||||
starting_point_isNull = Silakan pilih titik awal
|
||||
endpoint_layer=Tujuan informasi lokasi penyimpanan perlu mencakup informasi lantai.
|
||||
endpoint_column=Tujuan informasi lokasi penyimpanan perlu mencakup informasi kolom.
|
||||
start_point_layer=Titik awal perlu mencakup informasi lantai.
|
||||
start_point_column=Titik awal perlu mencakup informasi kolom.
|
||||
an_endpoint=Hanya satu tujuan yang dapat dipilih.
|
||||
material_information=Silakan isi informasi material!
|
||||
|
||||
@@ -2,3 +2,10 @@ task_checkExist={0}任务已存在
|
||||
task_insHas=指令已存在
|
||||
task_insRun=有指令未完成
|
||||
task_isNull={0}查询信息不存在
|
||||
starting_point_isNull=请选择起点
|
||||
endpoint_layer=货位信息终点需要包含层信息
|
||||
endpoint_column=货位信息终点需要包含列信息
|
||||
start_point_layer=货位信息起点需要包含层信息
|
||||
start_point_column=货位信息起点需要包含列信息
|
||||
an_endpoint=只能选择一个终点
|
||||
material_information=请填写物料信息
|
||||
|
||||
Reference in New Issue
Block a user