From cf4b24b7757bc76bb9c01fe936140073cb150711 Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期五, 12 十二月 2025 15:37:52 +0800
Subject: [PATCH] 成品报表新增平方毫米字段

---
 north-glass-erp/src/main/resources/mapper/mm/FinishedOperateLog.xml |  180 +++++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 148 insertions(+), 32 deletions(-)

diff --git a/north-glass-erp/src/main/resources/mapper/mm/FinishedOperateLog.xml b/north-glass-erp/src/main/resources/mapper/mm/FinishedOperateLog.xml
index b7266ac..20752c8 100644
--- a/north-glass-erp/src/main/resources/mapper/mm/FinishedOperateLog.xml
+++ b/north-glass-erp/src/main/resources/mapper/mm/FinishedOperateLog.xml
@@ -23,6 +23,7 @@
         <result column="process_id" property="processId"/>
         <result column="money" property="money"/>
         <result column="area" property="area"/>
+        <result column="square_millimeter" property="squareMillimeter"/>
 
         <result column="width" property="orderDetail.width"/>
         <result column="height" property="orderDetail.height"/>
@@ -35,6 +36,8 @@
         <result column="delivery_address" property="order.deliveryAddress"/>
         <result column="project" property="order.project"/>
         <result column="customer_name" property="order.customerName"/>
+        <result column="customer_Id" property="order.customerId"/>
+        <result column="order_type" property="order.orderType"/>
 
     </resultMap>
 
@@ -62,10 +65,23 @@
         fol.money,
         o.customer_name,
         o.project,
