no message

main
HUOJIN\92525 2025-03-03 17:18:59 +08:00
parent 09224ef6ef
commit 48efc8430a
9 changed files with 80 additions and 26 deletions

View File

@ -434,11 +434,11 @@ public class BydAppServiceImpl implements BydAppService {
throw new BadRequestException(dstStockCode + "目标托盘没有在" + areaName); throw new BadRequestException(dstStockCode + "目标托盘没有在" + areaName);
} }
if (BizStatus.XJ.equals(task.getItemKey().getItem().getGoodType())) { /* if (BizStatus.XJ.equals(task.getItemKey().getItem().getGoodType())) {
if (!dstStockCode.equals(pick.getStock())) { if (!dstStockCode.equals(pick.getStock())) {
throw new BadRequestException(pick.getGdCode() + "工单只能放入同一个货架! 请放入" + pick.getCode() + "货架!"); throw new BadRequestException(pick.getGdCode() + "工单只能放入同一个货架! 请放入" + pick.getCode() + "货架!");
} }
} }*/
return dstStock; return dstStock;
} }

View File

@ -128,6 +128,16 @@ public interface AgvTaskService {
*/ */
Boolean findByEndSlotCode(String endSlotCode, String type, String jobType); Boolean findByEndSlotCode(String endSlotCode, String type, String jobType);
/**
*
*
* @param endSlotCode
* @param type
* @param jobType
*/
Boolean isByFxEndSlotCode(String endSlotCode, String type, String jobType);
/** /**
* *
* *

View File

@ -166,6 +166,18 @@ public class AgvTaskServiceImpl implements AgvTaskService {
return agvTaskList.isEmpty(); return agvTaskList.isEmpty();
} }
@Override
public Boolean isByFxEndSlotCode(String endSlotCode, String type, String jobType) {
String hql = "select COUNT(agv.id) from AgvTask agv " +
" where agv.endSlotCode='" + endSlotCode + "' " +
" and agv.type='" + type + "' " +
" and agv.jobType='" + jobType + "' " +
" and agv.status not in ('OPEN','FINISH','CANCEL') ";
Query query = entityMapper.createQuery(hql);
Long count = (Long) query.getSingleResult();
return count<2;
}
@Override @Override
public Boolean findByCcEndSlotCode(String endSlotCode, String type, String jobType) { public Boolean findByCcEndSlotCode(String endSlotCode, String type, String jobType) {
String hql = " from AgvTask agv " + String hql = " from AgvTask agv " +

View File

@ -773,24 +773,29 @@ public class KMReServiceImpl implements KMReService {
*/ */
private void handleJl(Stock stock, Point endPoint, AgvTask agvTask) { private void handleJl(Stock stock, Point endPoint, AgvTask agvTask) {
// 查询与当前 AGV 任务关联的任务列表
List<Task> taskList = taskService.findTaskByCallAgvTask(agvTask.getId()); List<Task> taskList = taskService.findTaskByCallAgvTask(agvTask.getId());
// 根据任务中的物料类型,确定对应的区域名称列表
List<String> areaNames = taskList.stream() List<String> areaNames = taskList.stream()
.map(task -> task.getItemKey().getItem()) .map(task -> {
.map(item -> BizStatus.XJ.equals(item.getGoodType()) ? AreaNameDic.XJFBCQ : AreaNameDic.DJFBCQ) Item item = task.getItemKey().getItem();
return BizStatus.XJ.equals(item.getGoodType()) ? AreaNameDic.XJFBCQ : AreaNameDic.DJFBCQ;
})
.collect(Collectors.toList()); .collect(Collectors.toList());
List<Inventory> allInventories = new ArrayList<>();
for (String areaName : areaNames) { // 查询所有区域的库存列表
List<Inventory> inventoryList = inventoryRepository.queryInventory(stock.getId(), null, null, areaName, stock.getDept().getId()); List<Inventory> allInventories = areaNames.stream()
allInventories.addAll(inventoryList); .flatMap(areaName -> inventoryRepository.queryInventory(stock.getId(), null, null, areaName, stock.getDept().getId()).stream())
} .collect(Collectors.toList());
// 删除所有查询到的库存
// 如果库存列表不为空,删除所有库存记录
if (!allInventories.isEmpty()) { if (!allInventories.isEmpty()) {
inventoryRepository.deleteAll(allInventories); inventoryRepository.deleteAll(allInventories);
} }
for (Task task : taskList) {
//回传MES // 回传 MES
pickService.returnPickByTask(task); taskList.forEach(pickService::returnPickByTask);
}
//点位占用 //点位占用
pointService.usedPoint(endPoint); pointService.usedPoint(endPoint);
@ -798,26 +803,43 @@ public class KMReServiceImpl implements KMReService {
//容器占用 //容器占用
stockService.usedStock(stock, endPoint, BaseStatus.USED); stockService.usedStock(stock, endPoint, BaseStatus.USED);
// 根据叫料单号查找 Pick 对象
Pick pick = pickService.findByPickCode(agvTask.getLineSlotCode()); Pick pick = pickService.findByPickCode(agvTask.getLineSlotCode());
// 刷新 Pick 对象的状态
pickService.refreshPickStatus(pick); pickService.refreshPickStatus(pick);
//清空叫料点,等待下一次叫料 //清空叫料点,等待下一次叫料
updateCallPoint(pick, endPoint);
}
/**
* Pick
*
* @param pick Pick
* @param endPoint
*/
private void updateCallPoint(Pick pick, Point endPoint) {
// 将叫料点字符串拆分为集合
Set<String> endPointList = new HashSet<>(Arrays.asList(pick.getCallPoint().split(","))); Set<String> endPointList = new HashSet<>(Arrays.asList(pick.getCallPoint().split(",")));
// 移除结束点位的代码
boolean isRemoved = endPointList.remove(endPoint.getCode()); boolean isRemoved = endPointList.remove(endPoint.getCode());
if (isRemoved) { if (isRemoved) {
String result = endPointList.stream().collect(Collectors.joining(", ")); // 将剩余的叫料点代码用逗号连接成字符串
String result = endPointList.stream().collect(Collectors.joining(","));
if (!result.isEmpty()) { if (!result.isEmpty()) {
// 更新叫料点信息,设置为还有叫料
pick.setCallPoint(result); pick.setCallPoint(result);
pick.setIsCall(true); pick.setIsCall(true);
pickService.update(pick);
} else { } else {
// 清空叫料点信息,设置为无叫料
pick.setCallPoint(null); pick.setCallPoint(null);
pick.setIsCall(false); pick.setIsCall(false);
pickService.update(pick);
} }
// 更新 Pick 对象
pickService.update(pick);
} }
} }
/** /**

View File

@ -360,10 +360,6 @@ public class MesServiceImpl implements MesService {
return srcPointCode + "点位不存在,请核实!"; return srcPointCode + "点位不存在,请核实!";
} }
// 验证终点是否有任务
if (!agvTaskService.isEndPointAvailable(dstPointCode, BizStatus.Fx_Off_Line, "ROLLER_MOVE")) {
return dstPointCode + "点位有任务,请稍后再试!";
}
// 生成任务 // 生成任务
AgvTask agvTask = agvTaskService.createAgvTask(BizStatus.Fx_Off_Line, null, srcPointCode, dstPointCode, "ROLLER_MOVE"); AgvTask agvTask = agvTaskService.createAgvTask(BizStatus.Fx_Off_Line, null, srcPointCode, dstPointCode, "ROLLER_MOVE");

View File

@ -279,6 +279,7 @@ public class TaskServiceImpl implements TaskService {
agvTask.setLineSlotCode(pick.getCode()); agvTask.setLineSlotCode(pick.getCode());
agvTaskService.update(agvTask);*/ agvTaskService.update(agvTask);*/
List<String> endPoints = getValuesFromMap(endPointList, pointMap); List<String> endPoints = getValuesFromMap(endPointList, pointMap);
int taskCount = 0;
for (Task task : taskList) { for (Task task : taskList) {
for (String endPointCode : endPoints) { for (String endPointCode : endPoints) {
if (agvTaskService.isEndPointAvailable(endPointCode, BizStatus.CALL_PICK, "RACK_MOVE")) { if (agvTaskService.isEndPointAvailable(endPointCode, BizStatus.CALL_PICK, "RACK_MOVE")) {
@ -288,9 +289,17 @@ public class TaskServiceImpl implements TaskService {
task.setCallAgvTaskId(agvTask.getId()); task.setCallAgvTaskId(agvTask.getId());
taskRepository.save(task); taskRepository.save(task);
} }
taskCount++;
if (taskCount >= taskList.size()) {
break; // 当处理的任务数量达到 taskList 的长度时,跳出内层循环
}
}
if (taskCount >= taskList.size()) {
break; // 当处理的任务数量达到 taskList 的长度时,跳出外层循环
} }
} }
} }
public static List<String> getValuesFromMap(Set<String> endPointList, Map<String, Point> map) { public static List<String> getValuesFromMap(Set<String> endPointList, Map<String, Point> map) {

View File

@ -50,6 +50,11 @@ public class fxTask {
} }
private void processAgvTask(AgvTask agvTask) { private void processAgvTask(AgvTask agvTask) {
kmReService.sendAgvTask(agvTask, kmReService.sendAgvTaskGtJson(agvTask)); if(agvTaskService.isByFxEndSlotCode(agvTask.getEndSlotCode(), BizStatus.Fx_Off_Line,"ROLLER_MOVE")){
kmReService.sendAgvTask(agvTask, kmReService.sendAgvTaskGtJson(agvTask));
}else{
throw new BadRequestException("任务排队中");
}
} }
} }

View File

@ -49,7 +49,7 @@ public class pickTask {
*/ */
public void allocatePick() { public void allocatePick() {
List<String> statuses = Arrays.asList(BizStatus.OPEN, BizStatus.ASSIGN, BizStatus.PICKUP); List<String> statuses = Arrays.asList(BizStatus.OPEN, BizStatus.ASSIGN, BizStatus.PICKUP);
List<Pick> pickList = pickService.findByPickStatus(statuses, null); List<Pick> pickList = pickService.findByPickStatus(statuses, true);
if (pickList.isEmpty()) { if (pickList.isEmpty()) {
throw new BadRequestException("无待分配的成品出库单,分配失败!"); throw new BadRequestException("无待分配的成品出库单,分配失败!");
} }

View File

@ -26,7 +26,7 @@ public class EladminSystemApplicationTests {
// 创建一个 HashSet 实例 // 创建一个 HashSet 实例
Set<String> hashSet = new HashSet<>(); Set<String> hashSet = new HashSet<>();
// 向集合中添加元素 // 向集合中添加元素
hashSet.add("QXJL001"); hashSet.add("QXJL002");
hashSet.add("QXJL002"); hashSet.add("QXJL002");
// 打印原始集合 // 打印原始集合