OutInfoSearchController.java 3.6 KB
package com.myproject.webapp.controller.qisda;

import com.myproject.bean.search.BaseSearchCriteria;
import com.myproject.bean.search.PageList;
import com.myproject.bean.update.qisda.OutItem;
import com.myproject.dao.mongo.ILiteOrderDao;
import com.myproject.dao.mongo.qisda.IOutInfoDao;
import com.myproject.dao.mongo.qisda.IOutItemDao;
import com.myproject.webapp.controller.storage.BaseSearchController;
import com.myproject.webapp.controller.webService.DataCache;
import org.apache.logging.log4j.util.Strings;
import org.displaytag.properties.SortOrderEnum;
import org.displaytag.tags.TableTagParameters;
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.util.StringUtils;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

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

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

    @Autowired
    protected IOutInfoDao outInfoDao;

    @Autowired
    protected IOutItemDao outItemDao;

    @Autowired
    private DataCache dataCache;

    @RequestMapping("/outInfoSearch*")
    public String onSubmit(@ModelAttribute("searchCriteria") BaseSearchCriteria searchCriteria, HttpServletRequest request) {

        boolean stopJob = dataCache.getSettings().isStopJob();
        request.setAttribute("stopJob",stopJob);

        Query query = new Query();
        Criteria criteria = new Criteria();

        addLikeParam(request,criteria,"so");

        String lineStr = request.getParameter("line");
        if(lineStr == null){
            lineStr = "NONE";
        }
        request.setAttribute("line",lineStr);
        if(Strings.isNotBlank(lineStr)){
            String line = lineStr;
            if(lineStr.equals("NONE")){
                line = null;
            }
            criteria.and("line").is(line);
        }

        String pn = request.getParameter("pn");
        if(Strings.isNotBlank(pn)){
            Pattern pattern = Pattern.compile(pn, Pattern.CASE_INSENSITIVE);
            Criteria c = Criteria.where("pn").regex(pattern);
            List<OutItem> itemList = outItemDao.findByQuery(new Query(c));
            List<String> hSerialList = new ArrayList<>();
            for (OutItem outItem : itemList) {
                hSerialList.add(outItem.gethSerial());
            }
            criteria.and("hSerial").in(hSerialList);
            request.setAttribute("pn",pn);
        }else{
            addLikeParam(request,criteria,"hSerial");
        }


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

        //导出
        if (request.getParameter(TableTagParameters.PARAMETER_EXPORTING) != null){
            pageList.setPageNumber(-1);
        }

        pageList = outInfoDao.findByQuery(query, pageList);
        searchCriteria.setPageList(pageList);

        return "qisda/outInfoSearch";
    }

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