-        od.price
+        od.price,
+        CASE
+        WHEN #{type} = '鍏ュ簱' THEN
+            if(fgi.quantity_available>fol.quantity,fol.quantity,fgi.quantity_available)
+        ELSE
+            0
+        END AS quantity_available,
+        CASE
+        WHEN #{type} = '鍏ュ簱' THEN
+        if(fgi.quantity_available>fol.quantity,fol.quantity,fgi.quantity_available)
+        ELSE
+        0
+        END AS cancelAvailable
         from (select *
         from mm.finished_operate_log aa where aa.operate_type = #{type}  and aa.status!='宸蹭綔搴�') fol
         left join sd.order_detail od on fol.order_id = od.order_id and fol.operation_number = od.order_number
+        left join mm.finished_goods_inventory fgi on fgi.order_id = fol.order_id and fol.operation_number = fgi.order_number and fgi.box_no=fol.remarks
         left join sd.`order` o on o.order_id=fol.order_id
         <where>
             date(fol.operate_time)>=#{startDate} and date(fol.operate_time) &lt;= #{endDate}
@@ -94,7 +110,7 @@
                 and  od.product_name regexp #{finishedOperateLog.orderDetail.productName}
             </if>
             <if test="finishedOperateLog.orderDetail.price != null and finishedOperateLog.orderDetail.price != ''">
-                and  od.price regexp #{finishedOperateLog.orderDetail.price}
+                and  od.price regexp  REGEXP_REPLACE(#{finishedOperateLog.orderDetail.price},'\\.0+$','')
             </if>
             <if test="finishedOperateLog.orderDetail.width != null and finishedOperateLog.orderDetail.width != ''">
                 and  od.width regexp  REGEXP_REPLACE(#{finishedOperateLog.orderDetail.width},'\\.0+$','')
@@ -118,13 +134,13 @@
                 and fol.type regexp #{finishedOperateLog.type}
             </if>
             <if test="finishedOperateLog.remarks != null and finishedOperateLog.remarks != ''">
-                and fol.remarks regexp #{finishedOperateLog.remarksr}
+                and fol.remarks regexp #{finishedOperateLog.remarks}
             </if>
             <if test="finishedOperateLog.area != null and finishedOperateLog.area != ''">
-                and fol.area regexp #{finishedOperateLog.area}
+                and fol.area regexp REGEXP_REPLACE(#{finishedOperateLog.area},'\\.0+$','')
             </if>
             <if test="finishedOperateLog.money != null and finishedOperateLog.money != ''">
-                and fol.money regexp #{finishedOperateLog.money}
+                and fol.money regexp REGEXP_REPLACE(#{finishedOperateLog.money},'\\.0+$','')
             </if>
             <if test="finishedOperateLog.order !=null and (finishedOperateLog.order.customerName != null and finishedOperateLog.order.customerName != '')">
                 and o.customer_name regexp #{finishedOperateLog.order.customerName}
@@ -133,16 +149,20 @@
                 and o.project regexp #{finishedOperateLog.order.project}
             </if>
         </where>
+        group by fol.order_id,fol.operation_number,fol.remarks
         order by fol.operate_time desc
         limit #{offset},#{pageSize};
     </select>
 
     <select id="getSelectStorageRecordLogPageTotal">
-        select CEILING(count(fol.id)/#{pageSize}) as 'pageTotal',
-        count(fol.id) as 'total'
+        select
+        CEILING(count(zu.id)/#{pageSize}) as 'pageTotal',
+        count(zu.id) as 'total' from (
+        select fol.id
         from (select *
         from mm.finished_operate_log aa where aa.operate_type = #{type}  and aa.status!='宸蹭綔搴�') fol
         left join sd.order_detail od on fol.order_id = od.order_id and fol.operation_number = od.order_number
+        left join mm.finished_goods_inventory fgi on fgi.order_id = fol.order_id and fol.operation_number = fgi.order_number and fgi.box_no=fol.remarks
         left join sd.`order` o on o.order_id=fol.order_id
         <where>
             date(fol.operate_time)>=#{startDate} and date(fol.operate_time) &lt;= #{endDate}
@@ -158,6 +178,9 @@
             <if test="finishedOperateLog.quantity != null and finishedOperateLog.quantity != ''">
                 and fol.quantity regexp #{finishedOperateLog.quantity}
             </if>
+            <if test="finishedOperateLog.processId != null and finishedOperateLog.processId != ''">
+                and fol.process_id regexp #{finishedOperateLog.processId}
+            </if>
             <if test="finishedOperateLog.operator != null and finishedOperateLog.operator != ''">
                 and fol.operator regexp #{finishedOperateLog.operator}
             </if>
@@ -168,7 +191,7 @@
                 and  od.product_name regexp #{finishedOperateLog.orderDetail.productName}
             </if>
             <if test="finishedOperateLog.orderDetail.price != null and finishedOperateLog.orderDetail.price != ''">
-                and  od.price regexp #{finishedOperateLog.orderDetail.price}
+                and  od.price regexp  REGEXP_REPLACE(#{finishedOperateLog.orderDetail.price},'\\.0+$','')
             </if>
             <if test="finishedOperateLog.orderDetail.width != null and finishedOperateLog.orderDetail.width != ''">
                 and  od.width regexp  REGEXP_REPLACE(#{finishedOperateLog.orderDetail.width},'\\.0+$','')
@@ -192,13 +215,13 @@
                 and fol.type regexp #{finishedOperateLog.type}
             </if>
             <if test="finishedOperateLog.remarks != null and finishedOperateLog.remarks != ''">
-                and fol.remarks regexp #{finishedOperateLog.remarksr}
+                and fol.remarks regexp #{finishedOperateLog.remarks}
             </if>
             <if test="finishedOperateLog.area != null and finishedOperateLog.area != ''">
-                and fol.area regexp #{finishedOperateLog.area}
+                and fol.area regexp REGEXP_REPLACE(#{finishedOperateLog.area},'\\.0+$','')
             </if>
             <if test="finishedOperateLog.money != null and finishedOperateLog.money != ''">
-                and fol.money regexp #{finishedOperateLog.money}
+                and fol.money regexp REGEXP_REPLACE(#{finishedOperateLog.money},'\\.0+$','')
             </if>
             <if test="finishedOperateLog.order !=null and (finishedOperateLog.order.customerName != null and finishedOperateLog.order.customerName != '')">
                 and o.customer_name regexp #{finishedOperateLog.order.customerName}
@@ -207,7 +230,9 @@
                 and o.project regexp #{finishedOperateLog.order.project}
             </if>
         </where>
+        group by fol.order_id,fol.operation_number,fol.remarks
         order by fol.`status` desc
+        ) as zu
     </select>
 
     <update id="updateToExamine">
@@ -216,6 +241,11 @@
 
     <update id="updateFinishedOperateLogState">
         update mm.finished_operate_log set status=#{type} where id=#{finishedOperateLog.id};
+    </update>
+
+    <update id="updateFinishedOperateLogQuantity">
+        update mm.finished_operate_log set quantity=quantity-#{finishedOperateLog.cancelAvailable},
+                                           area=area-#{deliveryDetailArea},money=money-#{deliveryDetailMoney}  where id=#{finishedOperateLog.id};
     </update>
 
     <select id="getSelectOperateRecord" resultMap="selectFinishedGoodsInventory">
@@ -474,10 +504,19 @@
         fol.reviewed,
         fol.reviewed_time,
         fol.type,
-        fol.remarks
+        fol.remarks,
+        fol.area,
+        fol.money,
+        o.customer_name,
+        o.project,
+        od.price,
+        o.order_type,
+        p.thickness * fol.area as square_millimeter
         from (select *
         from mm.finished_operate_log aa where  aa.status!='宸蹭綔搴�') fol
         left join sd.order_detail od on fol.order_id = od.order_id and fol.operation_number = od.order_number
+        left join sd.`order` o on o.order_id=fol.order_id
+        left join sd.product p on p.id=od.product_id
         <where>
             date(fol.operate_time)>=#{startDate} and date(fol.operate_time) &lt;= #{endDate} and fol.operate_type=#{type}
             <if test="finishedOperateLog.operateType != null and finishedOperateLog.operateType != ''">
@@ -527,6 +566,24 @@
             </if>
             <if test="finishedOperateLog.remarks != null and finishedOperateLog.remarks != ''">
                 and fol.remarks regexp #{finishedOperateLog.remarksr}
+            </if>
+            <if test="finishedOperateLog.area != null and finishedOperateLog.area != ''">
+                and fol.area regexp REGEXP_REPLACE(#{finishedOperateLog.area},'\\.0+$','')
+            </if>
+            <if test="finishedOperateLog.money != null and finishedOperateLog.money != ''">
+                and fol.money regexp REGEXP_REPLACE(#{finishedOperateLog.money},'\\.0+$','')
+            </if>
+            <if test="finishedOperateLog.order !=null and (finishedOperateLog.order.customerName != null and finishedOperateLog.order.customerName != '')">
+                and o.customer_name regexp #{finishedOperateLog.order.customerName}
+            </if>
+            <if test="finishedOperateLog.order !=null and (finishedOperateLog.order.project != null and finishedOperateLog.order.project != '')">
+                and o.project regexp #{finishedOperateLog.order.project}
+            </if>
+            <if test="finishedOperateLog.orderDetail!=null and finishedOperateLog.orderDetail.price != null and finishedOperateLog.orderDetail.price != ''">
+                and  od.price regexp #{finishedOperateLog.orderDetail.price}
+            </if>
+            <if test="finishedOperateLog.order !=null and (finishedOperateLog.order.orderType != null and finishedOperateLog.order.orderType != '')">
+                and o.order_type regexp #{finishedOperateLog.order.orderType}
             </if>
         </where>
         order by fol.`status` desc
@@ -539,6 +596,8 @@
         from (select *
         from mm.finished_operate_log aa where  aa.status!='宸蹭綔搴�') fol
         left join sd.order_detail od on fol.order_id = od.order_id and fol.operation_number = od.order_number
+        left join sd.`order` o on o.order_id=fol.order_id
+        left join sd.product p on p.id=od.product_id
         <where>
             date(fol.operate_time)>=#{startDate} and date(fol.operate_time) &lt;= #{endDate} and fol.operate_type=#{type}
             <if test="finishedOperateLog.operateType != null and finishedOperateLog.operateType != ''">
@@ -588,6 +647,24 @@
             </if>
             <if test="finishedOperateLog.remarks != null and finishedOperateLog.remarks != ''">
                 and fol.remarks regexp #{finishedOperateLog.remarksr}
+            </if>
+            <if test="finishedOperateLog.area != null and finishedOperateLog.area != ''">
+                and fol.area regexp REGEXP_REPLACE(#{finishedOperateLog.area},'\\.0+$','')
+            </if>
+            <if test="finishedOperateLog.money != null and finishedOperateLog.money != ''">
+                and fol.money regexp REGEXP_REPLACE(#{finishedOperateLog.money},'\\.0+$','')
+            </if>
+            <if test="finishedOperateLog.order !=null and (finishedOperateLog.order.customerName != null and finishedOperateLog.order.customerName != '')">
+                and o.customer_name regexp #{finishedOperateLog.order.customerName}
+            </if>
+            <if test="finishedOperateLog.order !=null and (finishedOperateLog.order.project != null and finishedOperateLog.order.project != '')">
+                and o.project regexp #{finishedOperateLog.order.project}
+            </if>
+            <if test="finishedOperateLog.orderDetail!=null and finishedOperateLog.orderDetail.price != null and finishedOperateLog.orderDetail.price != ''">
+                and  od.price regexp #{finishedOperateLog.orderDetail.price}
+            </if>
+            <if test="finishedOperateLog.order !=null and (finishedOperateLog.order.orderType != null and finishedOperateLog.order.orderType != '')">
+                and o.order_type regexp #{finishedOperateLog.order.orderType}
             </if>
         </where>
     </select>
@@ -617,11 +694,20 @@
                                             status,
                                             remarks,
                                             money,
-                                            area
+                                            area,
+                                            compute_area
         )
         values (
                    #{oddNumber} ,#{flowCard.order.orderId},#{flowCard.processId},#{flowCard.orderNumber},"鍏ュ簱",#{userName},
-                #{flowCard.inventoryQuantity},now(),"鏈鏍�",#{container},#{deliveryDetailMoney},#{deliveryDetailArea}
+                #{flowCard.inventoryQuantity},
+        <if test="createTime != null">
+            #{createTime}
+        </if>
+        <if test="createTime == null">
+            now()
+        </if>
+                ,"鏈鏍�",#{container},#{deliveryDetailMoney},#{deliveryDetailArea},#{getComputeArea}
+
                )
     </insert>
 
@@ -633,11 +719,13 @@
                                             operator,
                                             quantity,
                                             operate_time,
-                                            status
+                                            status,
+                                            remarks,
+                                            area
         )
         values (
                    #{orderDetail.deliveryDetail.deliveryId} ,#{orderDetail.deliveryDetail.orderId},#{orderDetail.deliveryDetail.orderNumber}
-                   ,"鍑哄簱",#{userName},#{orderDetail.deliveryDetail.quantity},now(),"鏈鏍�"
+                   ,"鍑哄簱",#{userName},#{orderDetail.deliveryDetail.quantity},now(),"鏈鏍�",#{boxNo},#{orderDetail.deliveryDetail.area}
                )
     </insert>
 
@@ -716,10 +804,19 @@
                fol.reviewed,
                fol.reviewed_time,
                fol.type,
-               fol.remarks
+               fol.remarks,
+               fol.area,
+               fol.money,
+               o.customer_name,
+               o.project,
+               od.price,
+               o.order_type,
+               p.thickness * fol.area as square_millimeter
         from (select *
               from mm.finished_operate_log aa where  aa.status!='宸蹭綔搴�') fol
                  left join sd.order_detail od on fol.order_id = od.order_id and fol.operation_number = od.order_number
+                 left join sd.`order` o on o.order_id=fol.order_id
+                 left join sd.product p on p.id=od.product_id
         where  date(fol.operate_time)>=#{dates[0]} and date(fol.operate_time) &lt;= #{dates[1]} and fol.operate_type=#{type}
 
     </select>
@@ -733,16 +830,21 @@
                                             operator,
                                             quantity,
                                             operate_time,
-                                            status
+                                            status,
+                                            area,
+                                            compute_area,
+                                            remarks,
+                                            money
         )
         values (
-                   #{oddNumber} ,#{orderDetail.orderId},"",#{orderDetail.orderNumber},"鍏ュ簱",#{userName},#{orderDetail.quantity},now(),"鏈鏍�"
+                   #{oddNumber} ,#{orderDetail.orderId},#{processId},#{orderDetail.orderNumber},"鍏ュ簱",#{userName},#{orderDetail.quantity},now(),"鏈鏍�",
+                #{orderDetail.computeGrossArea},#{orderDetail.computeArea},"",#{orderDetail.grossAmount}
                )
     </insert>
 
-    <delete id="updateOrderFinishedOperateLog"  >
+    <update id="updateOrderFinishedOperateLog"  >
         update  mm.finished_operate_log set status="宸蹭綔搴�" where order_id=#{orderDetail.orderId} and operation_number=#{orderDetail.orderNumber} and operate_type="鍏ュ簱";
-    </delete>
+    </update>
 
     <select id="getSelectStorageRecordPint" resultMap="selectFinishedGoodsInventory">
         select fol.id,
@@ -759,6 +861,7 @@
         od.height,
         o.project,
         o.customer_name,
+        o.customer_Id,
         o.delivery_address,
         fol.operate_time,
         fol.`status`,
@@ -801,10 +904,11 @@
                 and  o.delivery_address regexp #{finishedOperateLog.order.deliveryAddress}
             </if>
             <if test="finishedOperateLog.remarks != null and finishedOperateLog.remarks != ''">
-                and fol.remarks regexp #{finishedOperateLog.remarksr}
+                and fol.remarks regexp #{finishedOperateLog.remarks}
             </if>
         </where>
-        group by fol.remarks,od.order_id,fol.process_id
+        group by fol.remarks,od.order_id
+        -- ,fol.process_id
         order by fol.operate_time desc
         limit #{offset},#{pageSize};
     </select>
@@ -817,6 +921,7 @@
         from (select *
         from mm.finished_operate_log aa where aa.operate_type = '鍏ュ簱'  and aa.status!='宸蹭綔搴�') fol
         left join sd.order_detail od on fol.order_id = od.order_id and fol.operation_number = od.order_number
+        left join sd.`order` o on o.order_id=fol.order_id
         <where>
             date(fol.operate_time)>=#{startDate} and date(fol.operate_time) &lt;= #{endDate}
             and (fol.remarks is not null and fol.remarks !="") and (fol.process_id !="" and fol.process_id is not null)
@@ -848,10 +953,12 @@
                 and  o.delivery_address regexp #{finishedOperateLog.order.deliveryAddress}
             </if>
             <if test="finishedOperateLog.remarks != null and finishedOperateLog.remarks != ''">
-                and fol.remarks regexp #{finishedOperateLog.remarksr}
+                and fol.remarks regexp #{finishedOperateLog.remarks}
             </if>
         </where>
-        group by fol.remarks,od.order_id,fol.process_id) as zu
+        group by fol.remarks,od.order_id
+                 -- ,fol.process_id
+            ) as zu
 
     </select>
 
@@ -880,10 +987,13 @@
 
         select kkk.*,rw.teams_groups_name as teams_groups_name2 from(select  o.order_id,
                                                                              o.customer_name,
+                                                                             o.customer_id,
                                                                              o.project,
+                                                                             o.batch,
                                                                              fol.remarks,
                                                                              SUM(fol.quantity) as quantity,
-                                                                             ROUND( sum(od.width * od.height * fol.quantity) / 1000000, 2 ) as area,
+                                                                             /*ROUND( sum(od.width * od.height * fol.quantity) / 1000000, 2 ) as area,*/
+                                                                             fol.area as area,
                                                                              ROUND( sum(od.width * od.height * fol.quantity*p.total_thickness*2.5) / 1000000, 2 ) as weight,
                                                                              fol.process_id,
                                                                              aaa.teams_groups_name,
@@ -899,13 +1009,13 @@
 
 
                                                                      where
-                                                                         o.customer_name=#{customerName}  and fol.remarks=#{remarks} and o.project=#{project}
+                                                                         o.customer_id=#{customerId}  and fol.remarks=#{remarks} and o.project=#{project}
                                                                        and (fol.remarks is not null and fol.remarks !="") and (fol.process_id !="" and fol.process_id is not null)
 
                                                                      group by fol.remarks,o.customer_name,o.project
                                                                     ) as kkk
                                                                         left join  pp.reporting_work rw on  rw.process_id=kkk.process_id and rw.this_process=kkk.previous_process
-        group by kkk.remarks,kkk.customer_name,kkk.project
+        group by kkk.remarks,kkk.customer_id,kkk.project
 
     </select>
 
@@ -933,11 +1043,12 @@
             ifnull(od.building_number,ifnull(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')),'')) as building_number,
             od.width,
             od.height,
-            fol.quantity,
+            sum(fol.quantity) as quantity,
             od.product_name,
             od.product_id,
-            ROUND( od.width * od.height * fol.quantity / 1000000, 2 ) as area,
-            ROUND( od.width * od.height * fol.quantity / 1000000, 2 )*#{thickness}*2.5 as weight
+            /*ROUND(sum(od.width * od.height * fol.quantity / 1000000) , 2 ) as area,*/
+            ROUND(sum(fol.compute_area * fol.quantity) , 2 ) as area,
+            ROUND(sum(od.width * od.height * fol.quantity / 1000000) , 2 )*#{thickness}*2.5 as weight
         FROM
             ( SELECT * FROM mm.finished_operate_log aa WHERE aa.operate_type = '鍏ュ簱' AND aa.STATUS != '宸蹭綔搴�' ) fol
                 LEFT JOIN sd.order_detail od ON fol.order_id = od.order_id
@@ -945,8 +1056,9 @@
                 LEFT JOIN sd.`order` o ON o.order_id = fol.order_id
         WHERE
             o.order_id=#{orderId} and fol.remarks=#{remarks} and od.product_id=#{productId}
+        group by od.order_id,od.order_number
         ORDER BY
-            fol.operate_time DESC
+            od.order_number
 
     </select>
 
@@ -995,4 +1107,8 @@
         left join sd.`order` o on o.order_id=fol.order_id
         where fol.operation_order_number=#{deliveryId}
     </select>
+
+
+
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0