guoyuji
2025-03-04 ccc2589e5fe52fbdf47f4f68f9c4b2de373bf416
north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
@@ -68,9 +68,10 @@
            d.shape ,
            op.process_cards ,
            d.product_name ,
            d.price,
            op.remark ,
            d.building_number ,
            round(((`g`.`child_width` + g.child_height) * 2 * `f`.`quantity`),2) as perimeter ,
            round(((`g`.`child_width`/ 1000 + g.child_height / 1000) * 2 * `f`.`quantity`),2) as perimeter ,
            round((`g`.`area` * `f`.`quantity`),4) AS area,
            f.technology_number ,
            g.glass_child ,
@@ -87,6 +88,28 @@
            f.order_id,
            f.technology_number,
            f.order_number;
    </select>
    <!--工程信息流程卡-->
    <select id="getProcessCardMp">
        SELECT
            fc.process_id,
            fc.order_number,
            fc.quantity,
            CONCAT(fc.technology_number, '/', COUNT(fc.technology_number)) AS layer,
            so.project,
            CONCAT(sd.child_width, ' × ', sd.child_height) AS sizes
        FROM
            pp.flow_card AS fc
                INNER JOIN sd.order AS so ON fc.order_id = so.order_id
                INNER JOIN sd.order_glass_detail AS sd ON sd.order_id = so.order_id AND fc.order_id = sd.order_id
                        AND fc.order_number = sd.order_number
        WHERE
            fc.project_no = #{projectNo}
        GROUP BY
            fc.order_id,
            fc.technology_number,
            fc.order_number
    </select>
    <!--库存信息-->
