zhuyifan

feat(settlement): 添加医生信息字段并调整Excel导出列顺序

- 在SettlementDTO中新增doctors字段用于存储医生信息- 在结算服务中安全获取并处理医生信息列表
- 调整Excel导出时的列标题顺序,增加医嘱信息列- 更新Excel数据填充逻辑以支持新的列结构
- 修改列合并范围和自动列宽调整逻辑以适应新增列
......@@ -117,6 +117,7 @@ public class SettlementDTO {
private String skuName;
private Integer count;
private String avoids;
private String doctors;
private String remark;
}
......
......@@ -1272,6 +1272,10 @@ public class SettlementServiceImpl implements SettlementService {
List<String> avoidsList = getAvoidsSafely(order);
String avoidsStr = String.join(", ", avoidsList);
// 安全获取医生信息(列表转字符串)
List<String> doctorsList = getDoctorsSafely(order);
String doctorsStr = String.join(", ", doctorsList);
String remark = order.getRemark();
String avoidRemark = order.getAvoidRemark();
String combinedRemark = "";
......@@ -1293,6 +1297,7 @@ public class SettlementServiceImpl implements SettlementService {
.skuName(skuName)
.count(orderDetail.getCount() != 0 ? orderDetail.getCount() : 0)
.avoids(avoidsStr)
.doctors(doctorsStr)
.remark(combinedRemark)
.build();
mealDetails.add(mealDetail);
......@@ -1369,7 +1374,7 @@ public class SettlementServiceImpl implements SettlementService {
mainTitleCell.setCellStyle(titleStyle);
// 合并第一行的8列
CellRangeAddress titleRegion = new CellRangeAddress(0, 0, 0, 7);
CellRangeAddress titleRegion = new CellRangeAddress(0, 0, 0, 8);
sheet.addMergedRegion(titleRegion);
// 为合并区域设置边框
......@@ -1399,25 +1404,29 @@ public class SettlementServiceImpl implements SettlementService {
cell2.setCellStyle(headerStyle);
Cell cell3 = titleRow.createCell(columnNum++);
cell3.setCellValue("餐单名称");
cell3.setCellValue("医嘱信息");
cell3.setCellStyle(headerStyle);
Cell cell4 = titleRow.createCell(columnNum++);
cell4.setCellValue("菜品名称");
cell4.setCellValue("餐单名称");
cell4.setCellStyle(headerStyle);
Cell cell5 = titleRow.createCell(columnNum++);
cell5.setCellValue("菜品数量");
cell5.setCellValue("菜品名称");
cell5.setCellStyle(headerStyle);
Cell cell6 = titleRow.createCell(columnNum++);
cell6.setCellValue("忌口信息");
cell6.setCellValue("菜品数量");
cell6.setCellStyle(headerStyle);
Cell cell7 = titleRow.createCell(columnNum++);
cell7.setCellValue("备注");
cell7.setCellValue("忌口信息");
cell7.setCellStyle(headerStyle);
Cell cell8 = titleRow.createCell(columnNum++);
cell8.setCellValue("备注");
cell8.setCellStyle(headerStyle);
// 填充数据
final var mealDetails = separateMealDataDto.getMealDetails();
if (mealDetails != null) {
......@@ -1438,29 +1447,33 @@ public class SettlementServiceImpl implements SettlementService {
dataCell2.setCellStyle(dataStyle);
Cell dataCell3 = dataRow.createCell(columnNum++);
dataCell3.setCellValue(mealDetail.getMenuName() != null ? mealDetail.getMenuName() : "");
dataCell3.setCellValue(mealDetail.getDoctors() != null ? mealDetail.getDoctors() : "");
dataCell3.setCellStyle(dataStyle);
Cell dataCell4 = dataRow.createCell(columnNum++);
dataCell4.setCellValue(mealDetail.getSkuName() != null ? mealDetail.getSkuName() : "");
dataCell4.setCellValue(mealDetail.getMenuName() != null ? mealDetail.getMenuName() : "");
dataCell4.setCellStyle(dataStyle);
Cell dataCell5 = dataRow.createCell(columnNum++);
dataCell5.setCellValue(mealDetail.getCount() != null ? mealDetail.getCount() : 0);
dataCell5.setCellValue(mealDetail.getSkuName() != null ? mealDetail.getSkuName() : "");
dataCell5.setCellStyle(dataStyle);
Cell dataCell6 = dataRow.createCell(columnNum++);
dataCell6.setCellValue(mealDetail.getAvoids() != null ? mealDetail.getAvoids() : "");
dataCell6.setCellValue(mealDetail.getCount() != null ? mealDetail.getCount() : 0);
dataCell6.setCellStyle(dataStyle);
Cell dataCell7 = dataRow.createCell(columnNum++);
dataCell7.setCellValue(mealDetail.getRemark() != null ? mealDetail.getRemark() : "");
dataCell7.setCellValue(mealDetail.getAvoids() != null ? mealDetail.getAvoids() : "");
dataCell7.setCellStyle(dataStyle);
Cell dataCell8 = dataRow.createCell(columnNum++);
dataCell8.setCellValue(mealDetail.getRemark() != null ? mealDetail.getRemark() : "");
dataCell8.setCellStyle(dataStyle);
}
}
// 自动调整列宽
for (int i = 0; i < 8; i++) {
for (int i = 0; i < 9; i++) {
sheet.autoSizeColumn(i);
}
......