liding
13 小时以前 cf984315319d060fa55b1f35cd95403690a30762
src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml
@@ -22,7 +22,7 @@
        FROM
        sales_ledger_production_accounting t4
        LEFT JOIN sales_ledger T1 ON T1.id = t4.sales_ledger_id
        left join sales_ledger_product t3 on t4.sales_ledger_product_id = t3.id
        left join sales_ledger_product t3 on t4.sales_ledger_product_id = t3.id and slp.type = 1
        <where>
            t3.type = 1
            <if test="salesLedgerDto.schedulingUserName != null and salesLedgerDto.schedulingUserName != '' ">
@@ -55,37 +55,37 @@
        SELECT
        slpa.scheduling_user_id,
        slpa.scheduling_user_name,
        sum(ppout.quantity) as output_num,
        sum(slpa.finished_num * work_hours) as wages,
        IFNULL(SUM(ppout.quantity), 0) AS output_num,
        IFNULL(SUM(slpa.finished_num * slpa.work_hours), 0) AS wages,
        CONCAT(
        ROUND(
        CASE
        WHEN SUM(ppout.quantity) = 0 OR SUM(ppout.quantity) IS NULL THEN 0
        WHEN IFNULL(SUM(ppout.quantity), 0) = 0 THEN 0
        ELSE SUM(slpa.finished_num) * 100.0 / SUM(ppout.quantity)
        END,
        2
        ),
        '%'
        ) as output_rate
        ) AS output_rate
        FROM sales_ledger_production_accounting slpa
        LEFT JOIN production_product_main ppm ON slpa.product_main_id = ppm.id
        LEFT JOIN production_product_output ppout ON ppm.id = ppout.product_main_id
        LEFT JOIN production_product_main ppm
        ON slpa.product_main_id = ppm.id
        LEFT JOIN production_product_output ppout
        ON ppm.id = ppout.product_main_id
        <where>
            <if test="ew.schedulingUserName != null and ew.schedulingUserName !=''">
                and slpa.scheduling_user_name = #{ew.schedulingUserName}
                AND slpa.scheduling_user_name = #{ew.schedulingUserName}
            </if>
            <if test="ew.entryDate != null ">
                and slpa.scheduling_date >= #{ew.entryDate}
                and slpa.scheduling_date &lt; DATE_ADD(DATE(#{ew.entryDate}), INTERVAL 1 DAY)
                AND slpa.scheduling_date >= #{ew.entryDate}
                AND slpa.scheduling_date &lt; DATE_ADD(DATE(#{ew.entryDate}), INTERVAL 1 DAY)
            </if>
            <if test="ew.entryDateStart != null and ew.entryDateEnd != null">
                and slpa.scheduling_date >= #{ew.entryDateStart}
                and slpa.scheduling_date &lt; DATE_ADD(DATE(#{ew.entryDateEnd}), INTERVAL 1 DAY)
                AND slpa.scheduling_date >= #{ew.entryDateStart}
                AND slpa.scheduling_date &lt; DATE_ADD(DATE(#{ew.entryDateEnd}), INTERVAL 1 DAY)
            </if>
        </where>
        GROUP BY slpa.scheduling_user_name
        GROUP BY slpa.scheduling_user_id, slpa.scheduling_user_name
    </select>
    <select id="selectDailyWagesStats" resultType="java.util.Map">
@@ -105,6 +105,19 @@
        GROUP BY DATE(ppout.create_time)
        ORDER BY DATE(ppout.create_time);
    </select>
    <select id="getByUserId" resultType="com.ruoyi.production.dto.UserAccountDto">
        select
            slpa.scheduling_user_id as user_id,
            pp.type,
            sum(case when pp.type = 0 then slpa.work_hours else 0 end) as account,
            sum(case when pp.type = 1 then slpa.work_hours else 0 end) as accountBalance
        from sales_ledger_production_accounting slpa
                 left join product_process pp on pp.name = slpa.process
        where  slpa.scheduling_user_id = #{ew.userId}
          and slpa.scheduling_date like concat(#{ew.date}, '%')
        group by slpa.scheduling_user_id
    </select>
</mapper>