diff --git a/src/main/java/com/cardiff/client_project/controller/admin/CommonAdminHospitalController.java b/src/main/java/com/cardiff/client_project/controller/admin/CommonAdminHospitalController.java index fa508744974e4506fd77f441badc79d5c4aba29c..2ecb253364419d949e37d3b221ed1ecf72c3d045 100644 --- a/src/main/java/com/cardiff/client_project/controller/admin/CommonAdminHospitalController.java +++ b/src/main/java/com/cardiff/client_project/controller/admin/CommonAdminHospitalController.java @@ -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); + } + } + + } diff --git a/src/main/java/com/cardiff/client_project/mapper/CommonAdminHospitalMapper.java b/src/main/java/com/cardiff/client_project/mapper/CommonAdminHospitalMapper.java index eecf39fc96f45a64b2c82731548776e9b199308f..11b40123cee8a995bed7897f7fb0edc528bc0cd1 100644 --- a/src/main/java/com/cardiff/client_project/mapper/CommonAdminHospitalMapper.java +++ b/src/main/java/com/cardiff/client_project/mapper/CommonAdminHospitalMapper.java @@ -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(), diff --git a/src/main/java/com/cardiff/client_project/service/CommonAdminHospitalService.java b/src/main/java/com/cardiff/client_project/service/CommonAdminHospitalService.java index 9bce53158e34312afcd7e585641a29a02cd5affc..1be393024defafc26c690141c86f493cb4ab554c 100644 --- a/src/main/java/com/cardiff/client_project/service/CommonAdminHospitalService.java +++ b/src/main/java/com/cardiff/client_project/service/CommonAdminHospitalService.java @@ -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); diff --git a/src/main/java/com/cardiff/client_project/service/imp/CommonAdminHospitalServiceImp.java b/src/main/java/com/cardiff/client_project/service/imp/CommonAdminHospitalServiceImp.java index 535199c8949f1fd2011910a681d5bbf53a931b30..938c24802bb2eb66699f19b9a5c5acf2a5eda4f9 100644 --- a/src/main/java/com/cardiff/client_project/service/imp/CommonAdminHospitalServiceImp.java +++ b/src/main/java/com/cardiff/client_project/service/imp/CommonAdminHospitalServiceImp.java @@ -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()); + } } diff --git a/src/main/resources/static/html/admin.html b/src/main/resources/static/html/admin.html index 10ec49f919d25b1c79c652f9fd0b46aff99ec539..ddbcbe0ab280ebe03989c1d5b0ff1c106c5bdce2 100644 --- a/src/main/resources/static/html/admin.html +++ b/src/main/resources/static/html/admin.html @@ -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); }