Browse Source

add:堆垛机任务数量控制

master
耿宝印 2 months ago
parent
commit
a4b329d912
  1. 6
      nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/conveyor/appearance_inspection_scannner_conveyor/AppearanceInspectionScannerConveyorDeviceDriver.java
  2. 4
      nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/stacker/double_stacker/enums/ErrorEnum.java
  3. 2
      nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java
  4. 17
      nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java
  5. 3
      nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java
  6. 10
      nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java
  7. 13
      nladmin-ui/src/views/acs/device/driver/appearance_inspection_scanner_conveyor_device.vue

6
nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/conveyor/appearance_inspection_scannner_conveyor/AppearanceInspectionScannerConveyorDeviceDriver.java

@ -696,7 +696,13 @@ public class AppearanceInspectionScannerConveyorDeviceDriver extends AbstractOpc
this.requireTime = currentTimeMillis;
LOCK.lock();
try {
List<TaskDto> taskDtoBusys = taskService.findInstsByNextDeviceCode(deviceCode);
Device cacheDevice = deviceAppService.findDeviceByCode(deviceCode);
Integer maxInstNum = Optional.ofNullable(cacheDevice.getExtraValue().get("maxInstNum")).map(Object::toString).map(Integer::parseInt).orElse(2);
if (taskDtoBusys.size() >= maxInstNum) {
this.unExecutedMessage = "查询出库任务,当前终点: " + deviceCode + ", 指令数量大于设定最大值: " + maxInstNum;
return;
}
List<String> checkoutStartDeviceCode = new ArrayList<>();
if (cacheDevice.getDeviceDriver() instanceof AppearanceInspectionScannerConveyorDeviceDriver) {
AppearanceInspectionScannerConveyorDeviceDriver appearanceInspectionScannerConveyorDeviceDriver = (AppearanceInspectionScannerConveyorDeviceDriver) cacheDevice.getDeviceDriver();

4
nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/stacker/double_stacker/enums/ErrorEnum.java

@ -49,7 +49,9 @@ public enum ErrorEnum {
ERROR_35(35, "减速开关信号异常"),
ERROR_36(36, "防撞开关被触碰"),
ERROR_37(37, "防撞激光被遮挡"),
ERROR_38(38, "高货物禁止放入矮库位");
ERROR_38(38, "高货物禁止放入矮库位"),
ERROR_40(40, "水平定位曲线故障"),
ERROR_41(41, "起升定位曲线故障");
private int code;
private String desc;

2
nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java

@ -589,4 +589,6 @@ public interface InstructionService extends CommonService<InstructionMybatis> {
List<Instruction> findReadyInstByXDeviceCode(List<String> xDeviceCodeList, String noY);
Instruction findByNextPointCode(String nextPointCode);
List<Instruction> findInstsByNextDeviceCode(String deviceCode);
}

17
nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java

@ -1031,7 +1031,7 @@ public class InstructionServiceImpl extends CommonServiceImpl<InstructionMapper,
instdto.setPriority(acsTask.getPriority());
instdto.setInstruction_status(InstructionStatusEnum.READY.getIndex());
instdto.setExecute_device_code(dto.getNext_device_code());
if (StrUtil.equals(instdto.getStart_device_code(),"3204")){
if (StrUtil.equals(instdto.getStart_device_code(), "3204")) {
instdto.setInstruction_type(InstTypeEnum.CTU_IN_TASK.getCode());
instdto.setAgv_system_type(AgvSystemTypeEnum.HK_SYSTEM_TYPE.getCode());
}
@ -1599,10 +1599,10 @@ public class InstructionServiceImpl extends CommonServiceImpl<InstructionMapper,
if (inst == null) {
throw new BadRequestException("指令不存在");
}
if (!StrUtil.equals(inst.getSend_status(),"2")){
if (!StrUtil.equals(inst.getSend_status(), "2")) {
throw new BadRequestException("该指令已成功执行,重新下发失败!");
}
if (StrUtil.equals(inst.getAgv_system_type(),AgvSystemTypeEnum.XG_SYSTEM_TYPE.getCode())){
if (StrUtil.equals(inst.getAgv_system_type(), AgvSystemTypeEnum.XG_SYSTEM_TYPE.getCode())) {
UnifiedResponse<JSONObject> resp = xiangGongAgvService.sendOrderSequencesToXZ(inst);
if (!resp.isSuccess()) {
inst.setRemark(resp.getMessage());
@ -1610,7 +1610,7 @@ public class InstructionServiceImpl extends CommonServiceImpl<InstructionMapper,
} else {
inst.setSend_status("1");
}
} else if (StrUtil.equals(inst.getAgv_system_type(),AgvSystemTypeEnum.HK_SYSTEM_TYPE.getCode())){
} else if (StrUtil.equals(inst.getAgv_system_type(), AgvSystemTypeEnum.HK_SYSTEM_TYPE.getCode())) {
List<Map<String, String>> positionCodePath = new ArrayList<>();
if (StrUtil.equals(InstTypeEnum.CTU_IN_TASK.getCode(), inst.getInstruction_type())) {
StorageCell storageCell = storageCellService.getOne(new LambdaQueryWrapper<StorageCell>().eq(StorageCell::getStorage_code, inst.getNext_point_code()));
@ -2406,4 +2406,13 @@ public class InstructionServiceImpl extends CommonServiceImpl<InstructionMapper,
.orElse(null);
}
@Override
public List<Instruction> findInstsByNextDeviceCode(String deviceCode) {
return Optional.ofNullable(this.instructions)
.orElse(new CopyOnWriteArrayList<>())
.stream()
.filter(inst -> inst.getNext_device_code().equals(deviceCode))
.collect(Collectors.toList());
}
}

3
nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java

@ -408,4 +408,7 @@ public interface TaskService extends CommonService<Task> {
TaskDto findFrontBindTask(TaskDto frontTask, String backNoY);
void cancelNoSendWms(String task_id);
List<TaskDto> findInstsByNextDeviceCode(String deviceCode);
}

10
nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java

@ -1535,4 +1535,14 @@ public class TaskServiceImpl extends CommonServiceImpl<TaskMapper, Task> impleme
//移除任务缓存信息
this.removeByCodeFromCache(entity.getTask_code());
}
@Override
public List<TaskDto> findInstsByNextDeviceCode(String deviceCode) {
return Optional.ofNullable(this.tasks)
.orElse(new CopyOnWriteArrayList<>())
.stream()
.filter(taskDto -> taskDto.getNext_device_code().equals(deviceCode))
.filter(taskDto -> taskDto.getTask_status().equals(TaskStatusEnum.BUSY.getIndex()))
.collect(Collectors.toList());
}
}

13
nladmin-ui/src/views/acs/device/driver/appearance_inspection_scanner_conveyor_device.vue

@ -204,8 +204,14 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="自动申请AGV任务:" label-width="150px">
<el-switch v-model="form.applyTask" />
<el-form-item label="最大指令数量:" label-width="100px">
<!-- <el-switch v-model="form.applyTask" />-->
<el-input
v-model.number="form.maxInstNum"
type="number"
:min="1"
:step="1"
/>
</el-form-item>
</el-col>
</span>
@ -512,7 +518,8 @@ export default {
samePoint: false,
scanApplyTask: false,
applyTask: false,
isFront: false
isFront: false,
maxInstNum: 1
},
rules: {}
}

Loading…
Cancel
Save