@@ -166,31 +189,48 @@
    </select>
    <select id="getFlowCardListMp">
        select fc.process_id,
               fc.technology_number,
               fcss.TotalFloors,
               COUNT(fc.order_number)                                      as TotalNumber,
               SUM(fc.quantity)                                            as quantity,
               ROUND(SUM(od.width * od.height * fc.quantity / 1000000), 2) as area,
               o.project,
               ogd.glass_child,
               od.shape
        from pp.flow_card as fc
                 left join sd.`order` as o on fc.order_id = o.order_id
                 left join sd.order_detail as od on od.order_id = fc.order_id and od.order_number = fc.order_number
                 left join sd.order_glass_detail as ogd
                           on ogd.order_id = fc.order_id and ogd.order_number = fc.order_number and
                              ogd.technology_number = fc.technology_number
                 left join (select fcs.process_id,
                                   fcs.order_number,
                                   COUNT(DISTINCT fcs.technology_number) as TotalFloors
                            from pp.flow_card as fcs
                            GROUP BY fcs.process_id, fcs.order_number) as fcss
                           on fcss.process_id = fc.process_id and fcss.order_number = fc.order_number
        where position(#{optionVal} in ogd.glass_child)
        GROUP BY fc.process_id, fc.technology_number
        ORDER BY fc.process_id, fc.technology_number
        SELECT
            fc.process_id,
            fc.technology_number,
            fcss.TotalFloors,
            COUNT( fc.order_number ) AS TotalNumber,
            SUM( fc.quantity ) AS quantity,
            ROUND( SUM( od.width * od.height * fc.quantity / 1000000 ), 2 ) AS area,
            o.project,
            ogd.glass_child,
            od.shape,
            CONCAT( JSON_UNQUOTE( JSON_EXTRACT( pd.separation, '$.thickness' )), JSON_UNQUOTE( JSON_EXTRACT( pd.separation, '$.color' )) ) AS glassType
        FROM
            pp.flow_card AS fc
                LEFT JOIN sd.`order` AS o ON fc.order_id = o.order_id
                LEFT JOIN sd.order_detail AS od ON od.order_id = fc.order_id
                AND od.order_number = fc.order_number
                LEFT JOIN sd.order_glass_detail AS ogd ON ogd.order_id = fc.order_id
                AND ogd.order_number = fc.order_number
                AND ogd.technology_number = fc.technology_number
                LEFT JOIN (
                SELECT
                    fcs.process_id,
                    fcs.order_number,
                    COUNT( DISTINCT fcs.technology_number ) AS TotalFloors
                FROM
                    pp.flow_card AS fcs
                GROUP BY
                    fcs.process_id,
                    fcs.order_number
            ) AS fcss ON fcss.process_id = fc.process_id
                AND fcss.order_number = fc.order_number
                LEFT JOIN sd.product_detail AS pd ON pd.prod_id = od.product_id
                AND pd.glass_sort = fc.technology_number
        WHERE
                CONCAT( JSON_UNQUOTE( JSON_EXTRACT( pd.separation, '$.thickness' )), JSON_UNQUOTE( JSON_EXTRACT( pd.separation, '$.color' )) )= #{optionVal}
              and ISNULL(fc.project_no)
        GROUP BY
            fc.process_id,
            fc.technology_number
        ORDER BY
            fc.process_id,
            fc.technology_number
    </select>
        <!--工程管理-->
@@ -334,4 +374,74 @@
            p.state IN (1, 2)
          AND f.process_id = #{processId}
    </select>
    <select id="getProcessCardDetailmMp">
        select fc.order_number,
               ogd.child_width,
               ogd.child_height,
               fc.quantity,
               od.building_number,IF(od.shape!=2,'普形','异形') as shape,
               ROUND(ogd.child_width*ogd.child_height*fc.quantity/1000000,2) as grossArea,
               pd.separation
        from pp.flow_card as fc
                 left join sd.order_glass_detail as ogd
                           on ogd.order_id=fc.order_id and ogd.order_number=fc.order_number
                               and ogd.technology_number=fc.technology_number
                 left join sd.order_detail as od on od.order_id=ogd.order_id and od.order_number=ogd.order_number
                 left join sd.product_detail as pd on pd.prod_id=od.product_id and pd.glass_sort=fc.technology_number
        where fc.process_id=#{processId} and fc.technology_number=#{technologyNumber}
        group by fc.process_id,fc.order_number,fc.technology_number
        order by fc.order_number,fc.technology_number
    </select>
    <select id="selectGlassTypeMp">
        SELECT
            JSON_UNQUOTE(JSON_EXTRACT(type, '$.lowE')) AS lowE,
            JSON_UNQUOTE(JSON_EXTRACT(type, '$.color')) AS color,
            JSON_UNQUOTE(JSON_EXTRACT(type, '$.thickness')) AS thickness,
            JSON_UNQUOTE(JSON_EXTRACT(type, '$.craft')) AS craft,
            JSON_UNQUOTE(JSON_EXTRACT(type, '$.position')) AS position,
    CONCAT(
        JSON_UNQUOTE(JSON_EXTRACT(type, '$.thickness')),
        JSON_UNQUOTE(JSON_EXTRACT(type, '$.color'))
    ) AS glassType
        FROM pp.v_optimize_create_process_type
        GROUP BY
            thickness,
            color
        ORDER BY
            CAST(REPLACE(JSON_UNQUOTE(JSON_EXTRACT(type, '$.thickness')), 'mm', '') AS UNSIGNED);
    </select>
    <select id="getProjectIdSv">
        SELECT IFNULL(
                       (SELECT project_no
                        FROM pp.optimize_project
                        WHERE DATE(create_time) = CURDATE()
           ORDER BY create_time DESC
           LIMIT 1), '00') AS project_no;
    </select>
    <update id="updateFlowCardProject">
        UPDATE pp.flow_card set project_no=#{projectId}
                             where process_id=#{processId} and technology_number=#{technologyNumber}
    </update>
    <select id="getSelectArea">
        select
            ROUND(SUM(ogd.child_width*ogd.child_height*fc.quantity)/1000000,2) as grossArea
        from pp.flow_card as fc
                 left join sd.order_glass_detail as ogd
                           on ogd.order_id=fc.order_id and ogd.order_number=fc.order_number
                               and ogd.technology_number=fc.technology_number
                 left join sd.order_detail as od on od.order_id=ogd.order_id and od.order_number=ogd.order_number
                 left join sd.product_detail as pd on pd.prod_id=od.product_id and pd.glass_sort=fc.technology_number
        where fc.process_id=#{processId} and fc.technology_number=#{technologyNumber}
        group by fc.process_id,fc.technology_number
    </select>
    <insert id="addProjectMp">
        insert into pp.optimize_project (project_no, project_name, order_glass_type, order_glass_thickness)
        values (#{projectId}, #{projectNmae}, #{glassType}, #{glassThickness})
    </insert>
</mapper>