销售统计分析系统 - 基于SSM框架的销售数据统计分析平台

该系统使用SSM(Spring+SpringMVC+MyBatis)框架结合JSP页面,实现对销售数据的统计分析功能,能够帮助企业更好地了解其业务状况。

场景: 某公司希望对其销售数据进行统计分析,以便更好地了解其业务状况。数据涉及7个关联表,需要实现年统计、月统计、周统计和日统计功能,并能导出统计结果为Excel文件。

功能需求:

  1. 销售记录展示,带分页功能、模糊查询(产品、客户、区域、门店、日期)、最近的数据展示在第一条;
  2. 年度销售统计功能按钮;
  3. 月度销售统计功能按钮;
  4. 周度销售统计功能按钮;
  5. 日度销售统计功能按钮;
  6. 统计结果导出为Excel文件。

SSM+JSP代码内容:

以下是一个使用SSM(Spring+SpringMVC+MyBatis)框架结合JSP页面实现销售统计分析系统的简单示例代码:

  1. 实体类:
public class SalesRecord {
    private int id;
    private String product;
    private String customer;
    private String area;
    private String store;
    private Date date;
    // 省略getter和setter方法
}
  1. 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();
}
  1. 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;
    }
}
  1. Mapper接口:
public interface SalesRecordMapper {
    List<SalesRecord> getSalesRecords(Map<String, Object> params);
    int getSalesRecordsCount(Map<String, Object> params);
}
  1. 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>
  1. 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);
}
  1. 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文件的逻辑
    }
}
  1. 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);
        // 实现将文件下载到客户端的逻辑
    }
}
  1. 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处理库进行实现。

销售统计分析系统 - 基于SSM框架的销售数据统计分析平台

原文地址: http://www.cveoy.top/t/topic/hSXm 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录