How to Show Single Product – 4 Data by ID in Custom Page without over-riding the existing Woo-Commerce

Your query returns an array of posts (query all products belonging to specific cat product cat), in your case it looks like there’s ony one.
To display a list on your custom page you’ve to iterate the array with:

$args = array( 'post_type' => 'product', 'product_cat' => 'category-id' );//note that this looks like a mistake, if you want to query by id this should be an integer or an integer variable (i.e. $catid coming from somewere earlier defined) 
$query = new WP_Query($args);
$posts = $query->posts;
foreach($posts as $post) {
  // Do your stuff, e.g.
  // echo $post->post_name;
  get_template_part( 'woocommerce/single-product');//this may or not work, it possibly need some adjustment
}