try {
Lock lock = new ReentrantLock();
lock.lock();
List<BizShipmentManifest> fests= new ArrayList<BizShipmentManifest>();
BizCourierAccount courierAccount = ValidateUtil.validateAndFindById(param.getCourierAccountId(),
bizCourierAccountProvider);
Long courierId = courierAccount.getCourier().getId();
CourierAccCredential courierConfigure = courierConfigContainer.getCourierAccCred(courierAccount.getId());
CourierConfigure courierAccCredential = courierConfigContainer.getCourierConfigure(courierId);
@SuppressWarnings("unchecked")
ICourierApi<CourierAccCredential, CourierConfigure> courierApi = courierConfigContainer
.getCourierApiByCourierId(courierId);
BaseResponse<List<ShipmentManifest>> response = courierApi.commitShipments(courierAccCredential, courierConfigure,
param.getAddress(),param.getCourierAccountId());
if (response != null && response.getData() != null && response.getData().size()>0)
{
List<ShipmentManifest> shipmentManifests = response.getData();
for(ShipmentManifest shipmentManifest:shipmentManifests) {
logger.info("commitShipments courierAccountId={} return data:{}", courierAccount.getId(), JSON.toJSONString(shipmentManifest));
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
String fileName = String.format("%s_%s_%s.pdf", courierAccount.getCourier().getCourierCode(),
param.getCourierAccountId(), format.format(new Date()));
String filePath = String.format("/home/tms/manifest/%s", fileName);
// 保存文件
FileUtil.createFile(filePath, shipmentManifest.getContent());
BizShipmentManifest manifest = new BizShipmentManifest();
manifest.setCourierAccountId(param.getCourierAccountId());
manifest.setCourierCode(courierAccount.getCourier().getCourierCode());
manifest.setFilePath(filePath);
fests.add(manifest);
bizShipmentManifestProvider.createModelTxNew(manifest, o);
logger.info("Get Out commitShipments,fileName={} ", filePath);
Thread.sleep(5000);
}
}
return fests.size()<1?null:fests;
}catch(Exception e ){
logger.info(e.getMessage());
throw new ShipmentApiException(e.getMessage());
}finally {
logger.info("Get Out commitShipments, the courieraccountId is {}!", param.getCourierAccountId());
lock.unlock();
}