于杰
2025-11-04 7cf8f8fc1abca63423c1fb4618363f8a9d283f9d
north-glass-erp/src/main/resources/mapper/pp/Report.xml
@@ -203,7 +203,8 @@
               ifnull(JSON_UNQUOTE(JSON_EXTRACT(a.other_columns, '$.S01')),'') AS glassNumber,
               b.`group`
               b.`group`,
               c.termination_status
        from pp.flow_card as c
                 left join
@@ -274,15 +275,16 @@
               rw.this_process,
               JSON_UNQUOTE( JSON_EXTRACT( od.other_columns, '$.S01' )) AS code,
               CONCAT(rw.process_id,'/',GROUP_CONCAT(distinct dd.technology_number SEPARATOR '')) as process_id,
               rw.creator
               rw.creator,
               rw.reporting_work_id
        from
            sd.`order` as o left join sd.order_detail as od on o.order_id=od.order_id
                             left join sd.order_glass_detail as ogd on ogd.order_id=od.order_id and ogd.order_number=od.order_number
                             left join pp.reporting_work as rw on rw.order_id=o.order_id
                             left join pp.damage_details as dd on dd.reporting_work_id=rw.reporting_work_id and dd.order_number=ogd.order_number
            and dd.technology_number=ogd.technology_number
        where date(rw.reporting_work_time) >= #{startDate}
          and date(rw.reporting_work_time) <= #{endDate}
        where (rw.reporting_work_time) >= #{startDate}
          and (rw.reporting_work_time) <= #{endDate}
          and rw.this_worn_quantity > 0
          and dd.available = 0
          and reviewed_state >-1
