<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.iailab.module.model.mcs.pre.dao.MmPredictItemDao">

    <resultMap id="ItemVO" type="com.iailab.module.model.mdk.vo.ItemVO">
        <result property="id" column="ID"/>
        <result property="itemNo" column="ITEMNO"/>
        <result property="itemName" column="ITEMNAME"/>
        <result property="itemType" column="ITEMTYPENAME"/>
        <result property="predictLength" column="PREDICTLENGTH"/>
        <result property="granularity" column="GRANULARITY"/>
        <result property="status" column="STATUS"/>
        <result property="isFuse" column="ISFUSE"/>
        <result property="predictPhase" column="PREDICTPHASE"/>
        <result property="workChecked" column="WORKCHECKED"/>
        <result property="lastTime" column="last_time"/>
    </resultMap>

    <resultMap id="MergeItemVO" type="com.iailab.module.model.mdk.vo.MergeItemVO">
        <result property="id" column="ID"/>
        <result property="itemId" column="ITEMID"/>
        <result property="expression" column="EXPRESSION"/>
    </resultMap>

    <select id="getPageList" resultType="com.iailab.module.model.mcs.pre.vo.MmPredictItemRespVO"
            parameterType="map">
        SELECT
        TMPI.ID,
        TMPI.ITEMNO,
        TMPI.ITEMNAME,
        TMPI.ITEMTYPEID,
        TMIT.ITEMTYPENAME,
        TMPI.PREDICTLENGTH,
        TMPI.GRANULARITY,
        TMPI.ISFUSE,
        TMPI.WORKCHECKED,
        TDMI.MODULEID,
        TDMI.ITEMORDER,
        TMPI.STATUS,
        TDMI.CATEGORYID,
        TMIS.last_time,
        TMIS.status run_status,
        TMIS.duration,
        TDMM.modulename
        FROM T_MM_PREDICT_ITEM TMPI
        LEFT JOIN T_MM_ITEM_TYPE TMIT ON TMIT.ID = TMPI.ITEMTYPEID
        LEFT JOIN T_DM_MODULE_ITEM TDMI ON TDMI.ITEMID = TMPI.ID
        LEFT JOIN t_mm_item_status TMIS ON TMIS.item_id = TMPI.ID
        LEFT JOIN T_DM_MODULE TDMM ON TDMM.id = TDMI.moduleid
        <where>
            <if test="params.itemno != null and params.itemno != ''">
                AND TMPI.ITEMNO LIKE CONCAT('%', #{params.itemno},'%')
            </if>
            <if test="params.itemname != null and params.itemname != ''">
                AND TMPI.ITEMNAME LIKE CONCAT('%', #{params.itemname},'%')
            </if>
            <if test="params.itemtypeid != null and params.itemtypeid != ''">
                AND TMPI.ITEMTYPEID = #{params.itemtypeid}
            </if>
            <if test="params.itemtypename != null and params.itemtypename != ''">
                AND TMIT.ITEMTYPENAME = #{params.itemtypename}
            </if>
            <if test="params.status != null and params.status != ''">
                AND TMPI.STATUS = #{params.status}
            </if>
            <if test="params.modulename != null and params.modulename != ''">
                AND TDMM.modulename LIKE CONCAT('%', #{params.modulename},'%')
            </if>
            <if test="params.runStatus != null">
                AND TMIS.status = #{params.runStatus}
            </if>
        </where>
        ORDER BY TMPI.CREATE_TIME DESC
    </select>

    <resultMap id="MmPredictItemRespVO" type="com.iailab.module.model.mcs.pre.vo.MmPredictItemRespVO">
        <result property="id" column="ID"/>
        <result property="itemno" column="ITEMNO"/>
        <result property="itemname" column="ITEMNAME"/>
        <result property="itemtypeid" column="ITEMTYPEID"/>
        <result property="itemtypename" column="ITEMTYPENAME"/>
        <result property="predictlength" column="predictlength"/>
        <result property="granularity" column="GRANULARITY"/>
        <result property="isfuse" column="ISFUSE"/>
        <result property="workchecked" column="WORKCHECKED"/>
        <result property="moduleid" column="MODULEID"/>
        <result property="itemorder" column="ITEMORDER"/>
        <result property="status" column="STATUS"/>
        <result property="categoryid" column="CATEGORYID"/>
        <result property="lastTime" column="last_time"/>
        <collection property="outPuts" ofType="com.iailab.module.model.mcs.pre.vo.MmItemOutputRespVO">
            <result property="id" column="out_put_id"/>
            <result property="outputorder" column="out_put_order"/>
            <result property="resultName" column="result_name"/>
            <result property="resultstr" column="result_str"/>
        </collection>
    </resultMap>

    <select id="queryList" resultMap="MmPredictItemRespVO" parameterType="map">
        SELECT
        TMPI.ID,
        TMPI.ITEMNO,
        TMPI.ITEMNAME,
        TMPI.ITEMTYPEID,
        TMIT.ITEMTYPENAME,
        TMPI.predictlength,
        TMPI.GRANULARITY,
        TMPI.ISFUSE,
        TMPI.WORKCHECKED,
        TDMI.MODULEID,
        TDMI.ITEMORDER,
        TMPI.STATUS,
        TDMI.CATEGORYID,
        TMIO.id out_put_id,
        TMIO.outputorder out_put_order,
        TMIO.result_name
        FROM T_MM_PREDICT_ITEM TMPI
        LEFT JOIN T_MM_ITEM_TYPE TMIT ON TMIT.ID = TMPI.ITEMTYPEID
        LEFT JOIN T_DM_MODULE_ITEM TDMI ON TDMI.ITEMID = TMPI.ID
        LEFT JOIN t_mm_item_output TMIO ON TMIO.itemid = TMPI.ID
        WHERE 1 = 1
        <if test="itemno != null and itemno != ''">
            AND TMPI.ITEMNO LIKE CONCAT('%', #{itemno},'%')
        </if>
        <if test="itemname != null and itemname != ''">
            AND TMPI.ITEMNAME LIKE CONCAT('%', #{itemname},'%')
        </if>
        <if test="itemtypeid != null and itemtypeid != ''">
            AND TMPI.ITEMTYPEID = #{itemtypeid}
        </if>
        <if test="itemtypename != null and itemtypename != ''">
            AND TMIT.ITEMTYPENAME = #{itemtypename}
        </if>
        <if test="status != null and status != ''">
            AND TMPI.STATUS = #{status}
        </if>
        ORDER BY TMPI.CREATE_TIME DESC,TMIO.outputorder
    </select>

    <select id="getByModuleId" parameterType="map" resultMap="ItemVO">
        SELECT t1.id,
               t1.itemno,
               t1.itemname,
               t3.itemtypename,
               t1.predictlength,
               t1.granularity,
               t1.status,
               t1.isfuse,
               t1.workchecked,
               t1.unittransfactor
        FROM t_mm_predict_item t1,
             t_dm_module_item t2,
             t_mm_item_type t3
        WHERE t1.id = t2.itemid
          AND t1.itemtypeid = t3.id
          AND t2.moduleid = #{MODULEID}
          AND t2.status = 1
          AND t1.status = 1
        ORDER BY t2.itemorder
    </select>

    <select id="getItem" parameterType="map" resultMap="ItemVO">
        SELECT
        t1.id,
        t1.itemno ,
        t1.itemname ,
        t1.predictlength ,
        t2.itemtypename,
        t1.granularity,
        t1.status,
        t1.isfuse,
        t1.predictphase,
        t1.workchecked,
        t3.last_time
        FROM
        t_mm_predict_item t1
        LEFT JOIN t_mm_item_type t2 on t2.id = t1.itemtypeid
        LEFT JOIN t_mm_item_status t3 on t3.item_id = t1.id
        <where>
            <if test="ITEMID != null and ITEMID != ''">
                AND t1.id=#{ITEMID}
            </if>
            <if test="ITEMNO != null and ITEMNO != ''">
                t1.itemno=#{ITEMNO}
            </if>
        </where>
    </select>
    <select id="getMergeItemByItemId" parameterType="map" resultMap="MergeItemVO">
        SELECT t1.id,
               t1.itemid,
               t1.expression
        FROM t_mm_predict_merge_item t1
        WHERE t1.itemid = #{ITEMID}
    </select>
    <select id="getDoubleOutPutsByItemNos" resultMap="MmPredictItemRespVO" parameterType="map">
        SELECT
            TMPI.ID,
            TMPI.ITEMNO,
            TMPI.ITEMNAME,
            TMPI.ITEMTYPEID,
            TMPI.predictlength,
            TMPI.GRANULARITY,
            TMPI.ISFUSE,
            TMPI.WORKCHECKED,
            TMPI.STATUS,
            TMIO.id out_put_id,
            TMIO.outputorder out_put_order,
            TMIO.resultstr result_str,
            TMIO.result_name,
            TMIS.last_time
        FROM T_MM_PREDICT_ITEM TMPI
        LEFT JOIN t_mm_item_output TMIO ON TMIO.itemid = TMPI.ID AND TMIO.result_type = 3
        LEFT JOIN t_mm_item_status TMIS ON TMIS.item_id = TMPI.ID
        WHERE TMPI.itemno in
        <foreach collection="itemNos" item="item" open="(" close=")" separator=",">
            #{item}
        </foreach>
    </select>


</mapper>