Skip to content
Snippets Groups Projects
Commit 4ef88618 authored by Mingyuan Chen's avatar Mingyuan Chen
Browse files

Improve the add and edit functions of the hospital section.

parent 4186a87e
No related branches found
No related tags found
1 merge request!79Improve the add and edit functions of the hospital section.
......@@ -54,6 +54,7 @@ public class CommonAdminHospitalController {
public ResponseEntity<String> deleteHospital(@PathVariable int id) {
try {
commonAdminHospitalService.deleteHospital(id);
commonAdminHospitalService.resetHospitalIds(); // Reset IDs after deletion
return ResponseEntity.ok("Hospital deleted successfully!");
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
......@@ -61,6 +62,7 @@ public class CommonAdminHospitalController {
}
}
@GetMapping("/nurses")
public List<NurseVO> getNurses(@RequestParam(value = "name", required = false) String name,
@RequestParam(value = "hospitalId", required = false) Integer hospitalId) {
......@@ -70,4 +72,16 @@ public class CommonAdminHospitalController {
return commonAdminHospitalService.searchNurses(name, hospitalId);
}
@GetMapping("/{id}")
public ResponseEntity<HospitalDTO> getHospitalById(@PathVariable int id) {
HospitalDTO hospital = commonAdminHospitalService.getHospitalById(id);
if (hospital != null) {
return ResponseEntity.ok(hospital);
} else {
return ResponseEntity.status(HttpStatus.NOT_FOUND)
.body(null);
}
}
}
......@@ -15,8 +15,7 @@ public class CommonAdminHospitalMapper {
@Autowired
JdbcTemplate jdbcTemplate;
// 更新医院信息
public int update(HospitalDTO hospital) {
String sql = "UPDATE hospital SET name=?, address=?, phone=?, totalBeds=?, availableBeds=?, occupancyRate=? WHERE id=?";
return jdbcTemplate.update(sql, hospital.getName(), hospital.getAddress(), hospital.getPhone(),
......
......@@ -18,8 +18,15 @@ public interface CommonAdminHospitalService {
void updateHospital(HospitalDTO hospital);
void editHospital(HospitalDTO hospital);
void deleteHospital(int id);
HospitalDTO getHospitalById(int id);
void resetHospitalIds();
List<NurseVO> getAllNurses();
List<NurseVO> searchNurses(String name, Integer hospitalId);
......
......@@ -51,9 +51,14 @@ public class CommonAdminHospitalServiceImp implements CommonAdminHospitalService
double occupancyRate = 1.0 - (double) hospital.getAvailableBeds() / hospital.getTotalBeds();
String sql = "INSERT INTO hospital (name, address, phone, totalBeds, availableBeds, occupancyRate) VALUES (?, ?, ?, ?, ?, ?)";
jdbcTemplate.update(sql, hospital.getName(), hospital.getAddress(), hospital.getPhone(),
hospital.getTotalBeds(), hospital.getAvailableBeds(), occupancyRate);
String sql = "INSERT INTO hospital (name, address, phone, maxAmount, amountPatient) VALUES (?, ?, ?, ?, ?)";
jdbcTemplate.update(sql,
hospital.getName(),
hospital.getAddress(),
hospital.getPhone(),
hospital.getTotalBeds(),
hospital.getAvailableBeds()
);
}
@Override
......@@ -63,26 +68,59 @@ public class CommonAdminHospitalServiceImp implements CommonAdminHospitalService
@Override
public void updateHospital(HospitalDTO hospital) {
}
@Override
public void editHospital(HospitalDTO hospital) {
if (hospital.getId() <= 0 || hospital.getName() == null || hospital.getAddress() == null ||
hospital.getPhone() == null || hospital.getTotalBeds() <= 0 || hospital.getAvailableBeds() < 0) {
throw new IllegalArgumentException("Invalid hospital data: Missing or incorrect fields.");
}
String sql = "UPDATE hospital SET name = ?, address = ?, phone = ?, totalBeds = ?, availableBeds = ?, occupancyRate = ? WHERE id = ?";
// 更新占用率计算(可选,具体依项目需求)
double occupancyRate = 1.0 - (double) hospital.getAvailableBeds() / hospital.getTotalBeds();
int rowsUpdated = jdbcTemplate.update(sql, hospital.getName(), hospital.getAddress(), hospital.getPhone(),
hospital.getTotalBeds(), hospital.getAvailableBeds(), occupancyRate, hospital.getId());
if (rowsUpdated == 0) {
throw new IllegalArgumentException("No hospital found with ID " + hospital.getId());
}
// SQL 语句更新医院数据
String sql = "UPDATE hospital SET name = ?, address = ?, phone = ?, maxAmount = ?, amountPatient = ? WHERE id = ?";
jdbcTemplate.update(sql, hospital.getName(), hospital.getAddress(), hospital.getPhone(),
hospital.getTotalBeds(), hospital.getAvailableBeds(), hospital.getId());
}
@Override
public void deleteHospital(int id) {
String sql = "DELETE FROM hospital WHERE id = ?";
jdbcTemplate.update(sql, id);
String deleteSql = "DELETE FROM hospital WHERE id = ?";
jdbcTemplate.update(deleteSql, id);
}
@Override
public HospitalDTO getHospitalById(int id) {
String sql = "SELECT * FROM hospital WHERE id = ?";
List<HospitalDTO> hospitals = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(HospitalDTO.class), id);
return hospitals.isEmpty() ? null : hospitals.get(0);
}
@Override
public void resetHospitalIds() {
try {
// Step 1: 创建一个变量用于更新行号
String setRowNumber = "SET @row_number = 0;";
jdbcTemplate.execute(setRowNumber);
// Step 2: 重新更新表的 ID 顺序
String updateIds = "UPDATE hospital SET id = (@row_number := @row_number + 1);";
jdbcTemplate.execute(updateIds);
// Step 3: 重置 AUTO_INCREMENT
String resetAutoIncrement = "ALTER TABLE hospital AUTO_INCREMENT = 1;";
jdbcTemplate.execute(resetAutoIncrement);
System.out.println("Hospital IDs reset successfully.");
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("Failed to reset hospital IDs: " + e.getMessage());
}
}
......
......@@ -180,6 +180,71 @@
});
}
function openEditHospitalModal(hospitalId) {
fetch(`/commonAdmin/hospital/${hospitalId}`)
.then(response => {
if (!response.ok) throw new Error("Failed to fetch hospital data.");
return response.json();
})
.then(hospital => {
document.getElementById('modal-title').innerText = "Edit Hospital";
document.getElementById('modal-name').value = hospital.name;
document.getElementById('modal-address').value = hospital.address;
document.getElementById('modal-phone').value = hospital.phone;
document.getElementById('modal-totalBeds').value = hospital.totalBeds;
document.getElementById('modal-availableBeds').value = hospital.availableBeds;
document.getElementById('hospital-modal').style.display = 'flex';
const saveButton = document.getElementById('save-hospital-btn');
saveButton.replaceWith(saveButton.cloneNode(true));
document.getElementById('save-hospital-btn').addEventListener('click', () => updateHospital(hospitalId));
})
.catch(error => {
console.error("Error loading hospital data:", error);
alert("Failed to load hospital data.");
});
}
function updateHospital(hospitalId) {
const hospitalData = {
id: hospitalId,
name: document.getElementById('modal-name').value.trim(),
location: document.getElementById('modal-location') ? document.getElementById('modal-location').value.trim() : "", // 如果 location 是可选的
address: document.getElementById('modal-address').value.trim(),
phone: document.getElementById('modal-phone').value.trim(),
totalBeds: parseInt(document.getElementById('modal-totalBeds').value.trim()),
availableBeds: parseInt(document.getElementById('modal-availableBeds').value.trim())
};
console.log("Updating hospital with data:", hospitalData);
if (!hospitalData.name || !hospitalData.address || !hospitalData.phone ||
isNaN(hospitalData.totalBeds) || isNaN(hospitalData.availableBeds)) {
alert("All fields are required!");
return;
}
fetch(`/commonAdmin/hospital/update/${hospitalId}`, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(hospitalData),
})
.then(response => {
if (response.ok) {
alert("Hospital updated successfully!");
closeHospitalModal();
loadHospitals(); // Reload hospital list
} else {
return response.text().then(text => { throw new Error(text); });
}
})
.catch(error => {
console.error("Error updating hospital:", error);
alert("Failed to update hospital: " + error.message);
});
}
function loadHospitals(filters = {}) {
const query = new URLSearchParams(filters).toString();
fetch(`/commonAdmin/hospital/all?${query}`)
......@@ -202,6 +267,35 @@
`;
tableBody.appendChild(row);
});
document.querySelectorAll(".editButton").forEach(button => {
button.addEventListener("click", () => {
const hospitalId = button.getAttribute("data-id");
openEditHospitalModal(hospitalId);
});
});
document.querySelectorAll(".deleteButton").forEach(button => {
button.addEventListener("click", () => {
const hospitalId = button.getAttribute("data-id");
if (confirm("Are you sure you want to delete this hospital?")) {
fetch(`/commonAdmin/hospital/delete/${hospitalId}`, {
method: "DELETE",
})
.then(response => {
if (!response.ok) {
return response.text().then(text => { throw new Error(text); });
}
alert("Hospital deleted successfully!");
loadHospitals();
})
.catch(error => {
console.error("Error deleting hospital:", error);
alert(`Failed to delete hospital: ${error.message}`);
});
}
});
});
})
.catch(error => console.error("Error loading hospitals:", error));
}
......@@ -251,7 +345,6 @@
loadHospitals();
});
// Add close button event listener
document.getElementById('close-hospital-modal').addEventListener('click', closeHospitalModal);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment