<?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.gx.obe.server.management.dictionary.dao.WorkMemberMapper">

    
      <!-- 通用查询映射结果 -->
      <resultMap id="BaseResultMap" type="com.gx.obe.server.management.dictionary.entity.WorkMember">
                <id column="MEMBER_ID" property="id"/>
                <result column="USER_ID" property="userId"/>
                <result column="TENDER_ID" property="tenderId"/>
                <result column="PROJECT_ID" property="projectId"/>
                <result column="MEMBER_TYPE" property="memberType"/>
                <result column="MONITOR_TYPE" property="monitorType"/>
      </resultMap>
      <!-- 通用查询映射结果 -->
      <resultMap id="WorkMemberMap" type="com.gx.obe.server.management.dictionary.entity.WorkMember">
                <id column="MEMBER_ID" property="id"/>
                <result column="USER_ID" property="userId"/>
                <result column="TENDER_ID" property="tenderId"/>
                <result column="PROJECT_ID" property="projectId"/>
                <result column="MEMBER_TYPE" property="memberType"/>
                  <result column="MONITOR_TYPE" property="monitorType"/>
         		<association column="user" property="user" javaType="com.gx.obe.server.management.user.entity.AuthUserEntity">
         			  <id column="A_USER_ID" property="id" />
		              <result column="A_USER_ACCOUNT" property="userAccount" />
		              <result column="A_USER_PASSWORD" property="userPassword" />
		              <result column="A_USER_NAME" property="userName" />
		              <result column="A_GENDER" property="gender" />
		              <result column="A_COMPANY" property="company" />
		              <result column="A_USER_IDCARD" property="userIdcard" />
		              <result column="A_PHONE" property="phone" />
		              <result column="A_USER_TYPE" property="userType" />
		              <result column="A_PROFESSIONAL_TITLE" property="professionalTitle" />
		              <result column="A_AVATAR" property="avatar" />
		              <result column="A_SPECIALTY" property="specialty" />
		              <result column="A_AREA_CODE" property="areaCode" />
		              <result column="A_USE_STATUS" property="useStatus" />
		              <result column="A_BINDING_CA" property="bindingCa" />
		              <result column="A_CREATE_TIME" property="createTime" />
		              <result column="A_MODIFY_TIME" property="modifyTime"/>
		              <result column="A_DEFAULT_PASSWORD" property="defaultPassword" />
		              <result column="BANK_INFO" property="bankInfo" />
           			  <result column="BANK_ACCOUNT" property="bankAccount" />
         		</association>
      </resultMap>
    
      <!-- 通用查询结果列 -->
      <sql id="Base_Column_List">
        MEMBER_ID, USER_ID, TENDER_ID, PROJECT_ID, MEMBER_TYPE
    </sql>
    
      <!-- 批量更新 -->
      <update id="updateBatchList" parameterType="java.util.List">
        <foreach collection="WorkMemberList" item="WorkMember" index="index" open="" close="" separator=";">
	        UPDATE work_member
		        <set>
		                 <if test="WorkMember.userId != null">
		                	USER_ID = #{WorkMember.userId} ,
		           		</if>
		                 <if test="WorkMember.tenderId != null">
		                	TENDER_ID = #{WorkMember.tenderId} ,
		           		</if>
		                 <if test="WorkMember.projectId != null">
		                	PROJECT_ID = #{WorkMember.projectId} ,
		           		</if>
		                 <if test="WorkMember.memberType != null">
		                	MEMBER_TYPE = #{WorkMember.memberType} ,
		           		</if>
		           		  <if test="WorkMember.monitorType != null">
		                	MONITOR_TYPE = #{WorkMember.monitorType} ,
		           		</if>
		        </set>
		        <where>
		                 MEMBER_ID = #{WorkMember.id}
		        </where>
        </foreach>
    </update>
 	 <!-- 批量插入-->
     <insert id="insertByBatch" parameterType="java.util.List">
	    insert into work_member 
	    (
	        	MEMBER_ID, USER_ID, TENDER_ID, PROJECT_ID, MEMBER_TYPE,MONITOR_TYPE
	    )
    	values
       <foreach collection="WorkMemberList" item="WorkMember" index="index" open="" close="" separator=",">
           (
                	#{WorkMember.id} , 
	                #{WorkMember.userId} ,
	                #{WorkMember.tenderId} ,
	                #{WorkMember.projectId} ,
	                #{WorkMember.memberType} ,
	                #{WorkMember.monitorType} 
	    )
       </foreach>
  	</insert> 
    <!-- 返回指定类型的工作人员 -->
    <select id="getWorkerList" resultMap="WorkMemberMap">
    	SELECT
			m.*,
			u.USER_ID AS A_USER_ID,
			u.USER_NAME AS A_USER_NAME,
			u.USER_IDCARD AS A_USER_IDCARD,
			u.GENDER AS A_GENDER,
			u.PHONE AS A_PHONE,
			u.PROFESSIONAL_TITLE AS A_PROFESSIONAL_TITLE,
			u.SPECIALTY AS A_SPECIALTY,
			u.COMPANY AS A_COMPANY,
			u.AVATAR AS A_AVATAR,
			u.USER_TYPE AS A_USER_TYPE,
			u.USE_STATUS AS A_USE_STATUS,
			u.USER_ACCOUNT AS A_USER_ACCOUNT,
			u.BINDING_CA AS A_BINDING_CA 
		FROM
			auth_user u,
			WORK_MEMBER m 
		WHERE
			m.USER_ID = u.USER_ID 
 	<if test="isParentProject">				
		AND m.PROJECT_ID = #{tenderId}
	</if>	
	<if test="isParentProject == false">
			 AND m.TENDER_ID =  #{tenderId}
	</if>
	 
		<if test="workerType != null and workerType != ''">
			<if test="workerType == 00">
			   AND m.MEMBER_TYPE = #{workerType}
			</if>
			<if test="workerType == 01">
			  AND m.MEMBER_TYPE = #{workerType}
			</if>
		</if>	
   		 <if test="workerType == null and workerType == ''">
			 AND (m.MEMBER_TYPE is NULL or m.MEMBER_TYPE == '' )
		</if>
    </select>
    
    <!-- 返回指定项目的工作人员  -->
    <select id="getWorker" resultMap="WorkMemberMap">
	    SELECT
			m.*,
			u.* 
		FROM
			auth_user u,
			work_member m 
		WHERE
			m.USER_ID = u.USER_ID 
			AND m.TENDER_ID = #{tenderId} 
			AND m.USER_ID = #{userId}
    </select>
    
    <!-- 删除工作人员 -->
    <delete id="deleteWorker">
    	DELETE 
		FROM
			WORK_MEMBER 
		WHERE
			TENDER_ID = #{tenderId} 
			AND USER_ID = #{userId} 
			AND MEMBER_TYPE = #{wokerType} 
    </delete>
    
    <!-- 删除所有工作人员 -->
    <delete id="delAllWorkers">
    	DELETE 
		FROM
			WORK_MEMBER 
		WHERE
			TENDER_ID = #{tenderId} 
			AND MEMBER_TYPE = #{wokerType} 
    </delete>
    
    <!-- 删除所有工作人员 -->
    <delete id="delAllWorkersByMonitorType">
    	DELETE 
		FROM
			WORK_MEMBER 
		WHERE
			TENDER_ID = #{tenderId} 
			AND MEMBER_TYPE = #{wokerType} 
			and MONITOR_TYPE =#{monitorType}
    </delete>
    
     <!-- 返回指定的工作人员 -->
    <select id="getWorkerByUserIdAndTenderIdOrMemberType" resultMap="WorkMemberMap">
    	SELECT
			m.*,
			u.USER_ID AS A_USER_ID,
			u.USER_NAME AS A_USER_NAME,
			u.USER_IDCARD AS A_USER_IDCARD,
			u.GENDER AS A_GENDER,
			u.PHONE AS A_PHONE,
			u.PROFESSIONAL_TITLE AS A_PROFESSIONAL_TITLE,
			u.SPECIALTY AS A_SPECIALTY,
			u.COMPANY AS A_COMPANY,
			u.AVATAR AS A_AVATAR,
			u.USER_TYPE AS A_USER_TYPE,
			u.USE_STATUS AS A_USE_STATUS,
			u.USER_ACCOUNT AS A_USER_ACCOUNT,
			u.BINDING_CA AS A_BINDING_CA 
		FROM
			auth_user u,
			WORK_MEMBER m 
		WHERE
			m.USER_ID = u.USER_ID 
			AND m.TENDER_ID = #{tenderId}
			 AND u.USER_ID = #{userId}
		<if test="wokerType != null and wokerType != ''">
			   AND m.MEMBER_TYPE = #{wokerType}
		</if>	
    </select>
    
</mapper>