BOS项目及知识点总结 _02

组合条件分页查询
<script type="text/javascript">
              $(function(){
                  $("#searchBtn").click(function(){
//                    组装数据
                      var formData = $("#searchForm").serializeJSON(); 
                      //封装表单,   
                      **$("#grid").datagrid('load',formData);**
                  })
              })
            </script>

后端代码,dao层接口需要继承 JpaSpecificationExecutor

@Action("courierAction_findByPage")
    public void findByPage(){
//      条件查询
//      model.getCourierNum();//工号
//      model.getStandard().getName();  收派标准的名称
//      model.getType(); //类型
//      model.getCompany()  //公司

//      Specification  相当于 DetachedCriteria
        DetachedCriteria dc = DetachedCriteria.forClass(Courier.class);
        if(StringUtils.isNotBlank(model.getCourierNum())){
            dc.add(Restrictions.like("courierNum", model.getCourierNum()));
        }

        Specification<Courier>  specification = new Specification<Courier>() {
            @Override
            public Predicate toPredicate(Root<Courier> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
//              root 查询对象的主体
//              cb  相当于 Restrictions
                //工号
                List<Predicate> list = new ArrayList<Predicate>();//把组装的条件对象先存放到这个集合中
                if(StringUtils.isNotBlank(model.getCourierNum())){
                    Predicate predicate1 = cb.like(root.get("courierNum").as(String.class), "%"+model.getCourierNum()+"%");
//                  return predicate;
                    list.add(predicate1);
                }
//              收派标准的名称
                if(model.getStandard()!=null&&StringUtils.isNotBlank(model.getStandard().getName())){
//                  需要关联收派标准对象 select * from Courier c inner join standard s 
                    Join<Object, Object> join = root.join("standard");   
                    Predicate predicate2 = cb.like(join.get("name").as(String.class), "%"+model.getStandard().getName()+"%");
//                  return predicate2;
                    list.add(predicate2);
                }
                //类型
                if(StringUtils.isNotBlank(model.getType())){
                    Predicate predicate3 = cb.like(root.get("type").as(String.class), "%"+model.getType()+"%");
//                  return predicate3;
                    list.add(predicate3);
                }
                //公司
                if(StringUtils.isNotBlank(model.getCompany())){
                    Predicate predicate4 = cb.like(root.get("company").as(String.class), "%"+model.getCompany()+"%");
//                  return predicate4;
                    list.add(predicate4);
                }
//              判断list的size是否为0,如果为0直接return null
                if(list.size()==0){
                    return null;
                }
//              list转成数组再转成Predicate对象
                Predicate[] predicates = new Predicate[list.size()];
                predicates = list.toArray(predicates);
                return cb.and(predicates);
            }
        };

        Pageable pageable = new  PageRequest(page-1, rows);
        Page page = service.findByPage(specification,pageable);
//      拼装datagrid分页时需要的数据格式
//      {"total":100,"rows":[{},{},{}]}
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("total", page.getTotalElements());
        map.put("rows", page.getContent());
        JsonConfig jsonConfig = new JsonConfig();
//      设置在转json时排除的字段
        jsonConfig.setExcludes(new String[]{"fixedAreas"});
        String string = JSONObject.fromObject(map, jsonConfig).toString();
        HttpServletResponse response = ServletActionContext.getResponse();
        response.setContentType("application/json;charset=utf-8");
        try {
            response.getWriter().write(string);
        } catch (IOException e) {
            e.printStackTrace();
        }       
    }
一键上传

jQuery OCUpload一键上传插件
前端代码

 $("#button-import").upload({
                      action:'../../areaAction_importXls.action',
                      //名字要和后端属性name名一样
                      name:'myFile'
                  })

action层代码

private File myFile;
    public File getMyFile() {
        return myFile;
    }

    public void setMyFile(File myFile) {
        this.myFile = myFile;
    }
@Action("areaAction_importXls")
    public void importXls(){
        System.out.println(myFile);
    }

service层

@Override
    public void importXls(FileInputStream fileInputStream) {
//      1、获取workbook对象
        try {
        HSSFWorkbook book = new HSSFWorkbook(fileInputStream);
        HSSFSheet sheet = book.getSheetAt(0);
        int lastRowNum = sheet.getLastRowNum();
        Area area  = null;
        List<Area> list = new ArrayList<Area>();
        for (int i = 1; i <= lastRowNum; i++) {
          HSSFRow row = sheet.getRow(i);
          String id = row.getCell(0).getStringCellValue();
          String province = row.getCell(1).getStringCellValue();
          String city = row.getCell(2).getStringCellValue();
          String district = row.getCell(3).getStringCellValue();
          String postcode = row.getCell(4).getStringCellValue();
          area = new Area();
          area.setId(id);
          area.setProvince(province);
          area.setCity(city);
          area.setDistrict(district);
          area.setPostcode(postcode);

          province = province.substring(0, province.length()-1);
          city = city.substring(0, city.length()-1);
          district = district.substring(0, district.length()-1);
          //          城市编码
          String citycode = PinYin4jUtils.hanziToPinyin(city,"");
          area.setCitycode(citycode);
            //          简码
          String[] headByString = PinYin4jUtils.getHeadByString(province+city+district);
          String shortcode = StringUtils.join(headByString);
          area.setShortcode(shortcode);
             list.add(area);
        }
        dao.save(list);
        } 
        catch (IOException e) {
            e.printStackTrace();
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值