今天任务:
完成了MySQL数据库集成、考核与健康模块功能
代码如下-- 创建数据库
CREATE DATABASE IF NOT EXISTS hr_management;
USE hr_management;

-- 员工表
CREATE TABLE IF NOT EXISTS employees (
emp_id INT PRIMARY KEY AUTO_INCREMENT,
emp_name VARCHAR(50) NOT NULL,
department VARCHAR(50),
position VARCHAR(50),
hire_date DATE
);

-- 考核表
CREATE TABLE IF NOT EXISTS evaluations (
eval_id INT PRIMARY KEY AUTO_INCREMENT,
emp_id INT,
eval_date DATE DEFAULT CURRENT_DATE,
score INT DEFAULT (FLOOR(RAND() * 101)),
FOREIGN KEY (emp_id) REFERENCES employees(emp_id)
);

-- 健康表
CREATE TABLE IF NOT EXISTS health_records (
record_id INT PRIMARY KEY AUTO_INCREMENT,
emp_id INT,
checkup_date DATE DEFAULT CURRENT_DATE,
blood_pressure VARCHAR(20),
heart_rate INT,
bmi DECIMAL(5,2),
FOREIGN KEY (emp_id) REFERENCES employees(emp_id)
);package com.example.hrms.utils

import android.util.Log
import com.zaxxer.hikari.HikariConfig
import com.zaxxer.hikari.HikariDataSource
import java.sql.Connection
import java.sql.SQLException

object DatabaseHelper {
private const val TAG = "DatabaseHelper"
private var dataSource: HikariDataSource? = null

init {
    val config = HikariConfig().apply {
        jdbcUrl = "jdbc:mysql://10.0.2.2:3306/hr_management" // 使用模拟器本地地址
        username = "android_user"
        password = "password123"
        maximumPoolSize = 5
        connectionTimeout = 3000
    }
    dataSource = HikariDataSource(config)
}

fun getConnection(): Connection? {
    return try {
        dataSource?.connection
    } catch (e: SQLException) {
        Log.e(TAG, "获取数据库连接失败", e)
        null
    }
}

}package com.example.hrms.models

data class Employee(
val empId: Int,
val name: String,
val department: String,
val position: String,
val hireDate: String
)package com.example.hrms.models

data class Evaluation(
val evalId: Int,
val empId: Int,
val date: String,
val score: Int
)package com.example.hrms.models

data class HealthRecord(
val recordId: Int,
val empId: Int,
val checkupDate: String,
val bloodPressure: String,
val heartRate: Int,
val bmi: Double
)package com.example.hrms.dao

import com.example.hrms.models.Employee
import com.example.hrms.utils.DatabaseHelper
import java.sql.Statement

object EmployeeDao {
fun getAllEmployees(): List {
val employees = mutableListOf()
DatabaseHelper.getConnection()?.use { conn ->
conn.createStatement().use { stmt ->
stmt.executeQuery("SELECT * FROM employees").use { rs ->
while (rs.next()) {
employees.add(Employee(
rs.getInt("emp_id"),
rs.getString("emp_name"),
rs.getString("department"),
rs.getString("position"),
rs.getString("hire_date")
))
}
}
}
}
return employees
}
}package com.example.hrms.dao

import com.example.hrms.models.Evaluation
import com.example.hrms.utils.DatabaseHelper

object EvaluationDao {
fun getEvaluationsByEmployee(empId: Int): List {
val evaluations = mutableListOf()
DatabaseHelper.getConnection()?.use { conn ->
conn.prepareStatement("SELECT * FROM evaluations WHERE emp_id = ?").use { stmt ->
stmt.setInt(1, empId)
stmt.executeQuery().use { rs ->
while (rs.next()) {
evaluations.add(Evaluation(
rs.getInt("eval_id"),
rs.getInt("emp_id"),
rs.getString("eval_date"),
rs.getInt("score")
))
}
}
}
}
return evaluations
}

fun addRandomEvaluation(empId: Int) {
    DatabaseHelper.getConnection()?.use { conn ->
        conn.prepareStatement(
            "INSERT INTO evaluations (emp_id) VALUES (?)",
            Statement.RETURN_GENERATED_KEYS
        ).use { stmt ->
            stmt.setInt(1, empId)
            stmt.executeUpdate()
        }
    }
}

}package com.example.hrms.activities

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import com.example.hrms.adapters.HealthRecordAdapter
import com.example.hrms.dao.HealthRecordDao
import com.example.hrms.databinding.ActivityHealthBinding

class HealthActivity : AppCompatActivity() {
private lateinit var binding: ActivityHealthBinding
private val empId by lazy { intent.getIntExtra("emp_id", -1) }

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityHealthBinding.inflate(layoutInflater)
    setContentView(binding.root)

    loadHealthRecords()
}

private fun loadHealthRecords() {
    val records = HealthRecordDao.getRecordsByEmployee(empId)
    binding.recyclerView.apply {
        layoutManager = LinearLayoutManager(this@HealthActivity)
        adapter = HealthRecordAdapter(records)
    }
}

}以及一些适配器代码
遇到的问题:
今天给idea下载插件时造成了插件冲突,而导致idea项目无法打开,在使用安全模式-safemode后逐一排除了问题。