guardia-hrm/backend/target/classes/mapper/PerformanceMapper.xml

87 lines
3.3 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.performance.PerformanceMapper">
<select id="findReviews" resultType="map">
SELECT r.id, r.emp_id, e.name AS emp_name, e.emp_no,
r.year, r.period, r.final_grade, r.score, r.status,
r.created_by, r.created_at
FROM hrm_performance_reviews r
JOIN hrm_employees e ON r.emp_id=e.id
<where>
<if test="year > 0">AND r.year=#{year}</if>
<if test="empId != null">AND r.emp_id=#{empId}</if>
<if test="status != null and status != ''">AND r.status=#{status}</if>
</where>
ORDER BY r.year DESC, e.emp_no
LIMIT #{limit} OFFSET #{offset}
</select>
<select id="countReviews" resultType="long">
SELECT COUNT(*) FROM hrm_performance_reviews r
<where>
<if test="year > 0">AND r.year=#{year}</if>
<if test="empId != null">AND r.emp_id=#{empId}</if>
<if test="status != null and status != ''">AND r.status=#{status}</if>
</where>
</select>
<select id="findReviewById" resultType="map">
SELECT r.*, e.name AS emp_name, e.emp_no
FROM hrm_performance_reviews r
JOIN hrm_employees e ON r.emp_id=e.id
WHERE r.id=#{id}
</select>
<insert id="insertReview">
INSERT INTO hrm_performance_reviews (emp_id, year, period, status, created_by)
VALUES (#{empId}, #{year}, #{period}, #{status}, #{createdBy})
</insert>
<update id="updateReview">
UPDATE hrm_performance_reviews SET
final_grade=#{finalGrade}, score=#{score}, comments=#{comments}, updated_at=NOW()
WHERE id=#{id}
</update>
<update id="updateReviewStatus">
UPDATE hrm_performance_reviews SET status=#{status}, updated_at=NOW() WHERE id=#{id}
</update>
<select id="findGoals" resultType="map">
SELECT id, emp_id, year, goal_title, goal_desc, weight, target_value, actual_value, achievement_rate, status
FROM hrm_goals WHERE emp_id=#{empId} AND year=#{year}
ORDER BY weight DESC
</select>
<insert id="insertGoal">
INSERT INTO hrm_goals (emp_id, year, goal_title, goal_desc, weight, target_value, created_by)
VALUES (#{empId}, #{year}, #{goalTitle}, #{goalDesc}, #{weight}, #{targetValue}, #{createdBy})
</insert>
<update id="updateGoal">
UPDATE hrm_goals SET
goal_title=#{goalTitle}, weight=#{weight}, target_value=#{targetValue},
actual_value=#{actualValue}, achievement_rate=#{achievementRate}, status=#{status}
WHERE id=#{id}
</update>
<select id="findCompetencies" resultType="map">
SELECT cs.id, cs.emp_id, cs.year, c.competency_name, c.category,
cs.self_score, cs.manager_score, cs.peer_score, cs.final_score, cs.evaluator
FROM hrm_competency_scores cs
JOIN hrm_competencies c ON cs.competency_id=c.id
WHERE cs.emp_id=#{empId} AND cs.year=#{year}
ORDER BY c.category, c.sort_order
</select>
<insert id="insertCompetencyScore">
INSERT INTO hrm_competency_scores (emp_id, competency_id, year, self_score, manager_score, evaluator)
VALUES (#{empId}, #{competencyId}, #{year}, #{selfScore}, #{managerScore}, #{evaluator})
ON CONFLICT (emp_id, competency_id, year) DO UPDATE SET
manager_score=#{managerScore}, evaluator=#{evaluator}, updated_at=NOW()
</insert>
</mapper>