|
|
|
@ -1,6 +1,7 @@ |
|
|
|
package com.gaotao.modules.autoWareHourceHaian.api.service.impl; |
|
|
|
|
|
|
|
import com.alibaba.fastjson2.JSONObject; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.gaotao.modules.autoWareHourceHaian.api.entity.HaiAnAgvCallbackRequest; |
|
|
|
import com.gaotao.modules.autoWareHourceHaian.api.entity.HaiAnPickingFeedbackRequest; |
|
|
|
import com.gaotao.modules.autoWareHourceHaian.api.entity.HaiAnRfidCountVerifyCallbackRequest; |
|
|
|
@ -8,30 +9,51 @@ import com.gaotao.modules.autoWareHourceHaian.api.entity.HaiAnRfidLongMenCallbac |
|
|
|
import com.gaotao.modules.autoWareHourceHaian.api.entity.HaiAnRobotErrorRequest; |
|
|
|
import com.gaotao.modules.autoWareHourceHaian.api.entity.HaiAnWcsInboundCallbackRequest; |
|
|
|
import com.gaotao.modules.autoWareHourceHaian.api.service.HaiAnWmsMessageService; |
|
|
|
import com.gaotao.modules.autoWareHourceHaian.entity.HaiAnBufferZoneConfig; |
|
|
|
import com.gaotao.modules.autoWareHourceHaian.entity.pda.HaiAnAreaOption; |
|
|
|
import com.gaotao.modules.autoWareHourceHaian.entity.vo.HaiAnWcsCallbackTask; |
|
|
|
import com.gaotao.modules.autoWareHourceHaian.mapper.HaiAnPdaAutoWarehouseMapper; |
|
|
|
import com.gaotao.modules.autoWareHourceHaian.service.HaiAnInterfaceCallLogService; |
|
|
|
import com.gaotao.modules.autoWareHourceHaian.service.HaiAnSysErrorLogService; |
|
|
|
import com.gaotao.modules.autoWareHourceHaian.service.HaiAnWcsCallbackTaskService; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.util.StringUtils; |
|
|
|
|
|
|
|
import java.util.Date; |
|
|
|
import java.util.UUID; |
|
|
|
|
|
|
|
/** |
|
|
|
* @author rqrq |
|
|
|
* @Description 海安WMS消息接收服务实现,先搭建异常与日志框架,具体业务处理后续按接口联调细化 - rqrq |
|
|
|
* @Description 海安WMS消息接收服务实现,统一处理接口日志、异常日志与关键回调落库逻辑 - rqrq |
|
|
|
*/ |
|
|
|
@Slf4j |
|
|
|
@Service("haiAnWmsMessageService") |
|
|
|
public class HaiAnWmsMessageServiceImpl implements HaiAnWmsMessageService { |
|
|
|
|
|
|
|
/** |
|
|
|
* WCS回调任务初始状态:已录入,等待后续任务处理 - rqrq |
|
|
|
*/ |
|
|
|
private static final String CALLBACK_STATUS_INPUT = "已录入"; |
|
|
|
/** |
|
|
|
* WCS回调任务初始重试次数,首次入库固定为0 - rqrq |
|
|
|
*/ |
|
|
|
private static final Integer CALLBACK_DEFAULT_RETRY_COUNT = 0; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private HaiAnInterfaceCallLogService haiAnInterfaceCallLogService; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private HaiAnSysErrorLogService haiAnSysErrorLogService; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private HaiAnWcsCallbackTaskService haiAnWcsCallbackTaskService; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private HaiAnPdaAutoWarehouseMapper haiAnPdaAutoWarehouseMapper; |
|
|
|
|
|
|
|
/** |
|
|
|
* @author rqrq |
|
|
|
* @Description 统一规范site入参,缺失时回落54用于日志完整性,避免日志主键为空 - rqrq |
|
|
|
@ -94,7 +116,7 @@ public class HaiAnWmsMessageServiceImpl implements HaiAnWmsMessageService { |
|
|
|
|
|
|
|
/** |
|
|
|
* @author rqrq |
|
|
|
* @Description 处理立库出入库状态回调:当前仅完成日志/异常框架,业务落库与状态流转后续补充 - rqrq |
|
|
|
* @Description 处理海安立库出入库回调:按事务类型分流落库,取货通知执行幂等校验,目标区域固定A01并映射仓库/库位 - rqrq |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
@ -113,10 +135,47 @@ public class HaiAnWmsMessageServiceImpl implements HaiAnWmsMessageService { |
|
|
|
businessKey, |
|
|
|
"海安立库出入库状态回调" |
|
|
|
); |
|
|
|
String messageId = generateMessageId("HAIAN_WCS_WH"); |
|
|
|
// TODO 执行业务处理:按transTypeDesc分发入库/出库/取货通知/取走栈板/异常位处理 - rqrq |
|
|
|
updateSuccessLog(logId, messageId, startTime); |
|
|
|
return messageId; |
|
|
|
// 1. 入参校验:必须具备site/palletId/transTypeDesc,指定类型还要校验toBarcode - rqrq |
|
|
|
validateWcsWareHouseData(data); |
|
|
|
String transTypeDesc = data.getTransTypeDesc().trim(); |
|
|
|
|
|
|
|
// 2. 统一解析A01区域映射,确保to_warehouse_id/to_location_id都来自haian_area配置 - rqrq |
|
|
|
HaiAnAreaOption areaOption = getCallbackAreaConfig(site); |
|
|
|
String toArea = HaiAnBufferZoneConfig.CALLBACK_DEFAULT_TO_AREA_ID.getValue(); |
|
|
|
String toWarehouseId = areaOption.getWarehouseId().trim(); |
|
|
|
String toLocationId = areaOption.getLocationId().trim(); |
|
|
|
|
|
|
|
// 3. 按业务类型执行独立保存逻辑:取货通知先做幂等校验,其余类型直接落任务表 - rqrq |
|
|
|
String result; |
|
|
|
switch (transTypeDesc) { |
|
|
|
case "入库": |
|
|
|
result = saveInboundCallbackTask(data, site, toArea, toWarehouseId, toLocationId); |
|
|
|
break; |
|
|
|
case "出库": |
|
|
|
result = saveOutboundCallbackTask(data, site, toArea, toWarehouseId, toLocationId); |
|
|
|
break; |
|
|
|
case "取货通知": |
|
|
|
String pickupToStation = convertStationCode(data.getToBarcode()); |
|
|
|
if (hasDuplicatePickupNotification(site, data, pickupToStation, toArea)) { |
|
|
|
result = "取货通知重复回调已幂等通过,WMS跳过重复保存"; |
|
|
|
log.info("海安取货通知触发幂等跳过 - rqrq,site={}, palletId={}, taskNo={}, itemNo={}, toStation={}", |
|
|
|
site, data.getPalletId(), data.getTaskNo(), data.getItemNo(), pickupToStation); |
|
|
|
} else { |
|
|
|
result = savePickupNotificationCallbackTask(data, site, toArea, toWarehouseId, toLocationId); |
|
|
|
} |
|
|
|
break; |
|
|
|
case "取走栈板": |
|
|
|
result = savePalletRemovalCallbackTask(data, site, toArea, toWarehouseId, toLocationId); |
|
|
|
break; |
|
|
|
case "异常位处理": |
|
|
|
result = saveErrorStationCallbackTask(data, site, toArea, toWarehouseId, toLocationId); |
|
|
|
break; |
|
|
|
default: |
|
|
|
throw new RuntimeException("不支持的事务类型:" + transTypeDesc); |
|
|
|
} |
|
|
|
|
|
|
|
updateSuccessLog(logId, result, startTime); |
|
|
|
return result; |
|
|
|
} catch (Exception e) { |
|
|
|
throw buildAndThrowException( |
|
|
|
logId, |
|
|
|
@ -131,6 +190,269 @@ public class HaiAnWmsMessageServiceImpl implements HaiAnWmsMessageService { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @author rqrq |
|
|
|
* @Description 校验立库回调核心参数,避免关键主键缺失导致错误写入回调任务表 - rqrq |
|
|
|
* @param data 回调参数实体,至少包含site/palletId/transTypeDesc - rqrq |
|
|
|
*/ |
|
|
|
private void validateWcsWareHouseData(HaiAnWcsInboundCallbackRequest data) { |
|
|
|
if (data == null |
|
|
|
|| !StringUtils.hasText(data.getSite()) |
|
|
|
|| !StringUtils.hasText(data.getPalletId()) |
|
|
|
|| !StringUtils.hasText(data.getTransTypeDesc())) { |
|
|
|
throw new RuntimeException("参数验证失败:site/palletId/transTypeDesc不能为空"); |
|
|
|
} |
|
|
|
String transTypeDesc = data.getTransTypeDesc().trim(); |
|
|
|
if ("入库".equals(transTypeDesc) |
|
|
|
|| "取货通知".equals(transTypeDesc) |
|
|
|
|| "异常位处理".equals(transTypeDesc)) { |
|
|
|
if (!StringUtils.hasText(data.getToBarcode())) { |
|
|
|
throw new RuntimeException("参数验证失败:" + transTypeDesc + "场景toBarcode不能为空"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @author rqrq |
|
|
|
* @Description 根据固定业务区域A01查询haian_area映射,统一提供to_warehouse_id与to_location_id落库值 - rqrq |
|
|
|
* @param site 海安大site - rqrq |
|
|
|
* @return HaiAnAreaOption 包含A01对应仓库、库位与区域编码配置 - rqrq |
|
|
|
*/ |
|
|
|
private HaiAnAreaOption getCallbackAreaConfig(String site) { |
|
|
|
String areaId = HaiAnBufferZoneConfig.CALLBACK_DEFAULT_TO_AREA_ID.getValue(); |
|
|
|
HaiAnAreaOption areaOption = haiAnPdaAutoWarehouseMapper.getHaianArea(site, areaId); |
|
|
|
if (areaOption == null) { |
|
|
|
throw new RuntimeException("haian_area缺少固定区域配置:" + areaId + ",无法保存WCS回调任务"); |
|
|
|
} |
|
|
|
if (!StringUtils.hasText(areaOption.getWarehouseId()) || !StringUtils.hasText(areaOption.getLocationId())) { |
|
|
|
throw new RuntimeException("haian_area固定区域" + areaId + "缺少仓库或库位配置,无法保存WCS回调任务"); |
|
|
|
} |
|
|
|
return areaOption; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @author rqrq |
|
|
|
* @Description 取货通知幂等校验:相同业务键消息重复回传时直接放行但不重复落库 - rqrq |
|
|
|
* @param site 海安大site - rqrq |
|
|
|
* @param data 回调参数(用于taskNo/itemNo/palletId/transTypeDesc) - rqrq |
|
|
|
* @param toStation 归一化后的目标站点编码(1099/1093会映射成D1/D2) - rqrq |
|
|
|
* @param toArea 固定目标区域A01 - rqrq |
|
|
|
* @return true表示已存在重复数据,false表示需要继续保存 - rqrq |
|
|
|
*/ |
|
|
|
private boolean hasDuplicatePickupNotification(String site, HaiAnWcsInboundCallbackRequest data, String toStation, String toArea) { |
|
|
|
QueryWrapper<HaiAnWcsCallbackTask> queryWrapper = new QueryWrapper<HaiAnWcsCallbackTask>(); |
|
|
|
queryWrapper.eq("site", site) |
|
|
|
.eq("pallet_id", data.getPalletId().trim()) |
|
|
|
.eq("trans_type_desc", data.getTransTypeDesc().trim()) |
|
|
|
.eq("to_area", toArea); |
|
|
|
if (StringUtils.hasText(data.getTaskNo())) { |
|
|
|
queryWrapper.eq("task_no", data.getTaskNo().trim()); |
|
|
|
} else { |
|
|
|
queryWrapper.isNull("task_no"); |
|
|
|
} |
|
|
|
if (data.getItemNo() != null) { |
|
|
|
queryWrapper.eq("item_no", data.getItemNo()); |
|
|
|
} else { |
|
|
|
queryWrapper.isNull("item_no"); |
|
|
|
} |
|
|
|
if (StringUtils.hasText(toStation)) { |
|
|
|
queryWrapper.eq("to_station", toStation); |
|
|
|
} else { |
|
|
|
queryWrapper.isNull("to_station"); |
|
|
|
} |
|
|
|
return haiAnWcsCallbackTaskService.count(queryWrapper) > 0; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @author rqrq |
|
|
|
* @Description 处理站点编码兼容:WCS回传1099/1093时映射成D1/D2,其余编码保持不变 - rqrq |
|
|
|
* @param stationCode WCS回传站点编码 - rqrq |
|
|
|
* @return 标准化后的站点编码,空值直接返回空 - rqrq |
|
|
|
*/ |
|
|
|
private String convertStationCode(String stationCode) { |
|
|
|
if (!StringUtils.hasText(stationCode)) { |
|
|
|
return stationCode; |
|
|
|
} |
|
|
|
String normalizeCode = stationCode.trim(); |
|
|
|
if ("1099".equals(normalizeCode)) { |
|
|
|
return "D1"; |
|
|
|
} |
|
|
|
if ("1093".equals(normalizeCode)) { |
|
|
|
return "D2"; |
|
|
|
} |
|
|
|
return normalizeCode; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @author rqrq |
|
|
|
* @Description 保存入库回调任务:to_area固定A01,to_warehouse_id/to_location_id来自haian_area映射 - rqrq |
|
|
|
* @param data WCS入库回调参数 - rqrq |
|
|
|
* @param site 海安工厂编码 - rqrq |
|
|
|
* @param toArea 固定目标区域A01 - rqrq |
|
|
|
* @param toWarehouseId 目标仓库(由haian_area映射) - rqrq |
|
|
|
* @param toLocationId 目标库位(由haian_area映射) - rqrq |
|
|
|
* @return 保存结果提示 - rqrq |
|
|
|
*/ |
|
|
|
private String saveInboundCallbackTask(HaiAnWcsInboundCallbackRequest data, |
|
|
|
String site, |
|
|
|
String toArea, |
|
|
|
String toWarehouseId, |
|
|
|
String toLocationId) { |
|
|
|
HaiAnWcsCallbackTask callbackTask = new HaiAnWcsCallbackTask(); |
|
|
|
callbackTask.setSite(site); |
|
|
|
callbackTask.setPalletId(data.getPalletId().trim()); |
|
|
|
callbackTask.setTransTypeDesc(data.getTransTypeDesc().trim()); |
|
|
|
callbackTask.setToArea(toArea); |
|
|
|
callbackTask.setToWarehouseId(toWarehouseId); |
|
|
|
callbackTask.setToLocationId(toLocationId); |
|
|
|
callbackTask.setToStation(StringUtils.hasText(data.getToBarcode()) ? data.getToBarcode().trim() : null); |
|
|
|
callbackTask.setTaskNo(StringUtils.hasText(data.getTaskNo()) ? data.getTaskNo().trim() : null); |
|
|
|
callbackTask.setItemNo(data.getItemNo()); |
|
|
|
callbackTask.setStatus(CALLBACK_STATUS_INPUT); |
|
|
|
callbackTask.setCreatedTime(new Date()); |
|
|
|
callbackTask.setRetryCount(CALLBACK_DEFAULT_RETRY_COUNT); |
|
|
|
callbackTask.setRemark("WCS立库入库回调"); |
|
|
|
haiAnWcsCallbackTaskService.save(callbackTask); |
|
|
|
// 立即更新部分状态:入库回调先把本托盘增量明细置为已提交,避免重复推送历史增量 - rqrq |
|
|
|
haiAnPdaAutoWarehouseMapper.updatePalletDetailWcsFlag(site, data.getPalletId().trim()); |
|
|
|
return "入库回调数据已保存,等待定时任务处理"; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @author rqrq |
|
|
|
* @Description 保存出库回调任务:目标站点统一记为Virtual_AS,to_area固定A01并写入haian回调表 - rqrq |
|
|
|
* @param data WCS出库回调参数 - rqrq |
|
|
|
* @param site 海安工厂编码 - rqrq |
|
|
|
* @param toArea 固定目标区域A01 - rqrq |
|
|
|
* @param toWarehouseId 目标仓库(由haian_area映射) - rqrq |
|
|
|
* @param toLocationId 目标库位(由haian_area映射) - rqrq |
|
|
|
* @return 保存结果提示 - rqrq |
|
|
|
*/ |
|
|
|
private String saveOutboundCallbackTask(HaiAnWcsInboundCallbackRequest data, |
|
|
|
String site, |
|
|
|
String toArea, |
|
|
|
String toWarehouseId, |
|
|
|
String toLocationId) { |
|
|
|
HaiAnWcsCallbackTask callbackTask = new HaiAnWcsCallbackTask(); |
|
|
|
callbackTask.setSite(site); |
|
|
|
callbackTask.setPalletId(data.getPalletId().trim()); |
|
|
|
callbackTask.setTransTypeDesc(data.getTransTypeDesc().trim()); |
|
|
|
callbackTask.setToArea(toArea); |
|
|
|
callbackTask.setToWarehouseId(toWarehouseId); |
|
|
|
callbackTask.setToLocationId(toLocationId); |
|
|
|
callbackTask.setToStation(HaiAnBufferZoneConfig.BUFFER_Station_ID.getValue()); |
|
|
|
callbackTask.setTaskNo(StringUtils.hasText(data.getTaskNo()) ? data.getTaskNo().trim() : null); |
|
|
|
callbackTask.setItemNo(data.getItemNo()); |
|
|
|
callbackTask.setStatus(CALLBACK_STATUS_INPUT); |
|
|
|
callbackTask.setCreatedTime(new Date()); |
|
|
|
callbackTask.setRetryCount(CALLBACK_DEFAULT_RETRY_COUNT); |
|
|
|
callbackTask.setRemark("WCS立库出库回调"); |
|
|
|
haiAnWcsCallbackTaskService.save(callbackTask); |
|
|
|
// 立即更新部分状态(可能是移库出库)- rqrq |
|
|
|
// updateOrderTaskStatusForOutCallback(data); 禁用,立库回传任务信息不准 - rqrq |
|
|
|
haiAnPdaAutoWarehouseMapper.reUpdatePalletDetailWcsFlag(site, data.getPalletId().trim()); |
|
|
|
return "出库回调数据已保存,等待定时任务处理"; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @author rqrq |
|
|
|
* @Description 保存取货通知回调任务:执行站点编码归一化后落库,目标区域固定A01 - rqrq |
|
|
|
* @param data WCS取货通知回调参数 - rqrq |
|
|
|
* @param site 海安工厂编码 - rqrq |
|
|
|
* @param toArea 固定目标区域A01 - rqrq |
|
|
|
* @param toWarehouseId 目标仓库(由haian_area映射) - rqrq |
|
|
|
* @param toLocationId 目标库位(由haian_area映射) - rqrq |
|
|
|
* @return 保存结果提示 - rqrq |
|
|
|
*/ |
|
|
|
private String savePickupNotificationCallbackTask(HaiAnWcsInboundCallbackRequest data, |
|
|
|
String site, |
|
|
|
String toArea, |
|
|
|
String toWarehouseId, |
|
|
|
String toLocationId) { |
|
|
|
HaiAnWcsCallbackTask callbackTask = new HaiAnWcsCallbackTask(); |
|
|
|
callbackTask.setSite(site); |
|
|
|
callbackTask.setPalletId(data.getPalletId().trim()); |
|
|
|
callbackTask.setTransTypeDesc(data.getTransTypeDesc().trim()); |
|
|
|
callbackTask.setToArea(toArea); |
|
|
|
callbackTask.setToWarehouseId(toWarehouseId); |
|
|
|
callbackTask.setToLocationId(toLocationId); |
|
|
|
callbackTask.setToStation(convertStationCode(data.getToBarcode())); |
|
|
|
callbackTask.setTaskNo(StringUtils.hasText(data.getTaskNo()) ? data.getTaskNo().trim() : null); |
|
|
|
callbackTask.setItemNo(data.getItemNo()); |
|
|
|
callbackTask.setStatus(CALLBACK_STATUS_INPUT); |
|
|
|
callbackTask.setCreatedTime(new Date()); |
|
|
|
callbackTask.setRetryCount(CALLBACK_DEFAULT_RETRY_COUNT); |
|
|
|
callbackTask.setRemark("WCS立库取货通知回调"); |
|
|
|
haiAnWcsCallbackTaskService.save(callbackTask); |
|
|
|
return "取货通知回调数据已保存,等待定时任务处理"; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @author rqrq |
|
|
|
* @Description 保存取走栈板回调任务:不再执行站点占用状态改写,只负责回调任务落库 - rqrq |
|
|
|
* @param data WCS取走栈板回调参数 - rqrq |
|
|
|
* @param site 海安工厂编码 - rqrq |
|
|
|
* @param toArea 固定目标区域A01 - rqrq |
|
|
|
* @param toWarehouseId 目标仓库(由haian_area映射) - rqrq |
|
|
|
* @param toLocationId 目标库位(由haian_area映射) - rqrq |
|
|
|
* @return 保存结果提示 - rqrq |
|
|
|
*/ |
|
|
|
private String savePalletRemovalCallbackTask(HaiAnWcsInboundCallbackRequest data, |
|
|
|
String site, |
|
|
|
String toArea, |
|
|
|
String toWarehouseId, |
|
|
|
String toLocationId) { |
|
|
|
HaiAnWcsCallbackTask callbackTask = new HaiAnWcsCallbackTask(); |
|
|
|
callbackTask.setSite(site); |
|
|
|
callbackTask.setPalletId(data.getPalletId().trim()); |
|
|
|
callbackTask.setTransTypeDesc(data.getTransTypeDesc().trim()); |
|
|
|
callbackTask.setToArea(toArea); |
|
|
|
callbackTask.setToWarehouseId(toWarehouseId); |
|
|
|
callbackTask.setToLocationId(toLocationId); |
|
|
|
callbackTask.setToStation(convertStationCode(data.getToBarcode())); |
|
|
|
callbackTask.setTaskNo(StringUtils.hasText(data.getTaskNo()) ? data.getTaskNo().trim() : null); |
|
|
|
callbackTask.setItemNo(data.getItemNo()); |
|
|
|
callbackTask.setStatus(CALLBACK_STATUS_INPUT); |
|
|
|
callbackTask.setCreatedTime(new Date()); |
|
|
|
callbackTask.setRetryCount(CALLBACK_DEFAULT_RETRY_COUNT); |
|
|
|
callbackTask.setRemark("WCS立库取走栈板回调"); |
|
|
|
haiAnWcsCallbackTaskService.save(callbackTask); |
|
|
|
return "取走栈板回调数据已保存,等待定时任务处理"; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @author rqrq |
|
|
|
* @Description 保存异常位处理回调任务:remark优先使用入参异常原因,缺失时回落默认文案 - rqrq |
|
|
|
* @param data WCS异常位处理回调参数 - rqrq |
|
|
|
* @param site 海安工厂编码 - rqrq |
|
|
|
* @param toArea 固定目标区域A01 - rqrq |
|
|
|
* @param toWarehouseId 目标仓库(由haian_area映射) - rqrq |
|
|
|
* @param toLocationId 目标库位(由haian_area映射) - rqrq |
|
|
|
* @return 保存结果提示 - rqrq |
|
|
|
*/ |
|
|
|
private String saveErrorStationCallbackTask(HaiAnWcsInboundCallbackRequest data, |
|
|
|
String site, |
|
|
|
String toArea, |
|
|
|
String toWarehouseId, |
|
|
|
String toLocationId) { |
|
|
|
HaiAnWcsCallbackTask callbackTask = new HaiAnWcsCallbackTask(); |
|
|
|
callbackTask.setSite(site); |
|
|
|
callbackTask.setPalletId(data.getPalletId().trim()); |
|
|
|
callbackTask.setTransTypeDesc(data.getTransTypeDesc().trim()); |
|
|
|
callbackTask.setToArea(toArea); |
|
|
|
callbackTask.setToWarehouseId(toWarehouseId); |
|
|
|
callbackTask.setToLocationId(toLocationId); |
|
|
|
callbackTask.setToStation(StringUtils.hasText(data.getToBarcode()) ? data.getToBarcode().trim() : null); |
|
|
|
callbackTask.setTaskNo(StringUtils.hasText(data.getTaskNo()) ? data.getTaskNo().trim() : null); |
|
|
|
callbackTask.setItemNo(data.getItemNo()); |
|
|
|
callbackTask.setStatus(CALLBACK_STATUS_INPUT); |
|
|
|
callbackTask.setCreatedTime(new Date()); |
|
|
|
callbackTask.setRetryCount(CALLBACK_DEFAULT_RETRY_COUNT); |
|
|
|
callbackTask.setRemark(StringUtils.hasText(data.getRemark()) ? data.getRemark().trim() : "WCS立库异常位处理回调"); |
|
|
|
haiAnWcsCallbackTaskService.save(callbackTask); |
|
|
|
return "异常位处理回调数据已保存,等待定时任务处理"; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @author rqrq |
|
|
|
* @Description 处理栈板RFID拣货反馈:当前仅完成日志/异常框架,分拣对账与回写逻辑后续补充 - rqrq |
|
|
|
|