yangys
2024-09-27 26f8e5990686bdba2119024a260d986266506757
collect/src/main/resources/com/qianwen/mdc/collect/mapper/iotdb/DeviceStateMapper.xml
@@ -4,7 +4,7 @@
<mapper namespace="com.qianwen.mdc.collect.mapper.iotdb.DeviceStateMapper">
   <resultMap id="BaseResultMap" type="com.qianwen.mdc.collect.entity.iotdb.DeviceState">
       <result column="workstation_id" jdbcType="BIGINT" property="workstationId"/>
        <result column="value_collect" jdbcType="BIGINT" property="valueCollect"/>
        <result column="value_collect" jdbcType="INTEGER" property="valueCollect"/>
        <result column="calendar_code" jdbcType="VARCHAR" property="calendarCode"/>
        <result column="factory_year" jdbcType="INTEGER" property="factoryYear"/>
        <result column="factory_month" jdbcType="INTEGER" property="factoryMonth"/>
@@ -17,7 +17,10 @@
        <result column="is_sync" jdbcType="BOOLEAN" property="isSync"/>
        <result column="feedback_id" jdbcType="BIGINT" property="feedbackId"/>
        <result column="is_deleted" jdbcType="BOOLEAN" property="isDeleted"/>
        <result column="is_plan" jdbcType="BIGINT" property="isPlan"/>
        <result column="is_plan" jdbcType="INTEGER" property="isPlan"/>
        <result column="feedback_point_type" jdbcType="INTEGER" property="feedbackPointType"/><!-- new -->
        <result column="employee_id" jdbcType="BIGINT" property="employeeId"/>
    </resultMap>
   <!-- 
@@ -95,23 +98,97 @@
          align by device
    </select>
    
     <!-- 只能用as 和resultType的形式??? resultType="com.qianwen.mdc.collect.entity.iotdb.DeviceState"
     <select id="statesInTimeRange" resultMap="BaseResultMap">
        select <include refid="all_columns" /> FROM root.f2.state_${workstationId}
        <where>
           is_deleted=false
           <if test="timeRange.startTime != null">
               AND time &gt;= #{timeRange.startTime}
           </if>
          AND time &lt;= #{timeRange.endTime}
       </where>
        order by time asc
         align by device
    </select>-->
    <select id="fixPointCountByDate" resultType="Long">
        select count(factory_date) FROM root.f2.state_* where factory_date=#{factoryDate} and is_fix_point=true
    </select>
    
    <!-- 获取工位上时间小于指定时间的非反馈点(不含固定点) -->
    <!-- .eq(WorkstationState::getWorkstationId, feedback.getWorkstationId())
              .lt(WorkstationState::getTs,cancelDetail.getStartTime().getTime())
              .eq(WorkstationState::getIsFixPoint, Boolean.FALSE)
              .eq(WorkstationState::getFeedbackPointType, FeedbackTimePointEnum.NO_FEED_BACK_POINT.getValue())
              .ne(WorkstationState::getIsDeleted, Boolean.TRUE)); -->
    <select id="lastNoFeedbackStateLessThanTime" resultMap="BaseResultMap">
       select <include refid="all_columns" /> FROM root.f2.state_${workstationId}
        where
           is_deleted=false and is_fix_point=false
           and feedback_point_type=0
          AND time &lt; #{time}
       order by time desc limit 1
    </select>
    <select id="lastNoFeedbackStateLeTime" resultMap="BaseResultMap">
       select <include refid="all_columns" /> FROM root.f2.state_${workstationId}
        where
           is_deleted=false and is_fix_point=false
           and feedback_point_type=0
          AND time &lt;= #{time}
       order by time desc limit 1
    </select>
    <!-- stateMapper.selectOne(Wrappers.<WorkstationState>lambdaQuery().eq(WorkstationState::getWorkstationId
        , workstationId).ne(WorkstationState::getIsDeleted, Boolean.TRUE).eq(WorkstationState::getTs, time)); -->
    <select id="getByWorkstationIdAndTime" resultMap="BaseResultMap">
       select <include refid="all_columns" /> FROM root.f2.state_${workstationId}
        where is_deleted=false AND time = #{time}
        limit 1
    </select>
    <!--
    Wrappers.<WorkstationState>lambdaQuery()
              .eq(WorkstationState::getWorkstationId, feedback.getWorkstationId())
              .le(WorkstationState::getTs, Long.valueOf(feedback.getEndTime().getTime()))
              .isNotNull(WorkstationState::getShiftIndex)
              .ne(WorkstationState::getIsDeleted, Boolean.TRUE));
     -->
    <select id="getLastByWorkstationIdAndLeTimeAndShiftIndexNotNull" resultMap="BaseResultMap">
       select <include refid="all_columns" /> FROM root.f2.state_${workstationId}
        where is_deleted=false AND time &lt;= #{time} and shift_index is not null
        order by time desc limit 1
    </select>
    <!--
    stateMapper.selectOne(Wrappers.<WorkstationState>lambdaQuery()
            .eq(WorkstationState::getWorkstationId, feedback.getWorkstationId())
            .eq(WorkstationState::getIsFixPoint, Boolean.TRUE)
            .eq(WorkstationState::getTs, Long.valueOf(feedback.getStartTime().getTime())));
     -->
    <select id="getFixPointByWorkstationIdAndTime" resultMap="BaseResultMap">
       select <include refid="all_columns" /> FROM root.f2.state_${workstationId}
        where is_fix_point=true AND time = #{time}
        limit 1
    </select>
    <!--
    工位上所有符合时间区间的非反馈点状态数据
    List<WorkstationState> effectiveStateList = stateMapper.selectList(Wrappers.<WorkstationState>lambdaQuery()
            .le(WorkstationState::getTs, Long.valueOf(analyseResult.getEffectiveEndDate().getTime()))
            .ge(WorkstationState::getTs, Long.valueOf(analyseResult.getEffectiveStartDate().getTime()))
            .eq(WorkstationState::getWorkstationId, analyseResult.getWorkstationId())
            .ne(WorkstationState::getIsDeleted, Boolean.TRUE)
            .gt(WorkstationState::getFeedbackPointType, FeedbackTimePointEnum.NO_FEED_BACK_POINT.getValue()));
     -->
   <select id="workstationNoFeedbackPointStatesInTimeRange" resultMap="BaseResultMap">
       select <include refid="all_columns" /> FROM root.f2.state_${workstationId}
        where feedback_point_type=0 and is_deleted=false and time &gt;= #{startTime} AND time &lt;= #{endTime}
    </select>
    <!--
    时间区间内的固定点数据
    List<WorkstationState> fixPointStateList = stateMapper.selectList(Wrappers.<WorkstationState>lambdaQuery()
            .le(WorkstationState::getTs, Long.valueOf(analyseResult.getEffectiveEndDate().getTime()))
            .ge(WorkstationState::getTs, Long.valueOf(analyseResult.getEffectiveStartDate().getTime()))
            .eq(WorkstationState::getWorkstationId, analyseResult.getWorkstationId())
            .eq(WorkstationState::getIsFixPoint, Boolean.TRUE));
     -->
    <select id="workstationFixPointStatesInTimeRange" resultMap="BaseResultMap">
       select <include refid="all_columns" /> FROM root.f2.state_${workstationId}
        where is_fix_point=true and is_deleted=false and time &gt;= #{startTime} AND time &lt;= #{endTime}
    </select>
</mapper>