DataLogSearchController.java 3.2 KB
package com.myproject.webapp.controller.user;

import com.google.common.base.Strings;
import com.myproject.bean.search.BaseSearchCriteria;
import com.myproject.bean.search.DataLogSearchCriteria;
import com.myproject.bean.search.PageList;
import com.myproject.dao.mongo.IDataLogDao;
import com.myproject.util.StorageConstants;
import com.myproject.webapp.controller.storage.BaseSearchController;
import org.displaytag.properties.SortOrderEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import java.util.regex.Pattern;

/**
 * Created by kangmor on 2015/12/1.
 */
@Controller
@RequestMapping("/dataLog")
public class DataLogSearchController extends BaseSearchController {

    public final static String SUCCESS_VIEW = "dataLog/dataLogSearch";
    @Autowired
    protected IDataLogDao dataLogDao;

    @RequestMapping("/search.html")
    public String onSubmit(@ModelAttribute("searchCriteria") DataLogSearchCriteria searchCriteria, HttpServletRequest request) {
        Query query = new Query();

        Criteria criteria = new Criteria();

        StorageConstants.TASK_SOURCE taskSource  = null;
        String fid = request.getParameter("fid");
        if(!Strings.isNullOrEmpty(fid)){
            taskSource = StorageConstants.TASK_SOURCE.FEEDER;
            criteria.and("sourceId").is(fid);
        }

        String pid = request.getParameter("pid");
        if(!Strings.isNullOrEmpty(pid)){
            taskSource = StorageConstants.TASK_SOURCE.FEEDER;
            criteria.and("subSourceId").is(pid);
        }

        String bid = request.getParameter("bid");

        if(!Strings.isNullOrEmpty(bid)){
            criteria.and("batchId").is(bid);
        }

        if(taskSource != null){
            criteria.and("sourceType").is(taskSource.name());
        }

        String barcode = searchCriteria.getBarcode();
        if(!Strings.isNullOrEmpty(barcode)){
            Pattern pattern = Pattern.compile(barcode, Pattern.CASE_INSENSITIVE);
            criteria.and("barcode").regex(pattern);
        }

        String partNumber = searchCriteria.getPartNumber();
        if (!Strings.isNullOrEmpty(partNumber)) {
            Pattern pattern = Pattern.compile(partNumber, Pattern.CASE_INSENSITIVE);
            criteria.and("partNumber").regex(pattern);
        }

        query.addCriteria(criteria);
        PageList pageList = searchCriteria.getPageList();
        if(pageList.getSortCriterion().equals("id")){
            pageList.setSortCriterion("updateDate");
            pageList.setSortDirection(SortOrderEnum.DESCENDING);
            searchCriteria.setPageList(pageList);
        }

        searchCriteria.setPageList(dataLogDao.findByQuery(query, searchCriteria.getPageList()));

        return SUCCESS_VIEW;
    }


    @Override
    protected BaseSearchCriteria getNewSearchCriteria() {
        return new DataLogSearchCriteria();
    }
}