Aligning a grouped object on the global axes
Firstly, I wouldn't worry that much about slight rotations. They are very hard to notice unless you stare at the model close up in orthographic view. It's also pretty normal for models imported into Unity3D to get given annoying rotations like 89.999999 on some axis. It's better to just ignore it than go insane trying to fix it.

However, to align all your objects to some axis you just have to align the top level parent how you want. Then you can apply the rotations down the stack or not as you wish.

First thing I noticed is your objects have picked up some delta transformations from somewhere. That can make the transformation values confusing, because the actual orientation will be transform + delta. So I'm going to clear the delta transformations from the empty. I'm also going to clear the delta rotations from the child objects because they are all the same. I will leave the delta location on the children because that is how they are matched up. I also zero out the regular transforms on the empty:



Now I find a face or faces in edit mode that I think should be aligned along a global axis but aren't. I take these ones in the centre of the 'bottom' object and snap the cursor to them as well as aligning my view to their Z axis (SHIFT+Numpad 7) since I think they should be aligned on Z:



Exiting edit mode, I add an object and align it to view. I choose an empty in this case:



The 'WeaponCase' empty gets parented to this new empty I just made:



Finally I clear the rotations from the new empty and then clear the parent of 'WeaponCase' making sure to 'keep Transformations':



For here you can delete the empty and apply transforms if desired. Repeat the process if you need to make other alignments but keep in mind that depending on what faces you use to make new alignments, you may break this one.