年统计问题合并问题

dev
wuwenxiong 2022-01-10 17:05:27 +08:00
parent eafc44d2de
commit 6b0283ac36
1 changed files with 126 additions and 85 deletions

View File

@ -2976,6 +2976,38 @@ public class OrderStatService {
return PoiDynamicMarge.createExcel(headers, title, listMap, regions, titleMap);
}
private Record margeRecord(Record s1, Record s2, Integer type) {
Record s3 = new Record();
int order_num;
int s1_order_num = s1.getInt("order_num") == null ? 0 : s1.getInt("order_num");
int s2_order_num = s2.getInt("order_num") == null ? 0 : s2.getInt("order_num");
order_num = s1_order_num + s2_order_num;
BigDecimal total_price;
BigDecimal s1_total_price = s1.getBigDecimal("total_price") == null ? new BigDecimal(0) : s1.getBigDecimal("total_price");
BigDecimal s2_total_price = s2.getBigDecimal("total_price") == null ? new BigDecimal(0) : s2.getBigDecimal("total_price");
total_price = s1_total_price.add(s2_total_price);
BigDecimal weight;
BigDecimal s1_weight = s1.getBigDecimal("weight") == null ? new BigDecimal(0) : s1.getBigDecimal("weight");
BigDecimal s2_weight = s2.getBigDecimal("weight") == null ? new BigDecimal(0) : s2.getBigDecimal("weight");
weight = s1_weight.add(s2_weight);
s3.set("id", s1.getInt("id"));
if (type != null && type == 1) {
s3.set("name", s1.getStr("name"));
s3.set("product_id", s1.getInt("product_id"));
s3.set("product_name", s1.getStr("product_name"));
}
s3.set("order_num", order_num);
s3.set("total_price", total_price);
s3.set("weight", weight);
return s3;
}
/**
* [{
* name: '', key: '1'
@ -3078,58 +3110,61 @@ public class OrderStatService {
// 实售合并
if (shList != null && !shList.isEmpty()) {
List<Record> shList2 = new ArrayList<>();
Map<Integer, Record> shMap = new HashMap<>();
for (Record s : shList) {
int id = s.getInt("id");
int product_id = s.getInt("product_id");
if ((id == 1 || id == 5 || id == 6 || id == 7 || id == 8 || id == 9) && product_id == 1) {
shList2.add(s);
if ((id == 1 || id == 5 || id == 6 || id == 7 || id == 8 || id == 9 || id == 10) && product_id == 1) {
shMap.put(id, s);
} else {
shList1.add(s);
}
}
if (shList2.size() > 1) {
for (Record s1 : shList2) {
boolean flag = false;
for (Record s2 : shList2) {
int s1_id = s1.getInt("id");
int s2_id = s2.getInt("id");
if ((s1_id == 1 && s2_id == 7) || (s1_id == 5 && s2_id == 9) ||s1_id == 6 && s2_id == 8) {
flag = true;
Record s3 = new Record();
int order_num;
int s1_order_num = s1.getInt("order_num") == null ? 0 : s1.getInt("order_num");
int s2_order_num = s2.getInt("order_num") == null ? 0 : s2.getInt("order_num");
order_num = s1_order_num + s2_order_num;
BigDecimal total_price;
BigDecimal s1_total_price = s1.getBigDecimal("total_price") == null ? new BigDecimal(0) : s1.getBigDecimal("total_price");
BigDecimal s2_total_price = s2.getBigDecimal("total_price") == null ? new BigDecimal(0) : s2.getBigDecimal("total_price");
total_price = s1_total_price.add(s2_total_price);
BigDecimal weight = s1.getBigDecimal("weight").add(s2.getBigDecimal("weight"));
if (weight.compareTo(new BigDecimal(0)) == 0) {
weight = new BigDecimal(0);
}
s3.set("id", s1_id);
s3.set("name", s1.getStr("name"));
s3.set("product_id", s1.getInt("product_id"));
s3.set("product_name", s1.getStr("product_name"));
s3.set("order_num", order_num);
s3.set("total_price", total_price);
s3.set("weight", weight);
shList1.add(s3);
break;
}
}
if (!flag) {
shList1.add(s1);
}
if (shMap.size() > 1) {
Record s_1 = shMap.get(1);
Record s_5 = shMap.get(5);
Record s_6 = shMap.get(6);
Record s_7 = shMap.get(7);
Record s_8 = shMap.get(8);
Record s_9 = shMap.get(9);
Record s_10 = shMap.get(10);
if (s_1 != null && s_7 != null) {
Record s_1_7 = margeRecord(s_1, s_7, 1);
shList1.add(s_1_7);
shMap.remove(1);
shMap.remove(7);
}
} else if (shList2.size() == 1) {
shList1.addAll(shList2);
if (s_5 != null && s_9 != null) {
Record s_5_9 = margeRecord(s_5, s_9, 1);
shList1.add(s_5_9);
shMap.remove(5);
shMap.remove(9);
}
if (s_6 != null && s_8 != null && s_10 == null) {
Record s_6_8 = margeRecord(s_6, s_8, 1);
shList1.add(s_6_8);
shMap.remove(6);
shMap.remove(8);
}
if (s_6 != null && s_8 == null && s_10 != null) {
Record s_6_10 = margeRecord(s_6, s_10, 1);
shList1.add(s_6_10);
shMap.remove(6);
shMap.remove(10);
}
if (s_6 != null && s_8 != null && s_10 != null) {
Record s_8_10 = margeRecord(s_8, s_10, 1);
Record s_6_8_10 = margeRecord(s_6, s_8_10, 1);
shList1.add(s_6_8_10);
shMap.remove(6);
shMap.remove(8);
shMap.remove(10);
}
if (shMap.size() > 0) {
shList1.addAll(shMap.values());
}
} else if (shMap.size() == 1) {
shList1.addAll(shMap.values());
}
} else {
for (Record s : sups) {
@ -3146,54 +3181,60 @@ public class OrderStatService {
}
// 预售合并
if (yhList != null && !yhList.isEmpty()) {
List<Record> yhList2 = new ArrayList<>();
Map<Integer, Record> yhMap = new HashMap<>();
for (Record s : yhList) {
int id = s.getInt("id");
if (id == 1 || id == 5 || id == 6 || id == 7 || id == 8 || id == 9) {
yhList2.add(s);
if (id == 1 || id == 5 || id == 6 || id == 7 || id == 8 || id == 9 || id == 10) {
yhMap.put(id, s);
} else {
yhList1.add(s);
}
}
if (yhList2.size() > 1) {
for (Record s1 : yhList2) {
boolean flag = false;
for (Record s2 : yhList2) {
int s1_id = s1.getInt("id");
int s2_id = s2.getInt("id");
if ((s1_id == 1 && s2_id == 7) || (s1_id == 5 && s2_id == 9) || s1_id == 6 && s2_id == 8) {
flag = true;
Record s3 = new Record();
int order_num;
int s1_order_num = s1.getInt("order_num") == null ? 0 : s1.getInt("order_num");
int s2_order_num = s2.getInt("order_num") == null ? 0 : s2.getInt("order_num");
order_num = s1_order_num + s2_order_num;
BigDecimal total_price;
BigDecimal s1_total_price = s1.getBigDecimal("total_price") == null ? new BigDecimal(0) : s1.getBigDecimal("total_price");
BigDecimal s2_total_price = s2.getBigDecimal("total_price") == null ? new BigDecimal(0) : s2.getBigDecimal("total_price");
total_price = s1_total_price.add(s2_total_price);
BigDecimal weight = s1.getBigDecimal("weight").add(s2.getBigDecimal("weight"));
if (weight.compareTo(new BigDecimal(0)) == 0) {
weight = new BigDecimal(0);
}
s3.set("id", s1_id);
s3.set("order_num", order_num);
s3.set("total_price", total_price);
s3.set("weight", weight);
yhList1.add(s3);
break;
}
}
if (!flag) {
yhList1.add(s1);
}
if (yhMap.size() > 1) {
Record s_1 = yhMap.get(1);
Record s_5 = yhMap.get(5);
Record s_6 = yhMap.get(6);
Record s_7 = yhMap.get(7);
Record s_8 = yhMap.get(8);
Record s_9 = yhMap.get(9);
Record s_10 = yhMap.get(10);
if (s_1 != null && s_7 != null) {
Record s_1_7 = margeRecord(s_1, s_7, null);
yhList1.add(s_1_7);
yhMap.remove(1);
yhMap.remove(7);
}
} else if(yhList2.size() == 1) {
yhList1.addAll(yhList2);
if (s_5 != null && s_9 != null) {
Record s_5_9 = margeRecord(s_5, s_9, null);
yhList1.add(s_5_9);
yhMap.remove(5);
yhMap.remove(9);
}
if (s_6 != null && s_8 != null && s_10 == null) {
Record s_6_8 = margeRecord(s_6, s_8, null);
yhList1.add(s_6_8);
yhMap.remove(6);
yhMap.remove(8);
}
if (s_6 != null && s_8 == null && s_10 != null) {
Record s_6_10 = margeRecord(s_6, s_10, null);
yhList1.add(s_6_10);
yhMap.remove(6);
yhMap.remove(10);
}
if (s_6 != null && s_8 != null && s_10 != null) {
Record s_8_10 = margeRecord(s_8, s_10, null);
Record s_6_8_10 = margeRecord(s_6, s_8_10, null);
yhList1.add(s_6_8_10);
yhMap.remove(6);
yhMap.remove(8);
yhMap.remove(10);
}
if (yhMap.size() > 0) {
yhList1.addAll(yhMap.values());
}
} else if(yhMap.size() == 1) {
yhList1.addAll(yhMap.values());
}
} else {
for (Record s : sups) {