src/main/java/com/nanometer/smartlab/dao/SysUserDao.xml
@@ -22,8 +22,26 @@
    <result property="updateTime" column="update_time"></result>
    <result property="roleName" column="roleName"></result>
    <result property="containerCodeList" column="containerCodeList"></result>
    <result property="projectId" column="project_id"></result>
    <result property="project" column="project"></result>
    <result property="waster" column="waster" typeHandler="com.nanometer.smartlab.entity.handler.WasterHandler"></result>
  </resultMap>
    <resultMap id="SysUserDto" type="com.nanometer.smartlab.entity.dto.SysUserDto">
        <id property="id" column="id"/>
        <result property="arp" column="arp"/>
        <result property="account" column="account"/>
        <result property="department" column="department"/>
        <result property="name" column="name"/>
        <result property="point" column="point"/>
        <collection property="sysLaboratory" ofType="com.nanometer.smartlab.entity.dto.SysLaboratoryDto" fetchType="lazy">
            <id property="id" column="sl_id"/>
            <result property="name" column="sl_name"/>
            <collection property="sysLaboratoryContainer" ofType="com.nanometer.smartlab.entity.dto.SysLaboratoryContainerDto" fetchType="lazy">
                <id property="id" column="slc_id"/>
                <result property="name" column="slc_name"/>
            </collection>
        </collection>
    </resultMap>
  <sql id="queryWhereSql">
    <if test="arp != null and arp != ''">
