1
This commit is contained in:
@@ -156,9 +156,9 @@ public class InstructionServiceImpl implements IInstructionService {
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
if (input.startsWith("录单") || input.startsWith("慢单")) {
|
||||
// 提取日期(yyyyMMdd 或 yyyyMMdd-yyyyMMdd 或 关键词:昨日/三日/七日)
|
||||
List<LocalDate> range = parseDateRange(input.replaceFirst("^录单|^慢单", "").trim());
|
||||
if (input.startsWith("录单")) {
|
||||
// 录单导出样式(tab)
|
||||
List<LocalDate> range = parseDateRange(input.replaceFirst("^录单", "").trim());
|
||||
if (range == null) {
|
||||
LocalDate today = effectiveToday().toLocalDate();
|
||||
range = Arrays.asList(today, today);
|
||||
@@ -168,12 +168,14 @@ public class InstructionServiceImpl implements IInstructionService {
|
||||
List<JDOrder> list = jdOrderService.selectJDOrderList(new JDOrder());
|
||||
if (list == null) list = Collections.emptyList();
|
||||
List<JDOrder> filtered = list.stream().filter(o -> o.getOrderTime()!=null && !o.getOrderTime().before(start) && !o.getOrderTime().after(end)).collect(Collectors.toList());
|
||||
if (filtered.isEmpty()) return "时间范围内没有订单";
|
||||
if (filtered.isEmpty()) return "今天没有订单。";
|
||||
// 按 remark 排序
|
||||
List<JDOrder> sorted = filtered.stream().sorted(Comparator.comparing(JDOrder::getRemark, Comparator.nullsFirst(String::compareTo))).collect(Collectors.toList());
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (JDOrder o : filtered) {
|
||||
for (JDOrder o : sorted) {
|
||||
sb.append(nvl(o.getRemark())).append('\t')
|
||||
.append(nvl(o.getOrderId())).append('\t')
|
||||
.append(fmt(o.getOrderTime())).append('\t')
|
||||
.append(fmt(o.getOrderTime()).split(" ")[0]).append('\t')
|
||||
.append(nvl(o.getModelNumber())).append('\t')
|
||||
.append(nvl(o.getAddress())).append('\t')
|
||||
.append(nvl(o.getLogisticsLink())).append('\t')
|
||||
@@ -185,6 +187,64 @@ public class InstructionServiceImpl implements IInstructionService {
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
if (input.startsWith("慢单")) {
|
||||
// 慢单:分销标记分组 -> 型号统计 + 详情
|
||||
List<LocalDate> range = parseDateRange(input.replaceFirst("^慢单", "").trim());
|
||||
if (range == null) {
|
||||
LocalDate today = effectiveToday().toLocalDate();
|
||||
range = Arrays.asList(today, today);
|
||||
}
|
||||
Date start = Date.from(range.get(0).atStartOfDay(ZoneId.systemDefault()).toInstant());
|
||||
Date end = Date.from(range.get(1).atTime(LocalTime.MAX).atZone(ZoneId.systemDefault()).toInstant());
|
||||
List<JDOrder> list = jdOrderService.selectJDOrderList(new JDOrder());
|
||||
if (list == null) list = Collections.emptyList();
|
||||
List<JDOrder> filtered = list.stream().filter(o -> o.getOrderTime()!=null && !o.getOrderTime().before(start) && !o.getOrderTime().after(end)).collect(Collectors.toList());
|
||||
if (filtered.isEmpty()) return "今天没有订单。";
|
||||
|
||||
Map<String, List<JDOrder>> byDM = filtered.stream()
|
||||
.filter(o -> o.getStatus() == null || !"拍错退款".equals(o.getStatus()))
|
||||
.collect(Collectors.groupingBy(JDOrder::getDistributionMark));
|
||||
|
||||
StringBuilder out = new StringBuilder();
|
||||
List<Map.Entry<String, List<JDOrder>>> dmEntries = new ArrayList<>(byDM.entrySet());
|
||||
dmEntries.sort(Comparator.comparing(en -> en.getKey() == null ? "" : en.getKey()));
|
||||
for (Map.Entry<String, List<JDOrder>> e : dmEntries) {
|
||||
String dm = e.getKey() != null ? e.getKey() : "未提供";
|
||||
List<JDOrder> orders = e.getValue();
|
||||
|
||||
Map<String, Long> byModel = orders.stream().collect(Collectors.groupingBy(JDOrder::getModelNumber, Collectors.counting()));
|
||||
int totalCount = 0;
|
||||
StringBuilder summary = new StringBuilder();
|
||||
List<Map.Entry<String, Long>> modelEntries = new ArrayList<>(byModel.entrySet());
|
||||
modelEntries.sort(Comparator.comparing(en -> en.getKey() == null ? "" : en.getKey()));
|
||||
for (Map.Entry<String, Long> em : modelEntries) {
|
||||
int c = em.getValue().intValue();
|
||||
totalCount += c;
|
||||
summary.append("型号:").append(em.getKey() != null ? em.getKey() : "未知")
|
||||
.append(" 数量:").append(c);
|
||||
}
|
||||
summary.append("总计:").append(totalCount).append("\n详情:");
|
||||
|
||||
List<JDOrder> sorted = orders.stream().sorted(Comparator.comparing(JDOrder::getRemark, Comparator.nullsFirst(String::compareTo))).collect(Collectors.toList());
|
||||
StringBuilder detail = new StringBuilder();
|
||||
int idx = 0;
|
||||
for (JDOrder o : sorted) {
|
||||
if ("拍错退款".equals(o.getStatus())) continue;
|
||||
idx++;
|
||||
detail.append("\n").append(idx).append(" ────────────\n")
|
||||
.append("单:").append(o.getRemark() != null ? o.getRemark() : "未提供")
|
||||
.append("\n备注:").append(o.getStatus() != null ? o.getStatus() : " ")
|
||||
.append("\n型号:").append(o.getModelNumber() != null ? o.getModelNumber() : "未提供")
|
||||
.append("\n地址:").append(o.getAddress() != null ? o.getAddress() : "未提供")
|
||||
.append("\n物流链接:\n").append(o.getLogisticsLink() != null ? o.getLogisticsLink() : "无");
|
||||
}
|
||||
|
||||
out.append("分销标记:").append(dm)
|
||||
.append(summary)
|
||||
.append(detail).append("\n");
|
||||
}
|
||||
return out.toString().trim();
|
||||
}
|
||||
if (input.startsWith("单")) {
|
||||
return handleDanWriteDb(input);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user