Skip to content
Snippets Groups Projects
Commit b675c707 authored by Yulong Wang's avatar Yulong Wang
Browse files

Merge branch...

Merge branch '26-as-a-commonadmin-i-hope-i-am-able-to-manipulate-hospital-and-caregiver-data-in-the-system-so' into 'main'

Improve the add and edit functions of the hospital section.

Closes #26

See merge request !79
parents 4186a87e 4ef88618
Branches
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