Browse Source

注释

master
常熟吴彦祖 2 months 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> 特殊站点说明 - D1D2立库站点</b></p>
* <pre>
* D1D2是立库管理的特殊站点与普通站点的处理逻辑不同
*
* 1. 状态管理
* - D1D2的实际状态由立库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.待取货
*
* 特殊说明 - D1D2立库站点
* - D1D2的实际状态由立库PLC管理WMS只做相对记录
* - WMS不对D1D2的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
// D1D2是立库管理的特殊站点实际状态由立库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