@@ -324,6 +326,9 @@
        <if test="crossProcessBreakingDTO.code != null and crossProcessBreakingDTO.code != ''">
            and ifnull(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')),'') regexp #{crossProcessBreakingDTO.code}
        </if>
        <if test="crossProcessBreakingDTO.reportingWorkId != null and crossProcessBreakingDTO.reportingWorkId != ''">
            and rw.reporting_work_id regexp #{crossProcessBreakingDTO.reportingWorkId}
        </if>
        GROUP BY dd.id
        order by dd.id desc
        limit #{offset},#{pageSize}
@@ -346,15 +351,16 @@
        rw.this_process,
        JSON_UNQUOTE( JSON_EXTRACT( od.other_columns, '$.S01' )) AS code,
        CONCAT(rw.process_id,'/',GROUP_CONCAT(distinct dd.technology_number SEPARATOR '')) as process_id,
        rw.creator
        rw.creator,
        rw.reporting_work_id
        from
        sd.`order` as o left join sd.order_detail as od on o.order_id=od.order_id
        left join sd.order_glass_detail as ogd on ogd.order_id=od.order_id and ogd.order_number=od.order_number
        left join pp.reporting_work as rw on rw.order_id=o.order_id
        left join pp.damage_details as dd on dd.reporting_work_id=rw.reporting_work_id and dd.order_number=ogd.order_number
        and dd.technology_number=ogd.technology_number
        where date(rw.reporting_work_time) >= #{startDate}
        and date(rw.reporting_work_time) &lt;= #{endDate}
        where (rw.reporting_work_time) >= #{startDate}
        and (rw.reporting_work_time) &lt;= #{endDate}
        and rw.this_worn_quantity > 0
        and dd.available = 0
        and reviewed_state >-1
@@ -396,6 +402,9 @@
        <if test="crossProcessBreakingDTO.code != null and crossProcessBreakingDTO.code != ''">
            and ifnull(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')),'') regexp #{crossProcessBreakingDTO.code}
        </if>
        <if test="crossProcessBreakingDTO.reportingWorkId != null and crossProcessBreakingDTO.reportingWorkId != ''">
            and rw.reporting_work_id regexp #{crossProcessBreakingDTO.reportingWorkId}
        </if>
        GROUP BY dd.id
        order by dd.id desc
        limit #{offset},#{pageSize}
@@ -412,11 +421,12 @@
                 left join sd.order_glass_detail as ogd
                           on ogd.order_id = o.order_id and ogd.order_number = dd.order_number
                               and ogd.technology_number and dd.technology_number
        where date(rw.reporting_work_time) >= #{startDate}
          and date(rw.reporting_work_time) &lt;= #{endDate}
        left join sd.order_detail as od on o.order_id = od.order_id and od.order_number=ogd.order_number
        where (rw.reporting_work_time) >= #{startDate}
          and (rw.reporting_work_time) &lt;= #{endDate}
          and rw.this_worn_quantity > 0
          and dd.available = 0
          and reviewed_state != 2
          and rw.reviewed_state>=0
          and rw.this_process != dd.responsible_process
        <if test="crossProcessBreakingDTO.code != null and crossProcessBreakingDTO.code != ''">
            and JSON_UNQUOTE( JSON_EXTRACT( od.other_columns, '$.S01' )) regexp #{crossProcessBreakingDTO.code}
@@ -451,6 +461,9 @@
        <if test="crossProcessBreakingDTO.code != null and crossProcessBreakingDTO.code != ''">
            and ifnull(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')),'') regexp #{crossProcessBreakingDTO.code}
        </if>
        <if test="crossProcessBreakingDTO.reportingWorkId != null and crossProcessBreakingDTO.reportingWorkId != ''">
            and rw.reporting_work_id regexp #{crossProcessBreakingDTO.reportingWorkId}
        </if>
        order by dd.id desc
    </select>
@@ -465,8 +478,9 @@
        left join sd.order_glass_detail as ogd
        on ogd.order_id = o.order_id and ogd.order_number = dd.order_number
        and ogd.technology_number and dd.technology_number
        where date(rw.reporting_work_time) >= #{startDate}
        and date(rw.reporting_work_time) &lt;= #{endDate}
        left join sd.order_detail as od on o.order_id = od.order_id and od.order_number=ogd.order_number
        where (rw.reporting_work_time) >= #{startDate}
        and (rw.reporting_work_time) &lt;= #{endDate}
        and rw.this_worn_quantity > 0
        and dd.available = 0
        and reviewed_state != 2
@@ -760,7 +774,8 @@
        ogd.child_height,
        ifnull(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')),'') AS glassNumber,
        rw.this_process,
        rw.creator
        rw.creator,
        rw.reporting_work_id
        FROM
        sd.ORDER AS o
        LEFT JOIN sd.order_glass_detail AS ogd ON ogd.order_id = o.order_id
@@ -771,7 +786,7 @@
        left join sd.order_detail as od on o.order_id = od.order_id and od.order_number=ogd.order_number
        WHERE
        rw.reporting_work_time >= #{selectTime1}
        AND rw.reporting_work_time &lt;  #{selectTime2}
        AND rw.reporting_work_time &lt;=  #{selectTime2}
        AND dd.available = 0 and rw.reviewed_state>=0
        <if test="damageReportDTO.orderId != null and damageReportDTO.orderId != ''">
@@ -816,6 +831,9 @@
        <if test="damageReportDTO.creator != null and damageReportDTO.creator != ''">
            and rw.creator regexp #{damageReportDTO.creator}
        </if>
        <if test="damageReportDTO.reportingWorkId != null and damageReportDTO.reportingWorkId != ''">
            and rw.reporting_work_id regexp #{damageReportDTO.reportingWorkId}
        </if>
        GROUP BY
        dd.id
        limit #{offset},#{pageSize};
@@ -834,8 +852,8 @@
        AND dd.technology_number = ogd.technology_number
        WHERE
        rw.reporting_work_time >= #{selectTime1}
        AND rw.reporting_work_time &lt;  #{selectTime2}
        AND dd.available = 0
        AND rw.reporting_work_time &lt;=  #{selectTime2}
        AND dd.available = 0 and rw.reviewed_state>=0
        <if test="damageReportDTO.orderId != null and damageReportDTO.orderId != ''">
            and o.order_id regexp #{damageReportDTO.orderId}
        </if>
@@ -1015,23 +1033,44 @@
    </select>
    <select id="productionScheduleMp">
        select a.order_number,
               if(a.shape='' || ISNULL(a.shape),'普形',if(a.shape = 1, '普形', if(a.shape = 2, '异形', ''))) as shape,
               a.product_name,
        select a.product_name,
               b.glass_child,
               d.order_type,
               concat(c.process_id, '/', c.technology_number) as process_id,
               c.process_id as 'processId',
                c.order_id,
               c.order_number,
               c.technology_number,
               b.child_width,
               b.child_height,
               c.quantity - ifnull(c.termination_quantity,0) as quantity,
               c.technology_number,
               b.glass_child,
               ifnull(e.reportWorkQuantity, 0)                      as reportWorkQuantity,
               ifnull(e.reportWorkQuantityCount, 0)                 as reportWorkQuantityCount,
               ifnull(f.inventory, 0)                               as inventoryNum,
               round(ifnull(f.inventory, 0) * a.area, 2)            as inventoryArea,
               ifnull(dd.quantity, 0)                               as shippedQuantity,
               ifnull(dd.area, 0)                                   as area,
               ifnull(JSON_UNQUOTE(JSON_EXTRACT(a.other_columns, '$.S01')),'') AS glassNumber
               c.quantity,
        from flow_card as c
               c.quantity-ifnull(c.termination_quantity,0) as thisQuantity,/*用于判断是否改变颜色*/
               e.reportWorkQuantity,
               e.reportWorkQuantityShow,
               e.reportWorkQuantityCount,
               e.reportWorkTime,
               e.broken_num,
               c.quantity-ifnull(c.termination_quantity,0) as glassQuantity,
               c.quantity-ifnull(c.termination_quantity,0) as quantityShow,
               round( (c.quantity-ifnull(c.termination_quantity,0))*a.compute_area,2) as grossAreaShow,
               ifnull(c.received_quantity, 0) as inventoryNum,
               ifnull(dd.quantity, 0) as shippedQuantityShow, -- 发货数量
               round(ifnull(dd.quantity, 0)*a.compute_area,2) as shippedAreaShow, -- 发货面积
               round((ifnull(c.received_quantity, 0))*a.compute_area,2)  as inventoryArea,-- 入库面积
               round((c.quantity-ifnull(c.termination_quantity,0))*a.compute_area,2)as grossArea,
               ifnull(c.received_quantity, 0)                       as Storage,
               ifnull(dd.quantity, 0)                        as shippedQuantity,
               round(ifnull(dd.quantity, 0)*a.compute_area,2)        as shippedArea,
               round((ifnull(c.received_quantity, 0))*a.compute_area,2) as StorageArea,
               ifnull(JSON_UNQUOTE(JSON_EXTRACT(a.other_columns, '$.S01')),'') AS glassNumber,
               b.`group`
        from pp.flow_card as c
                 left join
             sd.order_detail as a
             on c.order_id = a.order_id
@@ -1042,30 +1081,45 @@
                               and c.technology_number = b.technology_number
                 left join sd.`order` as d
                           on c.order_id = d.order_id
                 left join mm.finished_goods_inventory as f
                           on c.order_id = f.order_id and f.order_number = c.order_number
                 left join (SELECT process_id,
                                   order_number,
                                   technology_number,
                                   sum(a.broken_num) as broken_num,
                                   concat('{',
                                          GROUP_CONCAT(concat("\"", process, "\":\"", reporting_work_num, "\"")),
                                          '}'
                                       )             as reportWorkQuantity,
                                   concat('{',
                                          GROUP_CONCAT(concat("\"", process, "\":\"", reporting_work_num_count, "\"")),
                                          '}'
                                       )             as reportWorkQuantityCount
                            FROM sd.order_process_detail as a
                            where a.order_id = #{orderId}
                            GROUP BY process_id, a.order_number,a.technology_number) as e
                           on e.process_id = c.process_id
                                and   e.order_number=c.order_number
                               and e.technology_number = c.technology_number
                 left join sd.delivery_detail as dd on dd.order_id = a.order_id and dd.order_number = a.order_number
        where a.order_id = #{orderId} and d.create_order>0 and c.quantity - ifnull(c.termination_quantity,0)>0
        group by c.order_number,c.technology_number
        ORDER BY a.order_number
            #                  left join mm.finished_goods_inventory as f
#                            on c.order_id = f.order_id and f.order_number = c.order_number
            left join sd.delivery_detail as dd on dd.order_id = a.order_id and dd.order_number = a.order_number
            left join (SELECT process_id,
            order_number,
            technology_number,
            sum(a.broken_num) as broken_num,
            concat('{',
            GROUP_CONCAT(concat("\"", process, "\":\"", if(technology_number!=1 and (bd.nickname='stepD' || bd.nickname='stepB' ) ,0,reporting_work_num), "\"")),
            '}'
            )             as reportWorkQuantity,
            concat('{',
            GROUP_CONCAT(concat("\"", process, "\":\"", reporting_work_num, "\"")),
            '}'
            )             as reportWorkQuantityShow,
            concat('{',
            GROUP_CONCAT(concat("\"", process, "\":\"", reporting_work_num_count, "\"")),
            '}'
            )             as reportWorkQuantityCount,
            concat('{',
            GROUP_CONCAT(concat("\"", process, "\":\"", IFNULL(date(update_time),''), "\"")),
            '}'
            )             as reportWorkTime
            FROM sd.order_process_detail as a
            left join (SELECT DISTINCT basic_name,nickname from sd.basic_data as bd where  bd.basic_category = 'process') as bd
            on a.process = bd.basic_name
            where a.order_id =#{orderId}
            GROUP BY process_id, a.order_number, a.technology_number
            ) as e
            on e.process_id = c.process_id
            and e.technology_number = c.technology_number
            and e.order_number = c.order_number
        where a.order_id = #{orderId} and d.create_order>0 and c.quantity-ifnull(c.termination_quantity,0)>0
        group by c.order_number,
            c.technology_number,
            c.process_id
        order by c.process_id, c.order_number, c.technology_number
    </select>
    <select id="taskCompletionStatusMp">
@@ -1209,7 +1263,8 @@
               rw.this_process,
               JSON_UNQUOTE( JSON_EXTRACT( od.other_columns, '$.S01' )) AS code,
               CONCAT(rw.process_id,'/',GROUP_CONCAT(distinct dd.technology_number SEPARATOR '')) as process_id,
               rw.creator
               rw.creator,
               rw.reporting_work_id
        from damage_details as dd
                 left join reporting_work as rw
                           on rw.reporting_work_id = dd.reporting_work_id
@@ -1245,7 +1300,8 @@
               rw.this_process,
               JSON_UNQUOTE( JSON_EXTRACT( od.other_columns, '$.S01' )) AS code,
               CONCAT(rw.process_id,'/',GROUP_CONCAT(distinct dd.technology_number SEPARATOR '')) as process_id,
               rw.creator
               rw.creator,
               rw.reporting_work_id
        from damage_details as dd
                 left join reporting_work as rw
                           on rw.reporting_work_id = dd.reporting_work_id
@@ -1286,7 +1342,8 @@
               ogd.child_height,
               ifnull(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')),'') AS glassNumber,
               rw.this_process,
               rw.creator
               rw.creator,
               rw.reporting_work_id
        FROM sd.ORDER AS o
                 LEFT JOIN sd.order_glass_detail AS ogd ON ogd.order_id = o.order_id
                 LEFT JOIN reporting_work AS rw ON rw.order_id = o.order_id
@@ -2402,7 +2459,7 @@
                AND od.order_number = ogd.order_number
        WHERE
            rw.reporting_work_time >= #{selectTime1}
          AND rw.reporting_work_time &lt;  #{selectTime2}
          AND rw.reporting_work_time &lt;=  #{selectTime2}
          AND dd.available = 0 and rw.reviewed_state>=0
        <if test="damageReportDTO.orderId != null and damageReportDTO.orderId != ''">
            and o.order_id regexp #{damageReportDTO.orderId}