首先是 中转仓货物与订单精准绑定技术。系统为每一件进入中转仓的代购商品生成唯一集运编码,绑定对应用户订单、自提点、国家线路、履约方式,杜绝货物无归属、无单据的问题。核心状态绑定工具类代码如下:
// Taocarts 中转仓货物唯一标识绑定工具类
public class TransitWarehouseUtil {
// 生成唯一中转集运编码
public static String generateTransitNo(String orderNo, String countryCode) {
String dateStr = new SimpleDateFormat("yyyyMMdd").format(new Date());
// 编码规则:国家编码+日期+订单后六位+随机数
return countryCode + dateStr + orderNo.substring(orderNo.length()-6)
+ RandomUtil.randomNumbers(4);
}
// 绑定货物入库状态与订单关联信息
public TransitWarehousePO bindGoodsInfo(OrderGoodsDTO goodsDTO, String transitNo, String siteId) {
TransitWarehousePO warehousePO = new TransitWarehousePO();
warehousePO.setTransitNo(transitNo);
warehousePO.setOrderNo(goodsDTO.getOrderNo());
warehousePO.setSkuCode(goodsDTO.getSkuCode());
warehousePO.setGoodsNum(goodsDTO.getGoodsNum());
warehousePO.setSiteId(siteId);
warehousePO.setCountryCode(goodsDTO.getCountryCode());
warehousePO.setStatus("TRANSIT_IN"); // 中转仓已入库
warehousePO.setCreateTime(new Date());
return warehousePO;
}
}
// 定时任务:中转仓在库货物智能归集装柜
@Component
@EnableScheduling
public class TransitPackSchedule {
@Autowired
private CrossPackService packService;
// 每日凌晨2点自动执行批量归集装柜
@Scheduled(cron = "0 0 2 * * ?")
public void autoBatchPack() {
// 查询所有开通的跨境线路国家编码
List<String> countryCodeList = configService.getOpenCountryLine();
for (String countryCode : countryCodeList) {
// 查询当前国家所有有效自提点
List<Long> siteIdList = siteService.getCountrySiteIds(countryCode);
// 逐网点归集装柜
siteIdList.forEach(siteId -> {
try {
packService.createPackBatch(siteId, countryCode);
} catch (Exception e) {
log.error("网点{}自动装柜失败", siteId, e);
}
});
}
}
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70049657/viewspace-3173849/ ,如需转载,请注明出处,否则将追究法律责任。