yangys
2025-11-18 8e944cfabb253fc2556588e308e282586043f7b0
smart-man-boot/src/main/resources/com/qianwen/smartman/modules/mdc/mapper/SuperAggregateStateMapper.xml
@@ -6,24 +6,7 @@
        insert into iot_data.aggregate_state_${workstationId}
        values ${sql}
    </insert>
    <insert id="saveState">
        insert into iot_data.aggregate_state_${workstationId} USING iot_data.super_aggregate_state
        TAGS(${workstationId}) values
        <foreach separator="," collection="list" item="item" index="index">
            (#{item.startTime}, #{item.endTime}, #{item.durationCollect}, #{item.valueCollect}, #{item.calendarCode},
            #{item.factoryYear}, #{item.factoryMonth}, #{item.factoryWeek}, #{item.factoryDate},
            #{item.shiftIndex}, #{item.shiftTimeType}, #{item.wcs}, #{item.rps}, #{item.isDeleted},#{item.isPlan})
        </foreach>
    </insert>
    <update id="createTable">
        create table if not exists iot_data.aggregate_state_${workstationId} using super_aggregate_state tags
        (
            #{workstationId}
        )
    </update>
    <select id="countStatsShiftEndTimeNotNull" resultType="com.qianwen.smartman.modules.mdc.dto.CountResult">
        select sum(duration_collect) as nums, value_collect status
        from iot_data.super_aggregate_state
@@ -112,129 +95,13 @@
    </select>
    <select id="dateState"
            resultType="com.qianwen.smartman.modules.mdc.entity.SuperAggregateState">
        select ts as startTime,
        end_time as endTime,
        duration_collect,
        value_collect,
        calendar_code as calendarCode,
        factory_year as factoryYear,
        factory_month as factoryMonth,
        factory_week as factoryWeek,
        factory_date as factoryDate,
        shift_index as shiftIndex,
        shift_time_type as shiftTimeType,
        wcs,
        rps,
        is_deleted as isDeleted,
        workstation_id as workstationId,
        is_plan as isPlan
        from iot_data.super_aggregate_state
        where is_deleted = 0
        and wcs > 0
        and factory_date = #{factoryDate}
        <if test="ids != null and ids.size() > 0">
            AND workstation_id IN
            <foreach collection="ids" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
    </select>
    <select id="weekState"
            resultType="com.qianwen.smartman.modules.mdc.entity.SuperAggregateState">
        select ts as startTime,
        end_time as endTime,
        duration_collect,
        value_collect,
        calendar_code as calendarCode,
        factory_year as factoryYear,
        factory_month as factoryMonth,
        factory_week as factoryWeek,
        factory_date as factoryDate,
        shift_index as shiftIndex,
        shift_time_type as shiftTimeType,
        wcs,
        rps,
        is_deleted as isDeleted,
        workstation_id as workstationId,
        is_plan as isPlan
        from iot_data.super_aggregate_state
        where factory_year = #{year}
        and factory_week = #{week}
        and is_deleted = 0
        and wcs > 0
        <if test="ids != null and ids.size() > 0">
            AND workstation_id IN
            <foreach collection="ids" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
    </select>
    <select id="yearState"
            resultType="com.qianwen.smartman.modules.mdc.entity.SuperAggregateState">
        select ts as startTime,
        end_time as endTime,
        duration_collect,
        value_collect,
        calendar_code as calendarCode,
        factory_year as factoryYear,
        factory_month as factoryMonth,
        factory_week as factoryWeek,
        factory_date as factoryDate,
        shift_index as shiftIndex,
        shift_time_type as shiftTimeType,
        wcs,
        rps,
        is_deleted as isDeleted,
        workstation_id as workstationId,
        is_plan as isPlan
        from iot_data.super_aggregate_state
        where factory_year = #{year}
        and factory_month = #{month}
        and is_deleted = 0
        and wcs > 0
        <if test="ids != null and ids.size() > 0">
            AND workstation_id IN
            <foreach collection="ids" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
    </select>
    <select id="shiftState"
            resultType="com.qianwen.smartman.modules.mdc.entity.SuperAggregateState">
        select ts as startTime,
        end_time as endTime,
        duration_collect,
        value_collect,
        calendar_code as calendarCode,
        factory_year as factoryYear,
        factory_month as factoryMonth,
        factory_week as factoryWeek,
        factory_date as factoryDate,
        shift_index as shiftIndex,
        shift_time_type as shiftTimeType,
        wcs,
        rps,
        is_deleted as isDeleted,
        workstation_id as workstationId,
        is_plan as isPlan
        from iot_data.super_aggregate_state
        where factory_date = #{factoryDate}
        and wcs > 0
        and shift_index = #{shiftIndex}
        and calendar_code = #{calendarCode}
        and is_deleted = 0
        <if test="ids != null and ids.size() > 0">
            AND workstation_id IN
            <foreach collection="ids" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
    </select>
    <select id="deviceStatusStatisticsList"
            resultType="com.qianwen.smartman.modules.mdc.vo.DeviceStatusStatisticsVO">
@@ -394,20 +261,7 @@
        </if>
    </select>
    <select id="getStatusData" resultType="com.qianwen.smartman.modules.mdc.entity.SuperAggregateState">
        select
        <include refid="superAggregateStateColumnSql"/>
        from iot_data.super_aggregate_state
        where is_deleted = 0
        and wcs > 0
        and ts <![CDATA[>=]]> #{startDate} and ts <![CDATA[<]]> #{endDate}
        <if test="workstationIds != null and workstationIds.size() > 0">
            AND workstation_id IN
            <foreach collection="workstationIds" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
    </select>
    <sql id="superAggregateStateColumnSql">
        ts as startTime,
@@ -428,101 +282,11 @@
        is_plan as isPlan
    </sql>
    <select id="getStatusDataByTimeSection"
            resultType="com.qianwen.smartman.modules.mdc.entity.SuperAggregateState">
        select
        <include refid="superAggregateStateColumnSql"/>
        from iot_data.super_aggregate_state
        where is_deleted = 0
        and wcs > 0
        and ts <![CDATA[<]]> #{startDate} and #{startDate} <![CDATA[<=]]> end_time
        <if test="workstationIds != null and workstationIds.size() > 0">
            AND workstation_id IN
            <foreach collection="workstationIds" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
        union all
        select
        <include refid="superAggregateStateColumnSql"/>
        from iot_data.super_aggregate_state
        where is_deleted = 0
        and wcs > 0
        and ts <![CDATA[>=]]> #{startDate} and ts <![CDATA[<=]]> #{endDate}
        <if test="workstationIds != null and workstationIds.size() > 0">
            AND workstation_id IN
            <foreach collection="workstationIds" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
    </select>
    <select id="getStatusDataByFactoryDate"
            resultType="com.qianwen.smartman.modules.mdc.entity.SuperAggregateState">
        select ts as startTime,
        end_time as endTime,
        duration_collect,
        value_collect,
        calendar_code as calendarCode,
        factory_year as factoryYear,
        factory_month as factoryMonth,
        factory_week as factoryWeek,
        factory_date as factoryDate,
        shift_index as shiftIndex,
        shift_time_type as shiftTimeType,
        wcs,
        rps,
        workstation_id as workstationId,
        is_plan as isPlan
        from iot_data.super_aggregate_state
        where factory_date <![CDATA[>=]]> #{startDate} and factory_date <![CDATA[<=]]> #{endDate}
        and rps > 0
        and wcs > 0
        and is_deleted = false
        <if test="workstationIds != null and workstationIds.size() > 0">
            AND workstation_id IN
            <foreach collection="workstationIds" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
    </select>
    <select id="getEquipmentStatusDuration"
            resultType="com.qianwen.smartman.modules.mdc.entity.SuperAggregateState">
        select
        <include refid="superAggregateStateColumnSql"/>
        from iot_data.super_aggregate_state
        where ts <![CDATA[<]]> #{startDate} and #{startDate} <![CDATA[<=]]> end_time
        and is_deleted = 0
        and rps > 0
        and wcs > 0
        <if test="workstationIds != null and workstationIds.size() > 0">
            AND workstation_id IN
            <foreach collection="workstationIds" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
        <if test="status != null and status !=''">
            and wcs =#{status}
        </if>
        union all
        select
        <include refid="superAggregateStateColumnSql"/>
        from iot_data.super_aggregate_state
        where ts <![CDATA[>=]]> #{startDate} and ts <![CDATA[<=]]> #{endDate}
        and is_deleted = 0
        and rps > 0
        and wcs > 0
        <if test="workstationIds != null and workstationIds.size() > 0">
            AND workstation_id IN
            <foreach collection="workstationIds" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
        <if test="status != null and status !=''">
            and wcs =#{status}
        </if>
    </select>
    <select id="getEquipmentStatusRecord" resultType="com.qianwen.smartman.modules.mdc.entity.SuperAggregateState">
        select ts as startTime,
@@ -641,7 +405,7 @@
            #{week}
        </foreach>
    </select>
   <!--
    <select id="getDataByMonth" resultType="com.qianwen.smartman.modules.mdc.entity.SuperAggregateState">
        select ts as startTime,
        end_time as endTime,
@@ -671,7 +435,40 @@
            #{month}
        </foreach>
    </select>
     -->
   <select id="getDataByMonth" resultType="com.qianwen.smartman.modules.mdc.entity.SuperAggregateState">
        select
        end_time as endTime,
        duration_collect,
        value_collect,
        calendar_code as calendarCode,
        factory_year as factoryYear,
        factory_month as factoryMonth,
        factory_week as factoryWeek,
        factory_date as factoryDate,
        shift_index as shiftIndex,
        shift_time_type as shiftTimeType,
        wcs,
        rps,
        is_deleted as isDeleted,
        workstation_id as workstationId
        from root.f2.aggregate_state_*
        where is_deleted=false
        and wcs > 0
        and factory_year = #{year}
        and workstation_id IN
        <foreach collection="workstationIds" item="id" open="(" separator="," close=")">
            #{id}
        </foreach>
        and factory_month IN
        <foreach collection="monthList" item="month" open="(" separator="," close=")">
            #{month}
        </foreach>
         align by device
    </select>
    <!-- 这个有用吗 -->
    <select id="listCrossDay" resultType="com.qianwen.smartman.modules.mdc.entity.SuperAggregateState">
        select ts              as startTime,
               end_time        as endTime,
@@ -1124,6 +921,168 @@
        and is_deleted = 0
    </select>
   <!-- 调整的sql开始 -->
   <sql id="aggregateStateColumnSql">
        end_time as endTime,
        duration_collect as durationCollect,
        value_collect as valueCollect,
        calendar_code as calendarCode,
        factory_year as factoryYear,
        factory_month as factoryMonth,
        factory_week as factoryWeek,
        factory_date as factoryDate,
        shift_index as shiftIndex,
        shift_time_type as shiftTimeType,
        wcs,
        rps,
        is_deleted as isDeleted,
        workstation_id as workstationId,
        is_plan as isPlan
    </sql>
   <!-- 原来是union2个sql,现在合并未一个 -->
   <!--
   OK: where ((time <![CDATA[<]]> #{startDate} and end_time <![CDATA[>=]]> #{startDate.time}) or (time <![CDATA[>=]]> #{startDate} and time <![CDATA[<=]]> #{endDate.time}))
   where ((time <![CDATA[<]]> #{startDate} and #{startDate.time} <![CDATA[<=]]> end_time) or (time <![CDATA[>=]]> #{startDate} and time <![CDATA[<=]]> #{endDate.time})) -->
   <select id="getEquipmentStatusDuration"
            resultType="com.qianwen.smartman.modules.mdc.entity.SuperAggregateState">
        select
        <include refid="aggregateStateColumnSql"/>
        from root.f2.aggregate_state_*
         where ((time <![CDATA[<]]> #{startDate} and end_time <![CDATA[>=]]> #{startDate}) or (time <![CDATA[>=]]> #{startDate} and time <![CDATA[<=]]> #{endDate}))
        and is_deleted=false
        and rps > 0
        and wcs > 0
        <if test="workstationIds != null and workstationIds.size() > 0">
            AND workstation_id IN
            <foreach collection="workstationIds" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
        <if test="status != null and status !=''">
            and wcs =#{status}
        </if>
         align by device
    </select>
    <select id="getStatusDataByTimeSection"
            resultType="com.qianwen.smartman.modules.mdc.entity.SuperAggregateState">
        select
        <include refid="aggregateStateColumnSql"/>
        from root.f2.aggregate_state_*
        where is_deleted = false
        and wcs > 0
        and ((time <![CDATA[<]]> #{startDate} and end_time <![CDATA[>=]]> #{startDate}) or (time <![CDATA[>=]]> #{startDate} and time <![CDATA[<=]]> #{endDate}))
        <if test="workstationIds != null and workstationIds.size() > 0">
            AND workstation_id IN
            <foreach collection="workstationIds" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
          align by device
    </select>
    <select id="getStatusData" resultType="com.qianwen.smartman.modules.mdc.entity.SuperAggregateState">
        select
        <include refid="aggregateStateColumnSql"/>
        from root.f2.aggregate_state_*
        where is_deleted = false
        and wcs > 0
        and time <![CDATA[>=]]> #{startDate} and time <![CDATA[<]]> #{endDate}
        <if test="workstationIds != null and workstationIds.size() > 0">
            AND workstation_id IN
            <foreach collection="workstationIds" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
         align by device
    </select>
    <select id="getStatusDataByFactoryDate"
            resultType="com.qianwen.smartman.modules.mdc.entity.SuperAggregateState">
        select <include refid="aggregateStateColumnSql"/>
        from root.f2.aggregate_state_*
        where factory_date <![CDATA[>=]]> #{startFactoryDate} and factory_date <![CDATA[<=]]> #{endFactoryDate}
        and rps > 0
        and wcs > 0
        and is_deleted = false
        <if test="workstationIds != null and workstationIds.size() > 0">
            AND workstation_id IN
            <foreach collection="workstationIds" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
        align by device
    </select>
    <!-- 查询按班次的状态数据,在用时分析中使用 and calendar_code = #{calendarCode,jdbcType=VARCHAR} -->
    <select id="shiftState"
            resultType="com.qianwen.smartman.modules.mdc.entity.SuperAggregateState">
        select <include refid="aggregateStateColumnSql"/>
        from root.f2.aggregate_state_*
        where factory_date = #{factoryDate}
        and wcs > 0
        and shift_index = #{shiftIndex}
        and calendar_code = "#{calendarCode}"
        and is_deleted = false
        <if test="ids != null and ids.size() > 0">
            AND workstation_id IN
            <foreach collection="ids" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
         align by device
    </select>
    <select id="weekState"
            resultType="com.qianwen.smartman.modules.mdc.entity.SuperAggregateState">
        select <include refid="aggregateStateColumnSql"/>
        from root.f2.aggregate_state_*
        where factory_year = #{year}
        and factory_week = #{week}
        and is_deleted = false
        and wcs > 0
        <if test="ids != null and ids.size() > 0">
            AND workstation_id IN
            <foreach collection="ids" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
         align by device
    </select>
    <select id="yearState"
            resultType="com.qianwen.smartman.modules.mdc.entity.SuperAggregateState">
        select <include refid="aggregateStateColumnSql"/>
        from root.f2.aggregate_state_*
        where factory_year = #{year}
        and factory_month = #{month}
        and is_deleted = false
        and wcs > 0
        <if test="ids != null and ids.size() > 0">
            AND workstation_id IN
            <foreach collection="ids" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
         align by device
    </select>
    <select id="dateState"
            resultType="com.qianwen.smartman.modules.mdc.entity.SuperAggregateState">
        select <include refid="aggregateStateColumnSql"/>
        from root.f2.aggregate_state_*
        where is_deleted = false
        and wcs > 0
        and factory_date = #{factoryDate}
        <if test="ids != null and ids.size() > 0">
            AND workstation_id IN
            <foreach collection="ids" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
         align by device
    </select>
</mapper>