用java spring代码分层设计在销售单中查询并统计一段时间内同一种类不同商品编号的商品的销售数量和销售额
时间: 2024-06-09 08:09:51 浏览: 186
java实现的可视化统计商品销售
首先,需要定义一个SalesOrder类,包括以下属性:
```java
public class SalesOrder {
private int id;
private int productId;
private String productName;
private int quantity;
private double price;
private Date orderDate;
}
```
然后,需要定义一个SalesOrderService接口,包括以下方法:
```java
public interface SalesOrderService {
List<SalesOrder> getSalesOrdersByDate(Date startDate, Date endDate);
Map<Integer, SalesStatistics> getSalesStatisticsByProduct(List<SalesOrder> salesOrders);
}
```
其中,getSalesOrdersByDate方法用于查询一段时间内的销售单,getSalesStatisticsByProduct方法用于统计同一种类不同商品编号的商品的销售数量和销售额。
接下来,需要定义一个SalesStatistics类,用于保存销售统计结果:
```java
public class SalesStatistics {
private int productId;
private String productName;
private int quantity;
private double revenue;
}
```
然后,需要实现SalesOrderService接口:
```java
@Service
public class SalesOrderServiceImpl implements SalesOrderService {
@Autowired
private SalesOrderMapper salesOrderMapper;
@Override
public List<SalesOrder> getSalesOrdersByDate(Date startDate, Date endDate) {
return salesOrderMapper.getSalesOrdersByDate(startDate, endDate);
}
@Override
public Map<Integer, SalesStatistics> getSalesStatisticsByProduct(List<SalesOrder> salesOrders) {
Map<Integer, SalesStatistics> statisticsMap = new HashMap<>();
for (SalesOrder salesOrder : salesOrders) {
int productId = salesOrder.getProductId();
SalesStatistics statistics = statisticsMap.get(productId);
if (statistics == null) {
statistics = new SalesStatistics();
statistics.setProductId(productId);
statistics.setProductName(salesOrder.getProductName());
statistics.setQuantity(salesOrder.getQuantity());
statistics.setRevenue(salesOrder.getQuantity() * salesOrder.getPrice());
statisticsMap.put(productId, statistics);
} else {
statistics.setQuantity(statistics.getQuantity() + salesOrder.getQuantity());
statistics.setRevenue(statistics.getRevenue() + salesOrder.getQuantity() * salesOrder.getPrice());
}
}
return statisticsMap;
}
}
```
其中,getSalesOrdersByDate方法从数据库中查询一段时间内的销售单,getSalesStatisticsByProduct方法统计每个商品的销售数量和销售额。
最后,需要定义一个SalesOrderMapper接口,用于访问数据库:
```java
public interface SalesOrderMapper {
List<SalesOrder> getSalesOrdersByDate(@Param("startDate") Date startDate, @Param("endDate") Date endDate);
}
```
在这个Mapper接口中,定义了一个getSalesOrdersByDate方法,用于查询一段时间内的销售单。
这样,我们就完成了一个基于Java Spring的代码分层设计,在销售单中查询并统计一段时间内同一种类不同商品编号的商品的销售数量和销售额。
阅读全文