SSM框架整合/SpringMVC框架的简单使用7

【SSM】第四课 超市订单管理平台--订单管理功能_笔触狂放的博客-CSDN博客

 

接下来做订单管理 

↓ 先从普通员工入手,普通员工登录进来,只能看到自己谈下来的订单信息

创建操作订单表的控制器

↓定义方法,用于普通员工操作订单管理功能,查看自己的订单信息 

 ↓创建业务逻辑层接口

 ↓定义实现类实现一下

 

 ↓注入业务逻辑层对象

 ↓创建dao层

↓根据普通员工的id作为条件查询订单表,将该员工自己的订单信息查询出 ↓传入

 ↓粘贴billList.jsp页面(我们没有自定义实体类,可将实体类去掉)

↓调整控制器

 ↓ 测试运行效果页面

↓控制层,定义方法,用于根据订单的主键id去修改支付的状态

↓dao层,根据订单的主键id修改支付状态

↓业务逻辑层,接口

 ↓业务逻辑层,实现

 ↓修改支付状态完成,效果如下

 ↓下面做添加订单的功能

控制层,定义方法,用于跳转至添加订单的页面

添加addBill.jsp页面进来

↓注入别忘了,名称要一致 

↓小调一下addBill.jsp页面

 

 

↓效果图

↓下面是添加订单功能

↓控制层,定义方法,用于接收添加订单的数据信息

  //定义方法,用于接收添加订单的数据信息
    @RequestMapping(value = "/AddBill.do",
            params = {"productName","productDesc","productCount","productUnit","totalPrice","proName"})
    public String AddBill(String productName,String productDesc,double productCount,String productUnit,
                          double totalPrice,String proName,HttpSession session ){
        //定义Map集合,将数据封装,便于传输
        Map<String,Object> map=new HashMap<>();
        map.put("productName",productName);//商品名称
        map.put("productDesc",productDesc);//商品描述
        map.put("productCount",productCount);//商品数量
        map.put("productUnit",productUnit);//商品单位
        map.put("totalPrice",totalPrice);//总金额
        map.put("proName",proName);//供应商名称
        //缺少的数据需要在业务逻辑层中进行完成
        //缺少账单编号billCode:根据当前的年份要自动生成账单编号
        //缺少供应商的id: 用已知的供应商名称作为条件查询供应商表对应的供应商的id
        //获得当前登录的普通员工的id
        map.put("createdBy",((Map<String,Object>)session.getAttribute("userInfo")).get("id"));
        //当前添加订单的实时时间
        map.put("creationDate",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
        int i = bService.addBill(map);
        String url="";
        if (i>0)
            //添加订单成功,刷新列表页面
            url="redirect:GetBillsByUserId.do";
        return url;
    }
}

↓业务逻辑层接口

↓业务逻辑层实现


    @Override
    public int addBill(Map<String, Object> map) {
        //缺少账单编号billCode:根据当前的年份要自动生成账单编号
        map.put("billCode",getBillCode());
        return dao.add(map);
    }

    /**
     *功能:自动生成订单编号
     * 需求分析:
     *        1.先判断订单表中所有的订单是否存在今年的订单,
     *        如果没有,我们添加的订单的编号就应该为BILL今年的年份_001
     *        2.如果有,找出最近添加的最新的订单的订单编号,获得该订单编号的尾号,然后加一
     *        在组合起来就是我们添加订单的订单编号
     *  解题思路:
     *         1.用java代码获得今年的年份 2022
     *         2.将整个订单表按订单编号做降序排列(从大到小排序),取第一个订单编号
     *         因为降序排列之后,最新的订单就在第一个位置上
     *         3.将获得的最新的订单编号进行按_切割成BILL2022     002
     *         4.从第一部分字符串中截取子字符串
     */
    public String getBillCode(){
        String billCode="";
        //今年的年份
        String nowYear=new SimpleDateFormat("yyyy").format(new Date());
        //获得订单表中最新的订单编号  BILL2022_002
        String bCode = dao.getOrder();
        //将订单编号按_分割
        String[] s = bCode.split("_");
        //取第一部分进行截取子字符串获得年份
        String substring = s[0].substring(4);
        //判断最新的订单编号的年份是否等于今年的年份
        if (!substring.equals(nowYear)){
            //如果不相等,说明整个订单表中不存在今年的订单
            billCode="BILL"+nowYear+"_001";
        }else {
            //如果相等,说明订单表中存在今年的订单,那么将第二部分的字符串解析成int整数
            int number = Integer.parseInt(s[1]);//2
            //在该订单的尾号基础上加一
            int newNumber=++number;
            billCode="BILL"+nowYear+"_"+zreo(newNumber);
        }
        return billCode;
    }

    //对尾号进行判断,小于10 补两个零,小于100补一个零,小于1000不补零
    public String zreo(int newNumber){
        String s="";
        if (newNumber<10){
            s= "00"+newNumber;
        }else if (newNumber<100){
            s= "0"+newNumber;
        }else if (newNumber<1000){
            s= ""+newNumber;
        }
        return s;
    }
}

 ↓dao层

