From 7acda1f4ab3d8ce45081bd7aee3f39bf2d9eac19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=AA=20Th=C3=A0nh=20=C4=90=E1=BA=A1t?= <91755733+lds217@users.noreply.github.com> Date: Thu, 24 Jul 2025 20:13:13 +0700 Subject: [PATCH] [update] Refactor CheckUpPage to separate regular medications and supplements in invoice generation. Update Medicine entity to include supplement flag and adjust database queries accordingly. Enhance error handling for medicine data validation. --- .../ui/component/CheckUpPage/CheckUpPage.java | 30 ++++++++++++------- src/main/java/BsK/common/entity/Medicine.java | 8 +++-- .../server/network/handler/ServerHandler.java | 5 ++-- 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/main/java/BsK/client/ui/component/CheckUpPage/CheckUpPage.java b/src/main/java/BsK/client/ui/component/CheckUpPage/CheckUpPage.java index 37b27bc..c472137 100644 --- a/src/main/java/BsK/client/ui/component/CheckUpPage/CheckUpPage.java +++ b/src/main/java/BsK/client/ui/component/CheckUpPage/CheckUpPage.java @@ -1779,14 +1779,31 @@ public class CheckUpPage extends JPanel { (servicePrescription == null || servicePrescription.length == 0)) { return; // Just return silently if there's nothing to print } + // Separate regular medications and supplements + List regularMeds = new ArrayList<>(); + List supplements = new ArrayList<>(); + + if (medicinePrescription != null) { + for (String[] med : medicinePrescription) { + // Check if this is a supplement (index 8 is the supplement flag) + if (med.length > 8 && "1".equals(med[8])) { + supplements.add(med); + } else { + regularMeds.add(med); + } + } + } + MedicineInvoice medicineInvoice = new MedicineInvoice(checkupIdField.getText(), customerLastNameField.getText() + " " + customerFirstNameField.getText(), dobPicker.getJFormattedTextField().getText(), customerPhoneField.getText(), genderComboBox.getSelectedItem().toString(), customerAddressField.getText() + ", " + (wardComboBox.getSelectedItem() != null ? wardComboBox.getSelectedItem().toString() : "") + ", " + (districtComboBox.getSelectedItem() != null ? districtComboBox.getSelectedItem().toString() : "") + ", " + (provinceComboBox.getSelectedItem() != null ? provinceComboBox.getSelectedItem().toString() : ""), doctorComboBox.getSelectedItem().toString(), diagnosisField.getText(), - conclusionField.getText(), medicinePrescription, servicePrescription, - new String[][]{} // No supplements for now + conclusionField.getText(), + regularMeds.toArray(new String[0][]), + servicePrescription, + supplements.toArray(new String[0][]) // Pass supplements ); // First, show the print preview to the user medicineInvoice.showDirectJasperViewer(); @@ -4888,15 +4905,6 @@ public class CheckUpPage extends JPanel { }); } - private int findRowByCheckupId(String checkupId) { - DefaultTableModel model = (DefaultTableModel) table.getModel(); - for (int i = 0; i < model.getRowCount(); i++) { - if (model.getValueAt(i, 0).equals(checkupId)) { - return i; - } - } - return -1; // Not found - } } diff --git a/src/main/java/BsK/common/entity/Medicine.java b/src/main/java/BsK/common/entity/Medicine.java index b5b3e6d..c9a9276 100644 --- a/src/main/java/BsK/common/entity/Medicine.java +++ b/src/main/java/BsK/common/entity/Medicine.java @@ -19,14 +19,15 @@ public class Medicine { private String unit; private String sellingPrice; private String preferenceNote; + private String supplement; // 0: no, 1: yes /** * Constructor to create Medicine from array data * @param data Array of medicine data from backend */ public Medicine(String[] data) { - if (data.length < 8) { - throw new IllegalArgumentException("Medicine data array must contain at least 8 elements"); + if (data.length < 9) { + throw new IllegalArgumentException("Medicine data array must contain at least 9 elements"); } this.id = data[0]; this.name = data[1]; @@ -36,6 +37,7 @@ public class Medicine { this.unit = data[5]; this.sellingPrice = data[6]; this.preferenceNote = data[7]; + this.supplement = data[8]; } /** @@ -43,6 +45,6 @@ public class Medicine { * @return String array representation of Medicine */ public String[] toStringArray() { - return new String[]{id, name, company, description, quantity, unit, sellingPrice, preferenceNote}; + return new String[]{id, name, company, description, quantity, unit, sellingPrice, preferenceNote, supplement}; } } \ No newline at end of file diff --git a/src/main/java/BsK/server/network/handler/ServerHandler.java b/src/main/java/BsK/server/network/handler/ServerHandler.java index 30b30b6..1d64e2b 100644 --- a/src/main/java/BsK/server/network/handler/ServerHandler.java +++ b/src/main/java/BsK/server/network/handler/ServerHandler.java @@ -374,7 +374,7 @@ public class ServerHandler extends SimpleChannelInboundHandler