严智鑫
2024-08-05 00c4dfc5ac687c93e0b7abafc33abb693b38edd6
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
@@ -19,40 +19,41 @@
    </resultMap>
    <select id="temperingIsAll" resultMap="temperingLayoutDTO">
        SELECT T.ENGINEER_ID,
               T.TEMPERING_LAYOUT_ID,
               COUNT(T.TEMPERING_FEED_SEQUENCE) AS COUNT
        FROM
            GLASS_INFO T
            LEFT JOIN DAMAGE T1
        ON T.ENGINEER_ID = T1.ENGINEER_ID
            AND T.GLASS_ID = T1.GLASS_ID
            LEFT JOIN BIG_STORAGE_CAGE_DETAILS T2 ON T.ENGINEER_ID = T2.ENGINEER_ID
            AND T.GLASS_ID = T2.GLASS_ID
        WHERE
            T1.GLASS_ID IS NULL
          AND T2.GLASS_ID IS NULL
          AND ( T.ENGINEER_ID
            , T.TEMPERING_LAYOUT_ID ) IN ( SELECT DISTINCT ENGINEER_ID
            , TEMPERING_LAYOUT_ID FROM BIG_STORAGE_CAGE_DETAILS WHERE STATE = 100 )
        GROUP BY
            T.ENGINEER_ID,
            T.TEMPERING_LAYOUT_ID
        HAVING
            COUNT = 0
        ORDER BY
            T.TEMPERING_LAYOUT_ID
            LIMIT 1
        SELECT T2.*
        FROM (
                 SELECT T.ENGINEER_ID,
                        T.TEMPERING_LAYOUT_ID,
                        COUNT(T.TEMPERING_FEED_SEQUENCE) AS COUNT
                 FROM
                     GLASS_INFO T
                     LEFT JOIN DAMAGE T1
                 ON T.ENGINEER_ID = T1.ENGINEER_ID
                     AND T.GLASS_ID = T1.GLASS_ID
                 WHERE
                     T1.GLASS_ID IS NULL
                 GROUP BY
                     T.ENGINEER_ID,
                     T.TEMPERING_LAYOUT_ID
             ) T2
                 INNER JOIN (SELECT ENGINEER_ID, TEMPERING_LAYOUT_ID, COUNT(TEMPERING_FEED_SEQUENCE) AS COUNT
                             FROM BIG_STORAGE_CAGE_DETAILS
                             WHERE STATE in (100, 101, 102, 103)
                             GROUP BY ENGINEER_ID, TEMPERING_LAYOUT_ID) T3 ON T2.ENGINEER_ID = T3.ENGINEER_ID
            AND T2.TEMPERING_LAYOUT_ID = T3.TEMPERING_LAYOUT_ID
            AND T2.COUNT = T3.COUNT
        ORDER BY T2.ENGINEER_ID, T2.TEMPERING_LAYOUT_ID
    </select>
    <select id="queryTemperingOccupySlot" resultMap="temperingLayoutDTO">
        SELECT TEMPERING_LAYOUT_ID,
        SELECT ENGINEER_ID,
               TEMPERING_LAYOUT_ID,
               COUNT(DISTINCT SLOT) as SLOT_COUNT
        FROM BIG_STORAGE_CAGE_DETAILS
        WHERE STATE = 100
        GROUP BY ENGINEER_ID,
                 TEMPERING_LAYOUT_ID
        HAVING SLOT_COUNT &gt;= #{count} LIMIT 1
        HAVING SLOT_COUNT &gt;= #{count}
        ORDER BY SLOT_COUNT DESC
    </select>
    <select id="queryGlassMaxAndMin" resultMap="slotSequenceDTO">
        SELECT T.*,
@@ -73,4 +74,18 @@
                 INNER JOIN BIG_STORAGE_CAGE T1 ON T.SLOT = T1.SLOT
        ORDER BY T.MAX_SEQUENCE DESC
    </select>
    <update id="updateBySlot">
        update big_storage_cage_details
        <set>
            state = #{state}
        </set>
        <where>
            (glass_id,slot) in (
            <foreach collection="list" item="item" separator=",">
                (#{item.glassId}, #{item.targetSlot})
            </foreach>
            )
        </where>
    </update>
</mapper>