<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"mybatis-3-mapper.dtd">
<mapper namespace="com.mortals.xhx.module.asset.dao.ibatis.AssetDaoImpl">
    
	<!-- 字段和属性映射 -->
	<resultMap type="AssetEntity" id="AssetEntity-Map">
		<result property="id" column="id" />
		<result property="assetNum" column="assetNum" />
		<result property="deviceNum" column="deviceNum" />
		<result property="materiaId" column="materiaId" />
		<result property="materiaCode" column="materiaCode" />
		<result property="bomId" column="bomId" />
		<result property="producerId" column="producerId" />
		<result property="produceDate" column="produceDate" />
		<result property="produceCost" column="produceCost" />
		<result property="beforeFlowStatus" column="beforeFlowStatus" />
		<result property="flowStatus" column="flowStatus" />
		<result property="enabled" column="enabled" />
		<result property="updateTime" column="updateTime" />
		<result property="updateUser" column="updateUser" />
		<result property="createTime" column="createTime" />
		<result property="createUser" column="createUser" />
	</resultMap>
	
	
	
	<!-- 表所有列 -->
	<sql id="_columns">
		<trim suffixOverrides="," suffix="">
			<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('id') or colPickMode == 1 and data.containsKey('id')))">
				a.id as id,
			</if>
			<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('assetNum') or colPickMode == 1 and data.containsKey('assetNum')))">
				a.assetNum as assetNum,
			</if>
			<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('deviceNum') or colPickMode == 1 and data.containsKey('deviceNum')))">
				a.deviceNum as deviceNum,
			</if>
			<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('materiaId') or colPickMode == 1 and data.containsKey('materiaId')))">
				a.materiaId as materiaId,
			</if>
			<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('materiaCode') or colPickMode == 1 and data.containsKey('materiaCode')))">
				a.materiaCode as materiaCode,
			</if>
			<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('bomId') or colPickMode == 1 and data.containsKey('bomId')))">
				a.bomId as bomId,
			</if>
			<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('producerId') or colPickMode == 1 and data.containsKey('producerId')))">
				a.producerId as producerId,
			</if>
			<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('produceDate') or colPickMode == 1 and data.containsKey('produceDate')))">
				a.produceDate as produceDate,
			</if>
			<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('produceCost') or colPickMode == 1 and data.containsKey('produceCost')))">
				a.produceCost as produceCost,
			</if>
			<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('beforeFlowStatus') or colPickMode == 1 and data.containsKey('beforeFlowStatus')))">
				a.beforeFlowStatus as beforeFlowStatus,
			</if>
			<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('flowStatus') or colPickMode == 1 and data.containsKey('flowStatus')))">
				a.flowStatus as flowStatus,
			</if>
			<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('enabled') or colPickMode == 1 and data.containsKey('enabled')))">
				a.enabled as enabled,
			</if>
			<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('updateTime') or colPickMode == 1 and data.containsKey('updateTime')))">
				a.updateTime as updateTime,
			</if>
			<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('updateUser') or colPickMode == 1 and data.containsKey('updateUser')))">
				a.updateUser as updateUser,
			</if>
			<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createTime') or colPickMode == 1 and data.containsKey('createTime')))">
				a.createTime as createTime,
			</if>
			<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createUser') or colPickMode == 1 and data.containsKey('createUser')))">
				a.createUser as createUser,
			</if>
		</trim>
	</sql>
	<!-- 新增 -->
	<insert id="insert" parameterType="AssetEntity" useGeneratedKeys="true" keyProperty="id">
		insert into mortals_iot_asset 
		(assetNum,deviceNum,materiaId,materiaCode,bomId,
			producerId,produceDate,produceCost,beforeFlowStatus,flowStatus,
			enabled,updateTime,updateUser,createTime,createUser
		)VALUES(#{assetNum},#{deviceNum},#{materiaId},#{materiaCode},#{bomId},
			#{producerId},#{produceDate},#{produceCost},#{beforeFlowStatus},#{flowStatus},
			#{enabled},#{updateTime},#{updateUser},#{createTime},#{createUser})
	</insert>
	<!-- 批量新增 -->
	<insert id="insertBatch" parameterType="paramDto">
		insert into mortals_iot_asset 
		(assetNum,deviceNum,materiaId,materiaCode,bomId,
			producerId,produceDate,produceCost,beforeFlowStatus,flowStatus,
			enabled,updateTime,updateUser,createTime,createUser
		)
		VALUES
		<foreach collection="data.dataList" item="item" index="index" separator="," >  
		(#{item.assetNum},#{item.deviceNum},#{item.materiaId},#{item.materiaCode},#{item.bomId},
			#{item.producerId},#{item.produceDate},#{item.produceCost},#{item.beforeFlowStatus},#{item.flowStatus},
			#{item.enabled},#{item.updateTime},#{item.updateUser},#{item.createTime},#{item.createUser})
		</foreach>
	</insert>
	<!-- 根据ParamDto更新 -->
	<update id="update" parameterType="paramDto">
		update mortals_iot_asset as a
		   set
		   <trim suffixOverrides="," suffix="">
				<if test="(colPickMode==0 and data.containsKey('assetNum')) or (colPickMode==1 and !data.containsKey('assetNum'))">
					a.assetNum=#{data.assetNum},
				</if>
				<if test="(colPickMode==0 and data.containsKey('deviceNum')) or (colPickMode==1 and !data.containsKey('deviceNum'))">
					a.deviceNum=#{data.deviceNum},
				</if>
				<if test="(colPickMode==0 and data.containsKey('materiaId')) or (colPickMode==1 and !data.containsKey('materiaId'))">
					a.materiaId=#{data.materiaId},
				</if>
				<if test="(colPickMode==0 and data.containsKey('materiaIdIncrement')) or (colPickMode==1 and !data.containsKey('materiaIdIncrement'))">
					a.materiaId=ifnull(a.materiaId,0) + #{data.materiaIdIncrement},
				</if>
				<if test="(colPickMode==0 and data.containsKey('materiaCode')) or (colPickMode==1 and !data.containsKey('materiaCode'))">
					a.materiaCode=#{data.materiaCode},
				</if>
				<if test="(colPickMode==0 and data.containsKey('bomId')) or (colPickMode==1 and !data.containsKey('bomId'))">
					a.bomId=#{data.bomId},
				</if>
				<if test="(colPickMode==0 and data.containsKey('bomIdIncrement')) or (colPickMode==1 and !data.containsKey('bomIdIncrement'))">
					a.bomId=ifnull(a.bomId,0) + #{data.bomIdIncrement},
				</if>
				<if test="(colPickMode==0 and data.containsKey('producerId')) or (colPickMode==1 and !data.containsKey('producerId'))">
					a.producerId=#{data.producerId},
				</if>
				<if test="(colPickMode==0 and data.containsKey('producerIdIncrement')) or (colPickMode==1 and !data.containsKey('producerIdIncrement'))">
					a.producerId=ifnull(a.producerId,0) + #{data.producerIdIncrement},
				</if>
				<if test="(colPickMode==0 and data.containsKey('produceDate')) or (colPickMode==1 and !data.containsKey('produceDate'))">
					a.produceDate=#{data.produceDate},
				</if>
				<if test="(colPickMode==0 and data.containsKey('produceCost')) or (colPickMode==1 and !data.containsKey('produceCost'))">
					a.produceCost=#{data.produceCost},
				</if>
				<if test="(colPickMode==0 and data.containsKey('produceCostIncrement')) or (colPickMode==1 and !data.containsKey('produceCostIncrement'))">
					a.produceCost=ifnull(a.produceCost,0) + #{data.produceCostIncrement},
				</if>
				<if test="(colPickMode==0 and data.containsKey('beforeFlowStatus')) or (colPickMode==1 and !data.containsKey('beforeFlowStatus'))">
					a.beforeFlowStatus=#{data.beforeFlowStatus},
				</if>
				<if test="(colPickMode==0 and data.containsKey('beforeFlowStatusIncrement')) or (colPickMode==1 and !data.containsKey('beforeFlowStatusIncrement'))">
					a.beforeFlowStatus=ifnull(a.beforeFlowStatus,0) + #{data.beforeFlowStatusIncrement},
				</if>
				<if test="(colPickMode==0 and data.containsKey('flowStatus')) or (colPickMode==1 and !data.containsKey('flowStatus'))">
					a.flowStatus=#{data.flowStatus},
				</if>
				<if test="(colPickMode==0 and data.containsKey('flowStatusIncrement')) or (colPickMode==1 and !data.containsKey('flowStatusIncrement'))">
					a.flowStatus=ifnull(a.flowStatus,0) + #{data.flowStatusIncrement},
				</if>
				<if test="(colPickMode==0 and data.containsKey('enabled')) or (colPickMode==1 and !data.containsKey('enabled'))">
					a.enabled=#{data.enabled},
				</if>
				<if test="(colPickMode==0 and data.containsKey('enabledIncrement')) or (colPickMode==1 and !data.containsKey('enabledIncrement'))">
					a.enabled=ifnull(a.enabled,0) + #{data.enabledIncrement},
				</if>
				<if test="(colPickMode==0 and data.containsKey('updateTime')) or (colPickMode==1 and !data.containsKey('updateTime'))">
					a.updateTime=#{data.updateTime},
				</if>
				<if test="(colPickMode==0 and data.containsKey('updateUser')) or (colPickMode==1 and !data.containsKey('updateUser'))">
					a.updateUser=#{data.updateUser},
				</if>
				<if test="(colPickMode==0 and data.containsKey('createTime')) or (colPickMode==1 and !data.containsKey('createTime'))">
					a.createTime=#{data.createTime},
				</if>
				<if test="(colPickMode==0 and data.containsKey('createUser')) or (colPickMode==1 and !data.containsKey('createUser'))">
					a.createUser=#{data.createUser},
				</if>
		    </trim>
		   <trim suffixOverrides="where" suffix="">
			    where
			    <trim prefixOverrides="and" prefix="">
					<include refid="_condition_"/>
			   	</trim>
			</trim>
	</update>
	<!-- 批量更新 -->
	<update id="updateBatch" parameterType="paramDto">
		update mortals_iot_asset as a
		<trim prefix="set" suffixOverrides=",">
			<trim prefix="assetNum=(case" suffix="ELSE assetNum end),">
				<foreach collection="data.dataList" item="item" index="index" separator="" >
					<if test="(colPickMode==0 and item.containsKey('assetNum')) or (colPickMode==1 and !item.containsKey('assetNum'))">
						when a.id=#{item.id} then #{item.assetNum}
					</if>
				</foreach>
			</trim>
			<trim prefix="deviceNum=(case" suffix="ELSE deviceNum end),">
				<foreach collection="data.dataList" item="item" index="index" separator="" >
					<if test="(colPickMode==0 and item.containsKey('deviceNum')) or (colPickMode==1 and !item.containsKey('deviceNum'))">
						when a.id=#{item.id} then #{item.deviceNum}
					</if>
				</foreach>
			</trim>
			<trim prefix="materiaId=(case" suffix="ELSE materiaId end),">
				<foreach collection="data.dataList" item="item" index="index" separator="" >
					<choose>
						<when test="(colPickMode==0 and item.containsKey('materiaId')) or (colPickMode==1 and !item.containsKey('materiaId'))">
							when a.id=#{item.id} then #{item.materiaId}
						</when>
						<when test="(colPickMode==0 and item.containsKey('materiaIdIncrement')) or (colPickMode==1 and !item.containsKey('materiaIdIncrement'))">
							when a.id=#{item.id} then ifnull(a.materiaId,0) + #{item.materiaIdIncrement}
						</when>
					</choose>
				</foreach>
			</trim>
			<trim prefix="materiaCode=(case" suffix="ELSE materiaCode end),">
				<foreach collection="data.dataList" item="item" index="index" separator="" >
					<if test="(colPickMode==0 and item.containsKey('materiaCode')) or (colPickMode==1 and !item.containsKey('materiaCode'))">
						when a.id=#{item.id} then #{item.materiaCode}
					</if>
				</foreach>
			</trim>
			<trim prefix="bomId=(case" suffix="ELSE bomId end),">
				<foreach collection="data.dataList" item="item" index="index" separator="" >
					<choose>
						<when test="(colPickMode==0 and item.containsKey('bomId')) or (colPickMode==1 and !item.containsKey('bomId'))">
							when a.id=#{item.id} then #{item.bomId}
						</when>
						<when test="(colPickMode==0 and item.containsKey('bomIdIncrement')) or (colPickMode==1 and !item.containsKey('bomIdIncrement'))">
							when a.id=#{item.id} then ifnull(a.bomId,0) + #{item.bomIdIncrement}
						</when>
					</choose>
				</foreach>
			</trim>
			<trim prefix="producerId=(case" suffix="ELSE producerId end),">
				<foreach collection="data.dataList" item="item" index="index" separator="" >
					<choose>
						<when test="(colPickMode==0 and item.containsKey('producerId')) or (colPickMode==1 and !item.containsKey('producerId'))">
							when a.id=#{item.id} then #{item.producerId}
						</when>
						<when test="(colPickMode==0 and item.containsKey('producerIdIncrement')) or (colPickMode==1 and !item.containsKey('producerIdIncrement'))">
							when a.id=#{item.id} then ifnull(a.producerId,0) + #{item.producerIdIncrement}
						</when>
					</choose>
				</foreach>
			</trim>
			<trim prefix="produceDate=(case" suffix="ELSE produceDate end),">
				<foreach collection="data.dataList" item="item" index="index" separator="" >
					<if test="(colPickMode==0 and item.containsKey('produceDate')) or (colPickMode==1 and !item.containsKey('produceDate'))">
						when a.id=#{item.id} then #{item.produceDate}
					</if>
				</foreach>
			</trim>
			<trim prefix="produceCost=(case" suffix="ELSE produceCost end),">
				<foreach collection="data.dataList" item="item" index="index" separator="" >
					<choose>
						<when test="(colPickMode==0 and item.containsKey('produceCost')) or (colPickMode==1 and !item.containsKey('produceCost'))">
							when a.id=#{item.id} then #{item.produceCost}
						</when>
						<when test="(colPickMode==0 and item.containsKey('produceCostIncrement')) or (colPickMode==1 and !item.containsKey('produceCostIncrement'))">
							when a.id=#{item.id} then ifnull(a.produceCost,0) + #{item.produceCostIncrement}
						</when>
					</choose>
				</foreach>
			</trim>
			<trim prefix="beforeFlowStatus=(case" suffix="ELSE beforeFlowStatus end),">
				<foreach collection="data.dataList" item="item" index="index" separator="" >
					<choose>
						<when test="(colPickMode==0 and item.containsKey('beforeFlowStatus')) or (colPickMode==1 and !item.containsKey('beforeFlowStatus'))">
							when a.id=#{item.id} then #{item.beforeFlowStatus}
						</when>
						<when test="(colPickMode==0 and item.containsKey('beforeFlowStatusIncrement')) or (colPickMode==1 and !item.containsKey('beforeFlowStatusIncrement'))">
							when a.id=#{item.id} then ifnull(a.beforeFlowStatus,0) + #{item.beforeFlowStatusIncrement}
						</when>
					</choose>
				</foreach>
			</trim>
			<trim prefix="flowStatus=(case" suffix="ELSE flowStatus end),">
				<foreach collection="data.dataList" item="item" index="index" separator="" >
					<choose>
						<when test="(colPickMode==0 and item.containsKey('flowStatus')) or (colPickMode==1 and !item.containsKey('flowStatus'))">
							when a.id=#{item.id} then #{item.flowStatus}
						</when>
						<when test="(colPickMode==0 and item.containsKey('flowStatusIncrement')) or (colPickMode==1 and !item.containsKey('flowStatusIncrement'))">
							when a.id=#{item.id} then ifnull(a.flowStatus,0) + #{item.flowStatusIncrement}
						</when>
					</choose>
				</foreach>
			</trim>
			<trim prefix="enabled=(case" suffix="ELSE enabled end),">
				<foreach collection="data.dataList" item="item" index="index" separator="" >
					<choose>
						<when test="(colPickMode==0 and item.containsKey('enabled')) or (colPickMode==1 and !item.containsKey('enabled'))">
							when a.id=#{item.id} then #{item.enabled}
						</when>
						<when test="(colPickMode==0 and item.containsKey('enabledIncrement')) or (colPickMode==1 and !item.containsKey('enabledIncrement'))">
							when a.id=#{item.id} then ifnull(a.enabled,0) + #{item.enabledIncrement}
						</when>
					</choose>
				</foreach>
			</trim>
			<trim prefix="updateTime=(case" suffix="ELSE updateTime end),">
				<foreach collection="data.dataList" item="item" index="index" separator="" >
					<if test="(colPickMode==0 and item.containsKey('updateTime')) or (colPickMode==1 and !item.containsKey('updateTime'))">
						when a.id=#{item.id} then #{item.updateTime}
					</if>
				</foreach>
			</trim>
			<trim prefix="updateUser=(case" suffix="ELSE updateUser end),">
				<foreach collection="data.dataList" item="item" index="index" separator="" >
					<if test="(colPickMode==0 and item.containsKey('updateUser')) or (colPickMode==1 and !item.containsKey('updateUser'))">
						when a.id=#{item.id} then #{item.updateUser}
					</if>
				</foreach>
			</trim>
			<trim prefix="createTime=(case" suffix="ELSE createTime end),">
				<foreach collection="data.dataList" item="item" index="index" separator="" >
					<if test="(colPickMode==0 and item.containsKey('createTime')) or (colPickMode==1 and !item.containsKey('createTime'))">
						when a.id=#{item.id} then #{item.createTime}
					</if>
				</foreach>
			</trim>
			<trim prefix="createUser=(case" suffix="ELSE createUser end),">
				<foreach collection="data.dataList" item="item" index="index" separator="" >
					<if test="(colPickMode==0 and item.containsKey('createUser')) or (colPickMode==1 and !item.containsKey('createUser'))">
						when a.id=#{item.id} then #{item.createUser}
					</if>
				</foreach>
			</trim>
        </trim>
        where id in
		<foreach collection="data.dataList" item="item" index="index" open="(" separator="," close=")">
			#{item.id}
		</foreach>
	</update>
	<!-- 根据主健查询 -->
	<select id="getByKey" parameterType="paramDto" resultMap="AssetEntity-Map">
		select <include refid="_columns"/>
		from mortals_iot_asset as a
	   where a.id=#{condition.id}
	</select>
	<!-- 根据主健删除 -->
	<delete id="deleteByKey" parameterType="paramDto">
		delete a.* from mortals_iot_asset as a where a.id=#{condition.id}
	</delete>
	<!-- 根据主健删除一批,针对单一主健有效 -->
	<delete id="deleteByKeys">
		delete from mortals_iot_asset where id in
		<foreach collection="array" item="item" index="index" open="(" separator="," close=")">
			#{item}
		</foreach>
	</delete>
	<!-- 根据paramDto删除一批 -->
	<delete id="deleteByMap" parameterType="paramDto">
		delete a.* from mortals_iot_asset as a
		<trim suffixOverrides="where" suffix="">
			 where 
			<trim prefixOverrides="and" prefix="">
				<include refid="_condition_"/>
			</trim>
		</trim>
	</delete>
	<!-- 获取列表 -->
	<select id="getList" parameterType="paramDto" resultMap="AssetEntity-Map">
		select <include refid="_columns"/>
		  from mortals_iot_asset as a
		 <trim suffixOverrides="where" suffix="">
			 where 
			 <trim prefixOverrides="and" prefix="">
			 	<include refid="_condition_"/>
			 </trim>
		 </trim>
		 <include refid="_orderCols_"/>
	</select>
	<!-- 获取 -->
	<select id="getListCount" parameterType="paramDto" resultType="int">
		select count(1)
		  from mortals_iot_asset as a
		 <trim suffixOverrides="where" suffix="">
			 where 
			 <trim prefixOverrides="and" prefix="">
				<include refid="_condition_"/>
			</trim>
		</trim>
	</select>
	
	<!-- 条件映射 -->
	<sql id="_condition_">
		<if test="condition != null and !condition.isEmpty()">
			<!-- 条件映射-普通条件 -->
			<include refid="_condition_param_">
				<property name="_conditionParam_" value="condition"/>
				<property name="_conditionType_" value="and"/>
			</include>
			<!-- 条件映射-集合之间使用AND,集合中元素使用OR-(list[0].1 or list[0].2) and (list[1].3 or list[1].4) -->
			<if test="condition.containsKey('andConditionList') and !condition.andConditionList.isEmpty()">
				and
				<foreach collection="condition.andConditionList" open="(" close=")" index="index" item="andCondition" separator=" and ">
					<trim prefixOverrides="or" prefix="(" suffix=")">
						<include refid="_condition_param_">
							<property name="_conditionParam_" value="andCondition"/>
							<property name="_conditionType_" value="or"/>
						</include>
					</trim>
				</foreach>
			</if>
			<!-- 条件映射-集合之间使用OR,集合中元素使用AND-(list[0].1 and list[0].2) or (list[1].3 and list[1].4) -->
			<if test="condition.containsKey('orConditionList') and !condition.orConditionList.isEmpty()">
				and
				<foreach collection="condition.orConditionList" open="(" close=")" index="index" item="orCondition" separator=" or ">
					<trim prefixOverrides="and" prefix="(" suffix=")">
						<include refid="_condition_param_">
							<property name="_conditionParam_" value="orCondition"/>
							<property name="_conditionType_" value="and"/>
						</include>
					</trim>
				</foreach>
			</if>
		</if>
	</sql>
	<!-- 条件映射-代参数 -->
	<sql id="_condition_param_">
		<bind name="conditionParamRef" value="${_conditionParam_}"/>
		
		<if test="conditionParamRef.containsKey('id')">
			<if test="conditionParamRef.id != null">
				${_conditionType_} a.id=#{${_conditionParam_}.id}
			</if>
		</if>
		<if test="conditionParamRef.containsKey('id')">
			<if test="conditionParamRef.id != null ">
				${_conditionType_} a.id = #{${_conditionParam_}.id}
			</if>
			<if test="conditionParamRef.id == null">
				${_conditionType_} a.id is null
			</if>
		</if>
		<if test="conditionParamRef.containsKey('idList')">
			 ${_conditionType_} a.id in 
			<foreach collection="conditionParamRef.idList" open="(" close=")" index="index" item="item" separator=",">
				#{item}
			</foreach>
		</if>
		<if test="conditionParamRef.containsKey('idStart') and conditionParamRef.idStart != null">
			${_conditionType_} a.id <![CDATA[ >= ]]> #{${_conditionParam_}.idStart}
		</if>
		<if test="conditionParamRef.containsKey('idEnd') and conditionParamRef.idEnd != null">
			${_conditionType_} a.id <![CDATA[ <= ]]> #{${_conditionParam_}.idEnd}
		</if>
		<if test="conditionParamRef.containsKey('assetNum')">
			<if test="conditionParamRef.assetNum != null and conditionParamRef.assetNum != ''">
				${_conditionType_} a.assetNum like #{${_conditionParam_}.assetNum}
			</if>
			<if test="conditionParamRef.assetNum == null">
				${_conditionType_} a.assetNum is null
			</if>
		</if>
		<if test="conditionParamRef.containsKey('assetNumList')">
			 ${_conditionType_} a.assetNum in 
			<foreach collection="conditionParamRef.assetNumList" open="(" close=")" index="index" item="item" separator=",">
				#{item}
			</foreach>
		</if>
		<if test="conditionParamRef.containsKey('deviceNum')">
			<if test="conditionParamRef.deviceNum != null and conditionParamRef.deviceNum != ''">
				${_conditionType_} a.deviceNum like #{${_conditionParam_}.deviceNum}
			</if>
			<if test="conditionParamRef.deviceNum == null">
				${_conditionType_} a.deviceNum is null
			</if>
		</if>
		<if test="conditionParamRef.containsKey('deviceNumList')">
			 ${_conditionType_} a.deviceNum in 
			<foreach collection="conditionParamRef.deviceNumList" open="(" close=")" index="index" item="item" separator=",">
				#{item}
			</foreach>
		</if>
		<if test="conditionParamRef.containsKey('materiaId')">
			<if test="conditionParamRef.materiaId != null ">
				${_conditionType_} a.materiaId = #{${_conditionParam_}.materiaId}
			</if>
			<if test="conditionParamRef.materiaId == null">
				${_conditionType_} a.materiaId is null
			</if>
		</if>
		<if test="conditionParamRef.containsKey('materiaIdList')">
			 ${_conditionType_} a.materiaId in 
			<foreach collection="conditionParamRef.materiaIdList" open="(" close=")" index="index" item="item" separator=",">
				#{item}
			</foreach>
		</if>
		<if test="conditionParamRef.containsKey('materiaIdStart') and conditionParamRef.materiaIdStart != null">
			${_conditionType_} a.materiaId <![CDATA[ >= ]]> #{${_conditionParam_}.materiaIdStart}
		</if>
		<if test="conditionParamRef.containsKey('materiaIdEnd') and conditionParamRef.materiaIdEnd != null">
			${_conditionType_} a.materiaId <![CDATA[ <= ]]> #{${_conditionParam_}.materiaIdEnd}
		</if>
		<if test="conditionParamRef.containsKey('materiaCode')">
			<if test="conditionParamRef.materiaCode != null and conditionParamRef.materiaCode != ''">
				${_conditionType_} a.materiaCode like #{${_conditionParam_}.materiaCode}
			</if>
			<if test="conditionParamRef.materiaCode == null">
				${_conditionType_} a.materiaCode is null
			</if>
		</if>
		<if test="conditionParamRef.containsKey('materiaCodeList')">
			 ${_conditionType_} a.materiaCode in 
			<foreach collection="conditionParamRef.materiaCodeList" open="(" close=")" index="index" item="item" separator=",">
				#{item}
			</foreach>
		</if>
		<if test="conditionParamRef.containsKey('bomId')">
			<if test="conditionParamRef.bomId != null ">
				${_conditionType_} a.bomId = #{${_conditionParam_}.bomId}
			</if>
			<if test="conditionParamRef.bomId == null">
				${_conditionType_} a.bomId is null
			</if>
		</if>
		<if test="conditionParamRef.containsKey('bomIdList')">
			 ${_conditionType_} a.bomId in 
			<foreach collection="conditionParamRef.bomIdList" open="(" close=")" index="index" item="item" separator=",">
				#{item}
			</foreach>
		</if>
		<if test="conditionParamRef.containsKey('bomIdStart') and conditionParamRef.bomIdStart != null">
			${_conditionType_} a.bomId <![CDATA[ >= ]]> #{${_conditionParam_}.bomIdStart}
		</if>
		<if test="conditionParamRef.containsKey('bomIdEnd') and conditionParamRef.bomIdEnd != null">
			${_conditionType_} a.bomId <![CDATA[ <= ]]> #{${_conditionParam_}.bomIdEnd}
		</if>
		<if test="conditionParamRef.containsKey('producerId')">
			<if test="conditionParamRef.producerId != null ">
				${_conditionType_} a.producerId = #{${_conditionParam_}.producerId}
			</if>
			<if test="conditionParamRef.producerId == null">
				${_conditionType_} a.producerId is null
			</if>
		</if>
		<if test="conditionParamRef.containsKey('producerIdList')">
			 ${_conditionType_} a.producerId in 
			<foreach collection="conditionParamRef.producerIdList" open="(" close=")" index="index" item="item" separator=",">
				#{item}
			</foreach>
		</if>
		<if test="conditionParamRef.containsKey('producerIdStart') and conditionParamRef.producerIdStart != null">
			${_conditionType_} a.producerId <![CDATA[ >= ]]> #{${_conditionParam_}.producerIdStart}
		</if>
		<if test="conditionParamRef.containsKey('producerIdEnd') and conditionParamRef.producerIdEnd != null">
			${_conditionType_} a.producerId <![CDATA[ <= ]]> #{${_conditionParam_}.producerIdEnd}
		</if>
		<if test="conditionParamRef.containsKey('produceDate')">
			<if test="conditionParamRef.produceDate != null ">
				${_conditionType_} a.produceDate = #{${_conditionParam_}.produceDate}
			</if>
			<if test="conditionParamRef.produceDate == null">
				${_conditionType_} a.produceDate is null
			</if>
		</if>
		<if test="conditionParamRef.containsKey('produceDateStart') and conditionParamRef.produceDateStart != null and conditionParamRef.produceDateStart!=''">
			${_conditionType_} a.produceDate <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.produceDateStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
		</if>
		<if test="conditionParamRef.containsKey('produceDateEnd') and conditionParamRef.produceDateEnd != null and conditionParamRef.produceDateEnd!=''">
			${_conditionType_} a.produceDate <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.produceDateEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
		</if>
		<if test="conditionParamRef.containsKey('produceCost')">
			<if test="conditionParamRef.produceCost != null ">
				${_conditionType_} a.produceCost = #{${_conditionParam_}.produceCost}
			</if>
			<if test="conditionParamRef.produceCost == null">
				${_conditionType_} a.produceCost is null
			</if>
		</if>
		<if test="conditionParamRef.containsKey('produceCostList')">
			 ${_conditionType_} a.produceCost in 
			<foreach collection="conditionParamRef.produceCostList" open="(" close=")" index="index" item="item" separator=",">
				#{item}
			</foreach>
		</if>
		<if test="conditionParamRef.containsKey('produceCostStart') and conditionParamRef.produceCostStart != null">
			${_conditionType_} a.produceCost <![CDATA[ >= ]]> #{${_conditionParam_}.produceCostStart}
		</if>
		<if test="conditionParamRef.containsKey('produceCostEnd') and conditionParamRef.produceCostEnd != null">
			${_conditionType_} a.produceCost <![CDATA[ <= ]]> #{${_conditionParam_}.produceCostEnd}
		</if>
		<if test="conditionParamRef.containsKey('beforeFlowStatus')">
			<if test="conditionParamRef.beforeFlowStatus != null ">
				${_conditionType_} a.beforeFlowStatus = #{${_conditionParam_}.beforeFlowStatus}
			</if>
			<if test="conditionParamRef.beforeFlowStatus == null">
				${_conditionType_} a.beforeFlowStatus is null
			</if>
		</if>
		<if test="conditionParamRef.containsKey('beforeFlowStatusList')">
			 ${_conditionType_} a.beforeFlowStatus in 
			<foreach collection="conditionParamRef.beforeFlowStatusList" open="(" close=")" index="index" item="item" separator=",">
				#{item}
			</foreach>
		</if>
		<if test="conditionParamRef.containsKey('beforeFlowStatusStart') and conditionParamRef.beforeFlowStatusStart != null">
			${_conditionType_} a.beforeFlowStatus <![CDATA[ >= ]]> #{${_conditionParam_}.beforeFlowStatusStart}
		</if>
		<if test="conditionParamRef.containsKey('beforeFlowStatusEnd') and conditionParamRef.beforeFlowStatusEnd != null">
			${_conditionType_} a.beforeFlowStatus <![CDATA[ <= ]]> #{${_conditionParam_}.beforeFlowStatusEnd}
		</if>
		<if test="conditionParamRef.containsKey('flowStatus')">
			<if test="conditionParamRef.flowStatus != null ">
				${_conditionType_} a.flowStatus = #{${_conditionParam_}.flowStatus}
			</if>
			<if test="conditionParamRef.flowStatus == null">
				${_conditionType_} a.flowStatus is null
			</if>
		</if>
		<if test="conditionParamRef.containsKey('flowStatusList')">
			 ${_conditionType_} a.flowStatus in 
			<foreach collection="conditionParamRef.flowStatusList" open="(" close=")" index="index" item="item" separator=",">
				#{item}
			</foreach>
		</if>
		<if test="conditionParamRef.containsKey('flowStatusStart') and conditionParamRef.flowStatusStart != null">
			${_conditionType_} a.flowStatus <![CDATA[ >= ]]> #{${_conditionParam_}.flowStatusStart}
		</if>
		<if test="conditionParamRef.containsKey('flowStatusEnd') and conditionParamRef.flowStatusEnd != null">
			${_conditionType_} a.flowStatus <![CDATA[ <= ]]> #{${_conditionParam_}.flowStatusEnd}
		</if>
		<if test="conditionParamRef.containsKey('enabled')">
			<if test="conditionParamRef.enabled != null ">
				${_conditionType_} a.enabled = #{${_conditionParam_}.enabled}
			</if>
			<if test="conditionParamRef.enabled == null">
				${_conditionType_} a.enabled is null
			</if>
		</if>
		<if test="conditionParamRef.containsKey('enabledList')">
			 ${_conditionType_} a.enabled in 
			<foreach collection="conditionParamRef.enabledList" open="(" close=")" index="index" item="item" separator=",">
				#{item}
			</foreach>
		</if>
		<if test="conditionParamRef.containsKey('enabledStart') and conditionParamRef.enabledStart != null">
			${_conditionType_} a.enabled <![CDATA[ >= ]]> #{${_conditionParam_}.enabledStart}
		</if>
		<if test="conditionParamRef.containsKey('enabledEnd') and conditionParamRef.enabledEnd != null">
			${_conditionType_} a.enabled <![CDATA[ <= ]]> #{${_conditionParam_}.enabledEnd}
		</if>
		<if test="conditionParamRef.containsKey('updateTime')">
			<if test="conditionParamRef.updateTime != null ">
				${_conditionType_} a.updateTime = #{${_conditionParam_}.updateTime}
			</if>
			<if test="conditionParamRef.updateTime == null">
				${_conditionType_} a.updateTime is null
			</if>
		</if>
		<if test="conditionParamRef.containsKey('updateTimeStart') and conditionParamRef.updateTimeStart != null and conditionParamRef.updateTimeStart!=''">
			${_conditionType_} a.updateTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.updateTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
		</if>
		<if test="conditionParamRef.containsKey('updateTimeEnd') and conditionParamRef.updateTimeEnd != null and conditionParamRef.updateTimeEnd!=''">
			${_conditionType_} a.updateTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.updateTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
		</if>
		<if test="conditionParamRef.containsKey('updateUser')">
			<if test="conditionParamRef.updateUser != null and conditionParamRef.updateUser != ''">
				${_conditionType_} a.updateUser like #{${_conditionParam_}.updateUser}
			</if>
			<if test="conditionParamRef.updateUser == null">
				${_conditionType_} a.updateUser is null
			</if>
		</if>
		<if test="conditionParamRef.containsKey('updateUserList')">
			 ${_conditionType_} a.updateUser in 
			<foreach collection="conditionParamRef.updateUserList" open="(" close=")" index="index" item="item" separator=",">
				#{item}
			</foreach>
		</if>
		<if test="conditionParamRef.containsKey('createTime')">
			<if test="conditionParamRef.createTime != null ">
				${_conditionType_} a.createTime = #{${_conditionParam_}.createTime}
			</if>
			<if test="conditionParamRef.createTime == null">
				${_conditionType_} a.createTime is null
			</if>
		</if>
		<if test="conditionParamRef.containsKey('createTimeStart') and conditionParamRef.createTimeStart != null and conditionParamRef.createTimeStart!=''">
			${_conditionType_} a.createTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.createTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
		</if>
		<if test="conditionParamRef.containsKey('createTimeEnd') and conditionParamRef.createTimeEnd != null and conditionParamRef.createTimeEnd!=''">
			${_conditionType_} a.createTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.createTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
		</if>
		<if test="conditionParamRef.containsKey('createUser')">
			<if test="conditionParamRef.createUser != null and conditionParamRef.createUser != ''">
				${_conditionType_} a.createUser like #{${_conditionParam_}.createUser}
			</if>
			<if test="conditionParamRef.createUser == null">
				${_conditionType_} a.createUser is null
			</if>
		</if>
		<if test="conditionParamRef.containsKey('createUserList')">
			 ${_conditionType_} a.createUser in 
			<foreach collection="conditionParamRef.createUserList" open="(" close=")" index="index" item="item" separator=",">
				#{item}
			</foreach>
		</if>
	</sql>
	
	<sql id="_orderCols_">
		<if test="orderColList != null and !orderColList.isEmpty()">
	        order by
	        <trim suffixOverrides=","  suffix="">
				<foreach collection="orderColList" open="" close="" index="index" item="item" separator=",">
						${item.colName} ${item.sortKind}
				</foreach>
			</trim>
		</if>
		<if test="(orderColList == null or orderColList.isEmpty()) and orderCol != null and !orderCol.isEmpty()">
			order by
			<trim suffixOverrides=","  suffix="">
				<if test="orderCol.containsKey('id')">
					a.id
					<if test="orderCol.id!= null">
						${orderCol.id}
					</if>
					,
				</if>
				<if test="orderCol.containsKey('assetNum')">
					a.assetNum
					<if test="orderCol.assetNum!= null">
						${orderCol.assetNum}
					</if>
					,
				</if>
				<if test="orderCol.containsKey('deviceNum')">
					a.deviceNum
					<if test="orderCol.deviceNum!= null">
						${orderCol.deviceNum}
					</if>
					,
				</if>
				<if test="orderCol.containsKey('materiaId')">
					a.materiaId
					<if test="orderCol.materiaId!= null">
						${orderCol.materiaId}
					</if>
					,
				</if>
				<if test="orderCol.containsKey('materiaCode')">
					a.materiaCode
					<if test="orderCol.materiaCode!= null">
						${orderCol.materiaCode}
					</if>
					,
				</if>
				<if test="orderCol.containsKey('bomId')">
					a.bomId
					<if test="orderCol.bomId!= null">
						${orderCol.bomId}
					</if>
					,
				</if>
				<if test="orderCol.containsKey('producerId')">
					a.producerId
					<if test="orderCol.producerId!= null">
						${orderCol.producerId}
					</if>
					,
				</if>
				<if test="orderCol.containsKey('produceDate')">
					a.produceDate
					<if test="orderCol.produceDate!= null">
						${orderCol.produceDate}
					</if>
					,
				</if>
				<if test="orderCol.containsKey('produceCost')">
					a.produceCost
					<if test="orderCol.produceCost!= null">
						${orderCol.produceCost}
					</if>
					,
				</if>
				<if test="orderCol.containsKey('beforeFlowStatus')">
					a.beforeFlowStatus
					<if test="orderCol.beforeFlowStatus!= null">
						${orderCol.beforeFlowStatus}
					</if>
					,
				</if>
				<if test="orderCol.containsKey('flowStatus')">
					a.flowStatus
					<if test="orderCol.flowStatus!= null">
						${orderCol.flowStatus}
					</if>
					,
				</if>
				<if test="orderCol.containsKey('enabled')">
					a.enabled
					<if test="orderCol.enabled!= null">
						${orderCol.enabled}
					</if>
					,
				</if>
				<if test="orderCol.containsKey('updateTime')">
					a.updateTime
					<if test="orderCol.updateTime!= null">
						${orderCol.updateTime}
					</if>
					,
				</if>
				<if test="orderCol.containsKey('updateUser')">
					a.updateUser
					<if test="orderCol.updateUser!= null">
						${orderCol.updateUser}
					</if>
					,
				</if>
				<if test="orderCol.containsKey('createTime')">
					a.createTime
					<if test="orderCol.createTime!= null">
						${orderCol.createTime}
					</if>
					,
				</if>
				<if test="orderCol.containsKey('createUser')">
					a.createUser
					<if test="orderCol.createUser!= null">
						${orderCol.createUser}
					</if>
					,
				</if>
			</trim>
		</if>
	</sql>
	<sql id="_group_by_">
		<if test="groupList != null and !groupList.isEmpty()">
			GROUP BY
			<trim suffixOverrides=","  suffix="">
				<foreach collection="groupList" open="" close="" index="index" item="item" separator=",">
						${item}
				</foreach>
			</trim>
		</if>
	</sql>
</mapper>