A couple of questions come to mind.
1. How are you displaying this currently. form view with a portal, a layout created as a report, or something else?
2. I am going to assume that there is sorting built or it could be ordered by record order in the database (no sorting whatsoever)
What you need to do is create another field that holds the sort value that you wish to change. This field doesn't need to be visible to the user. You will need to build this value based on your preferred sort order that you showed in your posting above. Then when someone changes the order then update this sort field to reflect the change. This way you are not changing work order numbers.
Hope this helps.
I do this with a script to capture the "sort order number" of the current row to a variable, perform a go to record (next or previous depending on which arrow), capture the new "sort order number" (different number as another variable), replace with the previous number, navigate back (up or down the other direction), replace with the last number.
I create an auto-enter serial # for such "sorting". Because it doesn't care where the numbers occur, they just sort asc (or desc)m correctly. So E1 can have 5, 6, 20; E2 can have 7, 8, 21; etc. They will sort correctly within the Employee. "exchanging" 8 & 21 will make 21 move "up" and 8 move "down".
p.s. look for samples of dbs who use arrow (keys) and/or drag/drop for re-ordering.