Look at this community article:
https://helpx.adobe.com/experience-manager/using/graniteAPI.html
It talks about using the Granite version of AssetManager to move digital assets. Its up to your app logic to name the asset when you move it. For example:
String assetPath = "/content/dam/testfolder/somefile.pdf";
String copyPath = "/content/dam/testhtml/copieddoc.pdf";
assetManager.copyAsset(assetPath, copyPath);
You can check to see if a asset has the name. If so - change the name of the new asset - ie - copieddoc1.pdf.