You might try it like this:
First your (reduced!) sample data with silly values in <pos>
to demonstrate the solution:
DECLARE @xml XML=
N'<flint>
<app>
<comp>59</comp>
<!--more elements-->
<revision>006</revision>
<data>
<rec>
<rpos>1</rpos>
<revision>006</revision>
<order>
<type>SFC</type>
<!--more elements-->
<so_pono>0</so_pono>
<est_mats>
<est_mat>
<pos>999</pos>
<item>GEC1H-BTL-CARDBOARD-BOX</item>
<!--more elements-->
</est_mat>
<est_mat>
<pos>333</pos>
<item>GEC1H-BTL-FD79-G007-00SA</item>
<!--more elements-->
</est_mat>
</est_mats>
</order>
</rec>
</data>
</app>
</flint>';
--No we read the re-numbered <est_mats>
into a staging variable
DECLARE @est_mats XML=
(
SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) * 10 AS pos
,em.value(N'item[1]',N'nvarchar(max)') AS item
--add more elements here
FROM @xml.nodes(N'flint/app/data/rec/order/est_mats/est_mat') AS A(em)
FOR XML PATH('est_mat'),ROOT('est_mats'),TYPE
);
--Now we remove the existing <est_mats>
completely
SET @xml.modify(N'delete (flint/app/data/rec/order/est_mats)[1]');
--Just to insert the modified part in the former place
SET @xml.modify(N'insert sql:variable("@est_mats") as last into (flint/app/data/rec/order)[1]');
--This is the result
SELECT @xml;
<flint>
<app>
<comp>59</comp>
<!--more elements-->
<revision>006</revision>
<data>
<rec>
<rpos>1</rpos>
<revision>006</revision>
<order>
<type>SFC</type>
<!--more elements-->
<so_pono>0</so_pono>
<est_mats>
<est_mat>
<pos>10</pos>
<item>GEC1H-BTL-CARDBOARD-BOX</item>
</est_mat>
<est_mat>
<pos>20</pos>
<item>GEC1H-BTL-FD79-G007-00SA</item>
</est_mat>
</est_mats>
</order>
</rec>
</data>
</app>
</flint>
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…