Browse Source

注释

master
常熟吴彦祖 1 year ago
parent
commit
79967134c7
  1. 27
      src/main/java/com/gaotao/modules/automatedWarehouse/entity/AgvStation.java
  2. 16
      src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/AgvTaskServiceImpl.java

27
src/main/java/com/gaotao/modules/automatedWarehouse/entity/AgvStation.java

@ -33,6 +33,28 @@ import java.math.BigDecimal;
* 3. 比对 handling_unit.warehouse_id(条码仓库)
* 4. 如果相同则允许扫进,否则报错
* </pre>
*
* <p><b>⚠️ 特殊站点说明 - D1、D2立库站点:</b></p>
* <pre>
* D1、D2是立库管理的特殊站点,与普通站点的处理逻辑不同:
*
* 1. 状态管理:
* - D1、D2的实际状态由立库PLC管理
* - WMS的status_db字段只做相对记录,不做严格校验
* - 不需要使用乐观锁严格校验状态
*
* 2. 动态分配机制:
* - AGV到达D1/D2旁边的等待位时,触发"等待询问"回调
* - WMS调用立库接口warehouseAskStation()询问实际可用站点
* - 立库PLC返回D1或D2(根据实际状态决定)
* - WMS通知AGV修改放货点到立库返回的站点
*
* 3. 代码处理:
* - 起始站点(from_location)如果是D1/D2:直接UPDATE状态,不使用乐观锁
* - 目标站点(to_location)如果是D1/D2:预约时使用乐观锁,等待询问时动态分配
* - 普通站点(其他站点):必须使用乐观锁严格校验
*
*/
@Data
@TableName("agv_station")
@ -109,6 +131,11 @@ public class AgvStation {
/**
* 站点状态数据库值
* 值为0:空闲 1.有货 2.待放货 3.待取货
*
* ⚠️ 特殊说明 - D1、D2立库站点:
* - D1、D2的实际状态由立库PLC管理,WMS只做相对记录
* - WMS不对D1、D2的status_db做严格校验
* - 通过"等待询问"机制实现动态分配 - rqrq
*/
private Integer statusDb;

16
src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/AgvTaskServiceImpl.java

@ -238,15 +238,19 @@ public class AgvTaskServiceImpl implements AgvTaskService {
String station = null;
log.info("开始处理等待询问回调 - rqrq:目标站点={}", checkTask.getToLocation());
// 判断是否为立库站点D1或D2 - rqrq
// ⚠️ 判断是否为立库站点D1或D2 - rqrq
// D1、D2是立库管理的特殊站点,实际状态由立库PLC管理
// WMS通过"等待询问"机制实现动态分配 - rqrq
if(checkTask.getToLocation().equals("D1") || checkTask.getToLocation().equals("D2")){
log.info("目标站点为立库站点,询问立库分配放货点 - rqrq");
// 更新原目标站点状态为空闲 - rqrq
// 1. 释放WMS的原目标站点状态记录 - rqrq
// 注:此处只是释放WMS的状态记录,不影响立库PLC的实际状态 - rqrq
wcsIntegrationMapper.updateAgvStationStatus(checkTask.getToLocation(), 0, "空闲");
log.info("原目标站点{}状态已更新为空闲 - rqrq", checkTask.getToLocation());
log.info("原目标站点{}状态已更新为空闲(WMS相对记录)- rqrq", checkTask.getToLocation());
// 询问立库分配放货点 - rqrq
// 2. 询问立库PLC分配实际可用的放货点 - rqrq
// 立库PLC根据实际状态返回D1或D2 - rqrq
WarehouseAskStation askStation = new WarehouseAskStation();
askStation.setTaskNo(checkTask.getTaskNo());
askStation.setItemNo(checkTask.getItemNo());
@ -259,9 +263,9 @@ public class AgvTaskServiceImpl implements AgvTaskService {
throw new RuntimeException("立库返回放货点有误!!");
}
// 更新立库返回的站点状态为待放货 - rqrq
// 3. 更新立库返回的站点状态为待放货(WMS相对记录)- rqrq
wcsIntegrationMapper.updateAgvStationStatus(station, 2, "待放货");
log.info("立库返回站点{},状态已更新为待放货 - rqrq", station);
log.info("立库返回站点{},状态已更新为待放货(WMS相对记录)- rqrq", station);
} else {
// 非立库站点,查询原目标点状态 - rqrq

Loading…
Cancel
Save