130 lines
5.4 KiB
XML
130 lines
5.4 KiB
XML
<?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.zioinfo.hrm.employee.EmployeeMapper">
|
|
|
|
<resultMap id="EmpRM" type="com.zioinfo.hrm.employee.Employee">
|
|
<id property="id" column="id"/>
|
|
<result property="empNo" column="emp_no"/>
|
|
<result property="name" column="name"/>
|
|
<result property="nameEn" column="name_en"/>
|
|
<result property="departmentId" column="department_id"/>
|
|
<result property="departmentName" column="department_name"/>
|
|
<result property="positionId" column="position_id"/>
|
|
<result property="positionName" column="position_name"/>
|
|
<result property="gradeId" column="grade_id"/>
|
|
<result property="gradeName" column="grade_name"/>
|
|
<result property="employmentType" column="employment_type"/>
|
|
<result property="status" column="status"/>
|
|
<result property="hireDate" column="hire_date"/>
|
|
<result property="retireDate" column="retire_date"/>
|
|
<result property="email" column="email"/>
|
|
<result property="phoneEnc" column="phone_enc"/>
|
|
<result property="photoUrl" column="photo_url"/>
|
|
<result property="gender" column="gender"/>
|
|
<result property="birthDate" column="birth_date"/>
|
|
<result property="createdBy" column="created_by"/>
|
|
<result property="createdAt" column="created_at"/>
|
|
<result property="updatedAt" column="updated_at"/>
|
|
</resultMap>
|
|
|
|
<select id="findAll" resultMap="EmpRM">
|
|
SELECT e.id, e.emp_no, e.name, e.name_en,
|
|
e.department_id, d.dept_name AS department_name,
|
|
e.position_id, p.position_name,
|
|
e.grade_id, g.grade_name,
|
|
e.employment_type, e.status, e.hire_date, e.retire_date,
|
|
e.email, e.photo_url, e.gender, e.created_by, e.created_at, e.updated_at
|
|
FROM hrm_employees e
|
|
LEFT JOIN hrm_departments d ON e.department_id = d.id
|
|
LEFT JOIN hrm_positions p ON e.position_id = p.id
|
|
LEFT JOIN hrm_grades g ON e.grade_id = g.id
|
|
<where>
|
|
<if test="keyword != null and keyword != ''">
|
|
AND (e.name ILIKE '%'||#{keyword}||'%' OR e.emp_no ILIKE '%'||#{keyword}||'%')
|
|
</if>
|
|
<if test="deptId != null">AND e.department_id = #{deptId}</if>
|
|
<if test="status != null and status != ''">AND e.status = #{status}</if>
|
|
</where>
|
|
ORDER BY e.emp_no
|
|
LIMIT #{limit} OFFSET #{offset}
|
|
</select>
|
|
|
|
<select id="countAll" resultType="long">
|
|
SELECT COUNT(*) FROM hrm_employees e
|
|
<where>
|
|
<if test="keyword != null and keyword != ''">
|
|
AND (e.name ILIKE '%'||#{keyword}||'%' OR e.emp_no ILIKE '%'||#{keyword}||'%')
|
|
</if>
|
|
<if test="deptId != null">AND e.department_id = #{deptId}</if>
|
|
<if test="status != null and status != ''">AND e.status = #{status}</if>
|
|
</where>
|
|
</select>
|
|
|
|
<select id="findById" resultMap="EmpRM">
|
|
SELECT e.*, d.dept_name AS department_name, p.position_name, g.grade_name
|
|
FROM hrm_employees e
|
|
LEFT JOIN hrm_departments d ON e.department_id = d.id
|
|
LEFT JOIN hrm_positions p ON e.position_id = p.id
|
|
LEFT JOIN hrm_grades g ON e.grade_id = g.id
|
|
WHERE e.id = #{id}
|
|
</select>
|
|
|
|
<select id="findByEmpNo" resultMap="EmpRM">
|
|
SELECT * FROM hrm_employees WHERE emp_no = #{empNo}
|
|
</select>
|
|
|
|
<select id="getLastEmpNo" resultType="string">
|
|
SELECT emp_no FROM hrm_employees ORDER BY id DESC LIMIT 1
|
|
</select>
|
|
|
|
<insert id="insert" useGeneratedKeys="true" keyProperty="id">
|
|
INSERT INTO hrm_employees
|
|
(emp_no, name, name_en, department_id, position_id, grade_id,
|
|
employment_type, status, hire_date, email, phone_enc, photo_url, gender, birth_date, address, bank_account, created_by)
|
|
VALUES
|
|
(#{empNo}, #{name}, #{nameEn}, #{departmentId}, #{positionId}, #{gradeId},
|
|
#{employmentType}, #{status}, #{hireDate}, #{email}, #{phoneEnc}, #{photoUrl}, #{gender}, #{birthDate}, #{address}, #{bankAccount}, #{createdBy})
|
|
</insert>
|
|
|
|
<update id="update">
|
|
UPDATE hrm_employees SET
|
|
name=#{name}, name_en=#{nameEn}, department_id=#{departmentId},
|
|
position_id=#{positionId}, grade_id=#{gradeId},
|
|
employment_type=#{employmentType}, email=#{email},
|
|
phone_enc=#{phoneEnc}, photo_url=#{photoUrl}, gender=#{gender},
|
|
birth_date=#{birthDate}, address=#{address}, updated_at=NOW()
|
|
WHERE id=#{id}
|
|
</update>
|
|
|
|
<update id="updateStatus">
|
|
UPDATE hrm_employees SET status=#{status}, retire_date=#{retireDate}, updated_at=NOW()
|
|
WHERE id=#{id}
|
|
</update>
|
|
|
|
<select id="getCareerList" resultType="map">
|
|
SELECT id, emp_id, company_name, position, start_date, end_date, description
|
|
FROM hrm_emp_careers WHERE emp_id=#{empId} ORDER BY start_date DESC
|
|
</select>
|
|
|
|
<insert id="insertCareer">
|
|
INSERT INTO hrm_emp_careers (emp_id, company_name, position, start_date, end_date, description)
|
|
VALUES (#{empId}, #{companyName}, #{position}, #{startDate}, #{endDate}, #{description})
|
|
</insert>
|
|
|
|
<delete id="deleteCareer">DELETE FROM hrm_emp_careers WHERE id=#{id}</delete>
|
|
|
|
<select id="getCertList" resultType="map">
|
|
SELECT id, emp_id, cert_name, cert_no, issue_date, expire_date, issuer
|
|
FROM hrm_emp_certs WHERE emp_id=#{empId} ORDER BY issue_date DESC
|
|
</select>
|
|
|
|
<insert id="insertCert">
|
|
INSERT INTO hrm_emp_certs (emp_id, cert_name, cert_no, issue_date, expire_date, issuer)
|
|
VALUES (#{empId}, #{certName}, #{certNo}, #{issueDate}, #{expireDate}, #{issuer})
|
|
</insert>
|
|
|
|
<delete id="deleteCert">DELETE FROM hrm_emp_certs WHERE id=#{id}</delete>
|
|
|
|
</mapper>
|