销售统计分析系统 - 基于SSM框架的销售数据统计分析平台
销售统计分析系统 - 基于SSM框架的销售数据统计分析平台
该系统使用SSM(Spring+SpringMVC+MyBatis)框架结合JSP页面,实现对销售数据的统计分析功能,能够帮助企业更好地了解其业务状况。
场景: 某公司希望对其销售数据进行统计分析,以便更好地了解其业务状况。数据涉及7个关联表,需要实现年统计、月统计、周统计和日统计功能,并能导出统计结果为Excel文件。
功能需求:
- 销售记录展示,带分页功能、模糊查询(产品、客户、区域、门店、日期)、最近的数据展示在第一条;
- 年度销售统计功能按钮;
- 月度销售统计功能按钮;
- 周度销售统计功能按钮;
- 日度销售统计功能按钮;
- 统计结果导出为Excel文件。
SSM+JSP代码内容:
以下是一个使用SSM(Spring+SpringMVC+MyBatis)框架结合JSP页面实现销售统计分析系统的简单示例代码:
- 实体类:
public class SalesRecord {
private int id;
private String product;
private String customer;
private String area;
private String store;
private Date date;
// 省略getter和setter方法
}
- DAO接口:
public interface SalesRecordDao {
List<SalesRecord> getSalesRecords(Map<String, Object> params);
int getSalesRecordsCount(Map<String, Object> params);
List<Map<String, Object>> getYearlySalesStatistics();
List<Map<String, Object>> getMonthlySalesStatistics();
List<Map<String, Object>> getWeeklySalesStatistics();
List<Map<String, Object>> getDailySalesStatistics();
}
- DAO实现类:
@Repository
public class SalesRecordDaoImpl implements SalesRecordDao {
@Autowired
private SqlSessionFactory sqlSessionFactory;
@Override
public List<SalesRecord> getSalesRecords(Map<String, Object> params) {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
SalesRecordMapper mapper = sqlSession.getMapper(SalesRecordMapper.class);
return mapper.getSalesRecords(params);
}
}
@Override
public int getSalesRecordsCount(Map<String, Object> params) {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
SalesRecordMapper mapper = sqlSession.getMapper(SalesRecordMapper.class);
return mapper.getSalesRecordsCount(params);
}
}
@Override
public List<Map<String, Object>> getYearlySalesStatistics() {
// 实现年度销售统计查询
return null;
}
@Override
public List<Map<String, Object>> getMonthlySalesStatistics() {
// 实现月度销售统计查询
return null;
}
@Override
public List<Map<String, Object>> getWeeklySalesStatistics() {
// 实现周度销售统计查询
return null;
}
@Override
public List<Map<String, Object>> getDailySalesStatistics() {
// 实现日度销售统计查询
return null;
}
}
- Mapper接口:
public interface SalesRecordMapper {
List<SalesRecord> getSalesRecords(Map<String, Object> params);
int getSalesRecordsCount(Map<String, Object> params);
}
- Mapper XML配置文件:
<mapper namespace="com.example.dao.SalesRecordMapper">
<select id="getSalesRecords" parameterType="java.util.Map" resultType="com.example.entity.SalesRecord">
<!-- 实现销售记录查询的SQL语句 -->
</select>
<select id="getSalesRecordsCount" parameterType="java.util.Map" resultType="int">
<!-- 实现销售记录数量查询的SQL语句 -->
</select>
</mapper>
- Service接口:
public interface SalesRecordService {
PageInfo<SalesRecord> getSalesRecords(int pageNum, int pageSize, Map<String, Object> params);
List<Map<String, Object>> getYearlySalesStatistics();
List<Map<String, Object>> getMonthlySalesStatistics();
List<Map<String, Object>> getWeeklySalesStatistics();
List<Map<String, Object>> getDailySalesStatistics();
void exportStatisticsToExcel(List<Map<String, Object>> statistics, String filePath);
}
- Service实现类:
@Service
public class SalesRecordServiceImpl implements SalesRecordService {
@Autowired
private SalesRecordDao salesRecordDao;
@Override
public PageInfo<SalesRecord> getSalesRecords(int pageNum, int pageSize, Map<String, Object> params) {
PageHelper.startPage(pageNum, pageSize);
List<SalesRecord> salesRecords = salesRecordDao.getSalesRecords(params);
PageInfo<SalesRecord> pageInfo = new PageInfo<>(salesRecords);
return pageInfo;
}
@Override
public List<Map<String, Object>> getYearlySalesStatistics() {
return salesRecordDao.getYearlySalesStatistics();
}
@Override
public List<Map<String, Object>> getMonthlySalesStatistics() {
return salesRecordDao.getMonthlySalesStatistics();
}
@Override
public List<Map<String, Object>> getWeeklySalesStatistics() {
return salesRecordDao.getWeeklySalesStatistics();
}
@Override
public List<Map<String, Object>> getDailySalesStatistics() {
return salesRecordDao.getDailySalesStatistics();
}
@Override
public void exportStatisticsToExcel(List<Map<String, Object>> statistics, String filePath) {
// 实现导出统计结果为Excel文件的逻辑
}
}
- Controller类:
@Controller
@RequestMapping("/sales")
public class SalesRecordController {
@Autowired
private SalesRecordService salesRecordService;
@RequestMapping("/list")
public String getSalesRecords(Model model, @RequestParam(defaultValue = "1") int pageNum,
@RequestParam(defaultValue = "10") int pageSize,
@RequestParam(required = false) String product,
@RequestParam(required = false) String customer,
@RequestParam(required = false) String area,
@RequestParam(required = false) String store,
@RequestParam(required = false) String date) {
Map<String, Object> params = new HashMap<>();
params.put("product", product);
params.put("customer", customer);
params.put("area", area);
params.put("store", store);
params.put("date", date);
PageInfo<SalesRecord> pageInfo = salesRecordService.getSalesRecords(pageNum, pageSize, params);
model.addAttribute("pageInfo", pageInfo);
return "sales_record_list";
}
@RequestMapping("/yearlyStatistics")
public String getYearlySalesStatistics(Model model) {
List<Map<String, Object>> statistics = salesRecordService.getYearlySalesStatistics();
model.addAttribute("statistics", statistics);
return "yearly_statistics";
}
@RequestMapping("/monthlyStatistics")
public String getMonthlySalesStatistics(Model model) {
List<Map<String, Object>> statistics = salesRecordService.getMonthlySalesStatistics();
model.addAttribute("statistics", statistics);
return "monthly_statistics";
}
@RequestMapping("/weeklyStatistics")
public String getWeeklySalesStatistics(Model model) {
List<Map<String, Object>> statistics = salesRecordService.getWeeklySalesStatistics();
model.addAttribute("statistics", statistics);
return "weekly_statistics";
}
@RequestMapping("/dailyStatistics")
public String getDailySalesStatistics(Model model) {
List<Map<String, Object>> statistics = salesRecordService.getDailySalesStatistics();
model.addAttribute("statistics", statistics);
return "daily_statistics";
}
@RequestMapping("/exportStatistics")
public void exportStatistics(HttpServletResponse response) {
List<Map<String, Object>> statistics = salesRecordService.getYearlySalesStatistics(); // 获取统计结果
String filePath = "path/to/excel/file.xlsx";
salesRecordService.exportStatisticsToExcel(statistics, filePath);
// 实现将文件下载到客户端的逻辑
}
}
- JSP页面:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>销售记录</title>
</head>
<body>
<h1>销售记录</h1>
<form action="${pageContext.request.contextPath}/sales/list">
产品:<input type="text" name="product" value="${param.product}">
客户:<input type="text" name="customer" value="${param.customer}">
区域:<input type="text" name="area" value="${param.area}">
门店:<input type="text" name="store" value="${param.store}">
日期:<input type="text" name="date" value="${param.date}">
<input type="submit" value="查询">
</form>
<table>
<tr>
<th>ID</th>
<th>产品</th>
<th>客户</th>
<th>区域</th>
<th>门店</th>
<th>日期</th>
</tr>
<c:forEach items="${pageInfo.list}" var="record">
<tr>
<td>${record.id}</td>
<td>${record.product}</td>
<td>${record.customer}</td>
<td>${record.area}</td>
<td>${record.store}</td>
<td>${record.date}</td>
</tr>
</c:forEach>
</table>
<div>
<c:if test="${pageInfo.hasPreviousPage}">
<a href="${pageContext.request.contextPath}/sales/list?pageNum=${pageInfo.prePage}&pageSize=${pageInfo.pageSize}">上一页</a>
</c:if>
<c:if test="${pageInfo.hasNextPage}">
<a href="${pageContext.request.contextPath}/sales/list?pageNum=${pageInfo.nextPage}&pageSize=${pageInfo.pageSize}">下一页</a>
</c:if>
</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>年度销售统计</title>
</head>
<body>
<h1>年度销售统计</h1>
<table>
<tr>
<th>年份</th>
<th>销售额</th>
</tr>
<c:forEach items="${statistics}" var="data">
<tr>
<td>${data.year}</td>
<td>${data.sales}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>月度销售统计</title>
</head>
<body>
<h1>月度销售统计</h1>
<table>
<tr>
<th>月份</th>
<th>销售额</th>
</tr>
<c:forEach items="${statistics}" var="data">
<tr>
<td>${data.month}</td>
<td>${data.sales}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>周度销售统计</title>
</head>
<body>
<h1>周度销售统计</h1>
<table>
<tr>
<th>周数</th>
<th>销售额</th>
</tr>
<c:forEach items="${statistics}" var="data">
<tr>
<td>${data.week}</td>
<td>${data.sales}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>日度销售统计</title>
</head>
<body>
<h1>日度销售统计</h1>
<table>
<tr>
<th>日期</th>
<th>销售额</th>
</tr>
<c:forEach items="${statistics}" var="data">
<tr>
<td>${data.date}</td>
<td>${data.sales}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
注意:以上代码只是一个简单示例,实际开发中还需要根据具体需求进行完善和改进。另外,导出Excel文件的逻辑需要根据具体的Excel处理库进行实现。
原文地址: http://www.cveoy.top/t/topic/hSXm 著作权归作者所有。请勿转载和采集!