5 天以前 0d7d874912d0147376826b55667a1deb6547ed91
src/main/resources/mapper/production/ProductionOrderMapper.xml
@@ -212,4 +212,85 @@
          and ifnull(complete_quantity, 0) < quantity
    </select>
    <select id="selectHomeOrderProgressPage" resultType="java.util.Map">
        select po.nps_no as orderNo,
               p.product_name as productName,
               ifnull(po.quantity, 0) as plannedQuantity,
               ifnull(po.complete_quantity, 0) as completedQuantity,
               round(ifnull(po.complete_quantity, 0) / nullif(po.quantity, 0) * 100, 2) as completionRate,
               po.plan_complete_time as dueDate,
               po.status as status
        from production_order po
                 left join product_model pm on po.product_model_id = pm.id
                 left join product p on pm.product_id = p.id
        <where>
            <if test="status != null">
                and po.status = #{status}
            </if>
            <if test="startTime != null and endTime != null">
                and po.create_time &gt;= #{startTime}
                and po.create_time &lt; #{endTime}
            </if>
        </where>
        order by po.id desc
        limit #{offset}, #{size}
    </select>
    <select id="countHomeOrderProgress" resultType="java.lang.Long">
        select count(1)
        from production_order po
        <where>
            <if test="status != null">
                and po.status = #{status}
            </if>
            <if test="startTime != null and endTime != null">
                and po.create_time &gt;= #{startTime}
                and po.create_time &lt; #{endTime}
            </if>
        </where>
    </select>
    <select id="countHomeOrderProgressByStatus" resultType="java.util.Map">
        select po.status as status, count(1) as cnt
        from production_order po
        where po.status in (1, 2, 3, 4)
        <if test="startTime != null and endTime != null">
            and po.create_time &gt;= #{startTime}
            and po.create_time &lt; #{endTime}
        </if>
        group by po.status
    </select>
    <select id="selectHomeTodayProductionPlan" resultType="java.util.Map">
        select po.nps_no as orderNo,
               p.product_name as productName,
               ifnull(po.quantity, 0) as plannedQuantity,
               po.plan_complete_time as dueDate,
               po.status as status
        from production_order po
                 left join product_model pm on po.product_model_id = pm.id
                 left join product p on pm.product_id = p.id
        <where>
            po.status in (1, 2)
            <if test="planStart != null and planEnd != null">
                and po.plan_complete_time &gt;= #{planStart}
                and po.plan_complete_time &lt; #{planEnd}
            </if>
        </where>
        order by case when po.status = 2 then 0 else 1 end, po.id desc
        limit #{size}
    </select>
    <select id="countHomeTodayProductionPlan" resultType="java.lang.Long">
        select count(1)
        from production_order po
        <where>
            po.status in (1, 2)
            <if test="planStart != null and planEnd != null">
                and po.plan_complete_time &gt;= #{planStart}
                and po.plan_complete_time &lt; #{planEnd}
            </if>
        </where>
    </select>
</mapper>