For the dough: In a stand mixer fitted with the paddle attachment, cream the butter and granulated sugar together. Scrape down the sides and add the lemon and orange zests. Turn the mixer back on to low speed. Add the milk and egg. Turn the speed to medium and mix until well combined (scrape the sides of the bowl if necessary). Turn the mixer off and add the flour. Carefully turn the mixer on a slow speed and mix just until a dough forms, scraping down the sides as necessary.
Turn the dough out onto a clean work surface dusted with flour. Knead until it forms a ball. Wrap the dough in plastic wrap and refrigerate for 30 minutes or until firm.
Preheat the oven to 325 degrees F.
For the filling: Combine the ricotta cheese, granulated sugar, custard/pudding, lemon zest, orange zest and semolina flour in the bowl of a stand mixer fitted with the paddle attachment. Mix on medium-low speed until combined. Add the vanilla orange and blossom water. Add in the whole eggs and egg yolks in 3 batches. Mix on slow speed in between each addition.
Grease the inside of a 9-inch nonstick springform pan with pan spray. Roll the dough into a circle approximately 14 inches wide. Roll the dough into the pan and press it out into an even layer across the bottom and up the sides of the pan.
Pour the filling into the pan and place on a rimmed baking sheet. Bake until cheesecake is golden brown, 80 to 90 minutes. Remove from the oven and allow to cool completely before removing from the pan.
Remove from the pan and put onto a decorative plate or platter. Dust the top with powdered sugar using a small mesh strainer. Decorate the center with fresh cranberries and sprigs of rosemary.