//将整个订单表做降序排列
    @Select("select billCode from smbms_bill order by billCode desc LIMIT 0,1")
    String getOrder();

    //添加订单
    @Insert("insert into smbms_bill(smbms_bill.billCode,smbms_bill.productName," +
            "smbms_bill.productDesc,smbms_bill.productCount,smbms_bill.productUnit," +
            "smbms_bill.totalPrice,smbms_bill.createdBy,smbms_bill.creationDate," +
            "smbms_bill.providerId) " +
            "values(#{billCode},#{productName},#{productDesc},#{productCount}," +
            "#{productUnit},#{totalPrice},#{createdBy},#{creationDate}," +
            "(select smbms_provider.id  " +
            "from smbms_provider  " +
            "where smbms_provider.proName=#{proName} LIMIT 0,1)" +
            ")")
    int add(Map<String,Object> map);
}

↓至此,普通员工添加供应商功能完成,效果页面图如下

↓ 控制层,定义方法,用于经理查看所有订单信息

  //定义方法,用于经理查看所有订单信息
    @RequestMapping("/GetBills.do")
    public ModelAndView GetBills(){
        List<Map<String,Object>>bills = bService.getBills();
        ModelAndView mav=new ModelAndView();
        mav.addObject("bills",bills);
        mav.setViewName("billList2");
        return mav;
    }

↓业务逻辑层,接口

↓业务逻辑层,实现类

↓dao层

 //经理查询所有订单信息,完成三表联查
    @Select("select smbms_bill.id,smbms_bill.billCode,smbms_bill.productName,smbms_bill.productDesc," +
            "smbms_bill.productCount,smbms_bill.productUnit,smbms_bill.totalPrice,smbms_bill.isPayment," +
            "smbms_user.userName,smbms_provider.proName,smbms_bill.creationDate,smbms_bill.modifyDate  " +
            "from smbms_bill,smbms_provider,smbms_user  " +
            "WHERE smbms_bill.createdBy=smbms_user.id and smbms_bill.providerId=smbms_provider.id")
    List<Map<String,Object>> getBills();
}

↓我们现在暂时不用分页,把分页注释一下

 

↓完成经理查看所有订单信息 效果如图

↓控制层,定义方法,接收请求以及携带的下标

 

 ↓现在经理点击修改页面可以出现修改页面了

↓控制层定义方法, 接收修改订单页面发送的数据信息

 //定义方法,接收修改订单页面发送的数据信息
    @RequestMapping(value = "/updateBill.do",
            params = {"id","productName","productDesc","productCount","productUnit","totalPrice","isPayment","proName"})
    public String updateBill(long id,String productName,String productDesc,
                             double productCount,String productUnit,double totalPrice,
                             int isPayment,String proName,HttpSession session){
        //创建Map集合,封装数据,便于传输
        Map<String,Object> map=new HashMap<>();
        map.put("id",id);//订单id
        map.put("productName",productName);//商品名称
        map.put("productDesc",productDesc);//商品描述
        map.put("productCount",productCount);//商品数量
        map.put("productUnit",productUnit);//商品单位
        map.put("totalPrice",totalPrice);//总金额
        map.put("isPayment",isPayment);//支付状态
        map.put("proName",proName);//供应商名称
        //获得登录的经理的id
        map.put("modifyBy",((Map<String,Object>)session.getAttribute("userInfo")).get("id"));
        //修改订单的实时时间
        map.put("modifyDate",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
        //需要把供应商名称作为条件查询供应商表对应的供应商id
        int i = bService.updateBill(map);
        String url="";
        if (i>0)
            //订单修改成功,刷新页面
            url="redirect:GetBills.do" ;
        return url;
    }

}


 ↓业务逻辑层接口

↓业务逻辑层实现

↓dao层


    //修改订单,先根据供应商名称查询供应商id,然后完成修改操作
    @Update("update smbms_bill set productName=#{productName},productDesc=#{productDesc}," +
            "productUnit=#{productUnit},productCount=#{productCount},totalPrice=#{totalPrice}," +
            "isPayment=#{isPayment},modifyBy=#{modifyBy},modifyDate=#{modifyDate}," +
            "providerId=(select id from smbms_provider where proName=#{proName}) " +
            "where id=#{id}")
    int updateBill(Map<String,Object> map);

↓经理修改页面功能完成,效果如下

↓下面完成修改功能

↓控制层,定义方法,用于接收删除的请求,并获得id

 ↓业务逻辑层接口

 ↓业务逻辑层实现

↓dao层

 ↓删除功能完成

↓下面开始做分页功能

导入分页架包并关联

↓配置mybatis分页插件PageHelper

 

↓控制层做分页

↓释放billList2之前注释的分页的代码

 

 ↓效果如下

 现在,我们利用ssm框架,做超市订单管理平台功能完成了,谢天谢地,谢老师谢同学,手动ღ( ´・ᴗ・` )比心~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值