@@ -47,11 +65,17 @@
    <if test="seeFlag != null">
      and su.see_flag = #{seeFlag}
    </if>
    <if test="seeFlag != null">
      and su.see_flag = #{seeFlag}
    </if>
    <if test="editId != null and editId != ''">
      and su.id != #{editId}
    </if>
    <if test="waster != null">
        and su.waster = #{waster}
    </if>
    <if test="project != null and project != ''">
        and su.project like concat("%",#{project},"%")
    </if>
    <if test="company != null and company != ''">
         and bm1.meta_value like concat("%",#{company},"%")
    </if>
  </sql>
@@ -60,10 +84,18 @@
    where id = #{id} and valid_flag = 1
  </select>
  <select id="getUser" parameterType="java.lang.String" resultType="java.util.Map">
    select * from sys_user
  <select id="getUser" parameterType="java.lang.String" resultMap="SysUser">
    select
    sys_user.id,
   sys_user.`name`,
    sys_user.phone,
    sys_user.project,
    base_meta.meta_value as department
    from sys_user
    left join  base_meta on sys_user.department = base_meta.id
    where sys_user.id = #{id} and sys_user.valid_flag = 1
    where sys_user.id = #{id}
    and sys_user.valid_flag = 1
    and base_meta.valid_flag = 1
  </select>
  <insert id="insertUserFavor" parameterType="java.util.Map">
@@ -89,13 +121,16 @@
  <select id="getSysUserByIdCard" parameterType="java.lang.String"  resultMap="SysUser" >
    select * from sys_user
    where id_card = #{idCard} and valid_flag = 1
    where id_card = #{idCard}
    and valid_flag = 1
    limit 1
  </select>
  <select id="getSysUserList" parameterType="java.util.Map" resultMap="SysUser">
    select su.*, br.name as roleName from sys_user as su
    left join base_role as br on su.role_id = br.id
      left join base_meta bm on su.department = bm.id
      left join base_meta bm1 on bm1.id = su.company
    where su.valid_flag = 1
      <if test="departmentNameLike != null and departmentNameLike != ''">
          and bm.meta_value  like #{departmentNameLike}
@@ -129,7 +164,9 @@
  </select>
  <select id="getSysUserTotalCount" parameterType="java.util.Map" resultType="int">
    select count(1) from sys_user as su left join base_meta bm on su.department = bm.id
    select count(1) from sys_user as su
    left join base_meta bm on su.department = bm.id
    left join base_meta bm1 on bm1.id = su.company
    where su.valid_flag = 1
      <if test="departmentNameLike != null and departmentNameLike != ''">
          and bm.meta_value  like #{departmentNameLike}
@@ -138,13 +175,13 @@
  </select>
  <insert id="insertSysUser" parameterType="com.nanometer.smartlab.entity.SysUser">
    insert into sys_user(id, arp, account, password, company, department, name, phone, email, memo, id_card, approver_flag, see_flag, role_id, valid_flag, create_time, update_time,project_id)
    values (#{id}, #{arp}, #{account}, #{password}, #{company}, #{department}, #{name}, #{phone}, #{email}, #{memo}, #{idCard}, #{approverFlag}, #{seeFlag}, #{roleId}, 1, now(), now(),#{projectId})
    insert into sys_user(id, arp, account, password, company, department, name, phone, email, memo, id_card, approver_flag, see_flag, role_id, valid_flag, create_time, update_time,project,waster)
    values (#{id}, #{arp}, #{account}, #{password}, #{company}, #{department}, #{name}, #{phone}, #{email}, #{memo}, #{idCard}, #{approverFlag}, #{seeFlag}, #{roleId}, 1, now(), now(),#{project},#{waster})
  </insert>
  <update id="updateSysUser" parameterType="com.nanometer.smartlab.entity.SysUser">
    update sys_user set arp=#{arp}, account=#{account}, password=#{password}, company=#{company}, department=#{department}, name=#{name}, phone=#{phone},
    email=#{email}, memo=#{memo}, id_card=#{idCard}, approver_flag=#{approverFlag}, see_flag=#{seeFlag}, role_id=#{roleId}, point=#{point},update_time=now(),project_id=#{projectId}
    email=#{email}, memo=#{memo}, id_card=#{idCard}, approver_flag=#{approverFlag}, see_flag=#{seeFlag}, role_id=#{roleId}, point=#{point},update_time=now(),project=#{project},waster=#{waster}
    where id=#{id}
  </update>
@@ -164,43 +201,202 @@
  </select>
  <select id="getUserListByContainerCode" parameterType="java.util.Map" resultMap="SysUser">
   select u.name,u.see_flag,u.role_id,u.valid_flag,u.id_card,container_code,bm2.meta_value department,bm1.meta_value company,u.arp,u.point,sp.project
   select u.name,u.see_flag,u.role_id,u.valid_flag,u.id_card,container_code,bm2.meta_value department,bm1.meta_value company,u.arp,u.point
   from sys_user u
   left join sys_laboratory l on l.department = u.department and l.valid_flag = 1
   left join sys_laboratory_container c on c.laboratory_id = l.id and c.valid_flag = 1
   left join base_meta bm1 on bm1.id = u.company
   left join base_meta bm2 on bm2.id = u.department
   LEFT JOIN sys_project sp on sp.id = u.project_id and sp.valid_flag = 1
   where container_code = #{0}
   and u.update_time >= #{1} and #{2} > u.update_time
  </select>
    <select id="getUserListByContainerCodeNew" parameterType="java.util.Map" resultMap="SysUser">
      SELECT u.name,u.see_flag,u.role_id,u.valid_flag,u.id_card,bm2.meta_value department,bm1.meta_value company,u.arp,u.point,sp.project
   from sys_user u
   left join base_meta bm1 on bm1.id = u.company
   left join base_meta bm2 on bm2.id = u.department
   LEFT JOIn sys_project sp on sp.id = u.project_id
   where u.project_id = (
   SELECT project_id from sys_laboratory_container
   WHERE container_code =  #{0}
   and  valid_flag = 1)
   AND u.valid_flag = 1
   and sp.valid_flag = 1
   and u.update_time >= #{1} and #{2} > u.update_time
  </select>
  <select id="selectByAccount" parameterType="com.nanometer.smartlab.entity.SysUser" resultMap="SysUser">
    select * from sys_user where valid_flag=1 and account=#{account}
  </select>
    <select id="selectUserInfo" resultMap="SysUserDto">
    SELECT
   su.id,
   su.arp,
   su.account,
   su.`name`,
   su.point,
   bm1.meta_value department,
   sl.id sl_id,
   sl.`name` sl_name,
   slc.id slc_id,
   slc.`name` slc_name
    FROM sys_user su
   LEFT JOIN base_meta bm1 on bm1.id = su.department
   LEFT JOIN sys_laboratory sl on sl.department = su.department
   LEFT JOIN sys_laboratory_container slc on slc.laboratory_id = sl.id
   WHERE su.valid_flag = 1
   and sl.valid_flag = 1
   and slc.valid_flag = 1
    ORDER BY su.`name` asc
    </select>
    <update id="updateUserPointBySelective" parameterType="java.util.Map">
        update sys_user set point=#{point}
    <select id="getUserListByProject" parameterType="java.util.Map" resultMap="SysUser">
    SELECT u.name,u.see_flag,u.role_id,u.valid_flag,u.id_card,bm2.meta_value department,bm1.meta_value company,u.arp,u.point,u.project
    from sys_user u
    left join base_meta bm1 on bm1.id = u.company
    left join base_meta bm2 on bm2.id = u.department
    where
    u.project = #{0}
    and u.valid_flag = 1
    and u.update_time >= #{1} and #{2} > u.update_time
    </select>
    <select id="getUserByAccount" resultType="com.nanometer.smartlab.entity.dto.HazardousWasteUser">
    SELECT
    su.id,
   su.account,
    su.`name`,
    su.`password`,
    su.waster as adminFlag,
    su.project,
    bm.meta_value as department,
    com.meta_value as company
    FROM sys_user AS su
    LEFT JOIN base_meta bm ON su.department = bm.id
    LEFT JOIN base_meta com on com.id = su.company
    <where>
        su.valid_flag = 1
        <if test="account != null and account !=''">
            AND su.account = #{account}
        </if>
        <if test="name != null and name !=''">
            AND su.name = #{name}
        </if>
    </where>
    </select>
    <select id="getUserByProject" resultType="com.nanometer.smartlab.entity.dto.LaboratoryVo$LaboratoryUser">
    SELECT
    `name` as username
    FROM sys_user
    WHERE
       valid_flag = '1'
    AND waster = '1'
    AND project = #{project};
    </select>
    <select id="getUserByArp" resultMap="SysUser">
        select * from sys_user
        where arp = #{0} and valid_flag = 1
    </select>
    <select id="getUserCountInProject" parameterType="java.util.Map"  resultType="java.lang.Integer">
        select count(1) from sys_user as su
        left join base_meta bm on su.department = bm.id
        left join base_meta bm1 on bm1.id = su.company
        where su.valid_flag = 1
        <if test="departmentNameLike != null and departmentNameLike != ''">
            and bm.meta_value  like concat("%",#{departmentNameLike},"%")
        </if>
        <if test="arp != null and arp != ''">
            and su.arp like concat("%",#{arp},"%")
        </if>
        <if test="name != null and name != ''">
            and su.name like concat("%",#{name},"%")
        </if>
        <if test="company != null and company != ''">
            and bm1.meta_value like concat("%",#{company},"%")
        </if>
        <if test="project != null and project != ''">
            and
            <foreach item="item" index="index" collection="project.split(',')" open="(" separator="or" close=")">
                 su.project like concat("%",#{item},"%")
            </foreach>
        </if>
    </select>
    <select id="getUserInProject" parameterType="java.util.Map" resultMap="SysUser">
        select su.*, br.name as roleName from sys_user as su
        left join base_role as br on su.role_id = br.id
        left join base_meta bm on su.department = bm.id
        left join base_meta bm1 on bm1.id = su.company
        where su.valid_flag = 1
        <if test="departmentNameLike != null and departmentNameLike != ''">
            and bm.meta_value  like concat("%",#{departmentNameLike},"%")
        </if>
        <if test="arp != null and arp != ''">
            and su.arp like concat("%",#{arp},"%")
        </if>
        <if test="name != null and name != ''">
            and su.name like concat("%",#{name},"%")
        </if>
        <if test="company != null and company != ''">
            and bm1.meta_value like concat("%",#{company},"%")
        </if>
        <if test="project != null and project != ''">
            and
            <foreach item="item" index="index" collection="project.split(',')" open="(" separator="or" close=")">
                su.project like concat("%",#{item},"%")
            </foreach>
        </if>
        order by su.arp ASC
        <if test="first != null and pageSize != null">
            limit #{first}, #{pageSize}
        </if>
    </select>
    <select id="getExportUserList" resultType="Map">
        select
        bm.meta_value AS departmentName,
        bm1.meta_value AS companyName,
        su.project,
        su.arp,
        su.name,
        su.account,
        su.id_card as idCard,
        su.phone,
        su.email,
        su.memo,
        br. NAME AS roleName,
        CASE WHEN su.approver_flag=0 then '否' else '是' END AS approver,
        CASE WHEN su.see_flag=2 then '一般人员' WHEN su.see_flag=3 then '安全员' WHEN su.see_flag=11 then '系统管理员'WHEN su.see_flag=0 then '实验室管理员' END AS seeName,
        CASE WHEN su.waster=2 then '危废管理员' WHEN su.waster=1 then '危废处理人员' else '' END AS wasterName,
        su.update_time as updateTime
        from sys_user as su
        left join base_role as br on su.role_id = br.id
        left join base_meta bm on su.department = bm.id
        left join base_meta bm1 on bm1.id = su.company
        <where>
            <if test="id != null">
                id = #{id}
            su.valid_flag = 1
            <if test="arp != null and arp != ''">
                and su.arp like #{arp}
            </if>
            <if test="name != null and name != ''">
                and su.name like concat("%",#{name},"%")
            </if>
            <if test="departmentName != null and departmentName != ''">
                and su.department like concat("%",#{departmentName},"%")
            </if>
            <if test="project != null and project != ''">
                and su.project like concat("%",#{project},"%")
            </if>
            <if test="company != null and company != ''">
                and bm1.meta_value like concat("%",#{company},"%")
            </if>
        </where>
        order by su.arp ASC
    </select>
    <select id="getLibrarianEmail" resultType="java.lang.String">
        select su.email
        from sys_user  as su
        left join base_role as br on br.id = su.role_id
        where
            su.valid_flag = 1
        and br.name = '库管员'
        and su.email is not null
        and su.email != ''
    </select>
    <select id="getUserByName" resultMap="SysUser">
    select * from sys_user
    where name = #{name} and valid_flag = 1
    </select>
    <update id="updateUserPointBySelective" parameterType="java.util.Map">
    update sys_user set point=#{point}
    <where>
        <if test="id != null">
            id = #{id}
        </if>
    </where>
    </update>
</mapper>